diff --git a/.github/workflows/template-version-comment.yml b/.github/workflows/template-version-comment.yml deleted file mode 100644 index c5988af9..00000000 --- a/.github/workflows/template-version-comment.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: nf-core template version comment -# This workflow is triggered on PRs to check if the pipeline template version matches the latest nf-core version. -# It posts a comment to the PR, even if it comes from a fork. - -on: pull_request_target - -jobs: - template_version: - runs-on: ubuntu-latest - steps: - - name: Check out pipeline code - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - with: - ref: ${{ github.event.pull_request.head.sha }} - - - name: Read template version from .nf-core.yml - uses: nichmor/minimal-read-yaml@1f7205277e25e156e1f63815781db80a6d490b8f # v0.0.2 - id: read_yml - with: - config: ${{ github.workspace }}/.nf-core.yml - - - name: Install nf-core - run: | - python -m pip install --upgrade pip - pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} - - - name: Check nf-core outdated - id: nf_core_outdated - run: echo "OUTPUT=$(pip list --outdated | grep nf-core)" >> ${GITHUB_ENV} - - - name: Post nf-core template version comment - uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2 - if: | - contains(env.OUTPUT, 'nf-core') - with: - repo-token: ${{ secrets.NF_CORE_BOT_AUTH_TOKEN }} - allow-repeats: false - message: | - > [!WARNING] - > Newer version of the nf-core template is available. - > - > Your pipeline is using an old version of the nf-core template: ${{ steps.read_yml.outputs['nf_core_version'] }}. - > Please update your pipeline to the latest version. - > - > For more documentation on how to update your pipeline, please see the [nf-core documentation](https://github.com/nf-core/tools?tab=readme-ov-file#sync-a-pipeline-with-the-template) and [Synchronisation documentation](https://nf-co.re/docs/contributing/sync). - # diff --git a/.nf-core.yml b/.nf-core.yml index ea3d4a79..2b4bcc77 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -38,5 +38,5 @@ template: name: preprocessing org: nf-cmgg outdir: . - skip_features: [] + skip_features: ["fastqc"] version: 2.1.0dev diff --git a/README.md b/README.md index 7a23f1d2..5bbc40e9 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Steps inlcude: 1. Demultiplexing using [`BCLconvert`](https://emea.support.illumina.com/sequencing/sequencing_software/bcl-convert.html) 2. Read QC and trimming using [`fastp`](https://github.com/OpenGene/fastp) -3. Alignment using either [`bwa`](https://github.com/lh3/bwa), [`bwa-mem2`](https://github.com/bwa-mem2/bwa-mem2), [`bowtie2`](https://github.com/BenLangmead/bowtie2), [`dragmap`](https://github.com/Illumina/DRAGMAP) or [`snap`](https://github.com/amplab/snap) for DNA-seq and [`STAR`](https://github.com/alexdobin/STAR) for RNA-seq +3. Alignment using either [`bwa`](https://github.com/lh3/bwa), [`bwa-mem2`](https://github.com/bwa-mem2/bwa-mem2), [`bowtie2`](https://github.com/BenLangmead/bowtie2), [`dragmap`](https://github.com/Illumina/DRAGMAP), [`snap`](https://github.com/amplab/snap) or [`strobe`](https://github.com/ksahlin/strobealign) for DNA-seq and [`STAR`](https://github.com/alexdobin/STAR) for RNA-seq 4. Duplicate marking using [`bamsormadup`](https://gitlab.com/german.tischler/biobambam2) or [`samtools markdup`](http://www.htslib.org/doc/samtools-markdup.html) 5. Coverage analysis using [`mosdepth`](https://github.com/brentp/mosdepth) and [`samtools coverage`](http://www.htslib.org/doc/samtools-coverage.html) 6. Alignment QC using [`samtools flagstat`](http://www.htslib.org/doc/samtools-flagstat.html), [`samtools stats`](http://www.htslib.org/doc/samtools-stats.html), [`samtools idxstats`](http://www.htslib.org/doc/samtools-idxstats.html) and [`picard CollecHsMetrics`](https://broadinstitute.github.io/picard/command-line-overview.html#CollectHsMetrics), [`picard CollectWgsMetrics`](https://broadinstitute.github.io/picard/command-line-overview.html#CollectWgsMetrics), [`picard CollectMultipleMetrics`](https://broadinstitute.github.io/picard/command-line-overview.html#CollectMultipleMetrics) diff --git a/assets/schema_input.json b/assets/schema_input.json index e0ba1632..deb42ab7 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -37,7 +37,7 @@ "meta": ["aligner"], "type": "string", "description": "Aligner to use to align sample to the reference genome", - "enum": ["bowtie2", "bwamem", "bwamem2", "dragmap", "snap", "star"] + "enum": ["bowtie2", "bwamem", "bwamem2", "dragmap", "snap", "strobe", "star"] }, "tag": { "meta": ["tag"], diff --git a/assets/schema_sampleinfo.json b/assets/schema_sampleinfo.json index b9c8aaf3..c5443971 100644 --- a/assets/schema_sampleinfo.json +++ b/assets/schema_sampleinfo.json @@ -85,7 +85,7 @@ "meta": ["aligner"], "type": "string", "description": "Aligner to use to align sample to the reference genome", - "enum": ["bowtie2", "bwamem", "bwamem2", "dragmap", "snap", "star"] + "enum": ["bowtie2", "bwamem", "bwamem2", "dragmap", "snap", "strobe", "star"] } } }, diff --git a/conf/modules.config b/conf/modules.config index 8a8a5c50..1cedbcfa 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -21,7 +21,7 @@ process { [ meta.lane ? "--bcl-only-lane ${meta.lane}" : "", "--force", - "--strict", + "--strict-mode true", ].join(" ").trim() } } @@ -49,7 +49,7 @@ process { ext.args = { [ meta.readgroup ? "--rg-line \"@RG\t" + meta.readgroup.findResults { rg -> rg.value?.trim() ? "${rg.key}:${rg.value}" : null }.join("\t") + "\"" : "", - "--output-fmt cram", + "--output-fmt cram,version=3.0", "--output-fmt-option archive", ].join(" ").trim() } @@ -113,7 +113,7 @@ process { // -xf 2 : expansion factor for reading compressed data //// SNAP - withName: SNAP_ALIGN { + withName: SNAPALIGNER_ALIGN { ext.args = { [ "-b-", @@ -154,7 +154,7 @@ process { "-d 2500", params.umi_aware ? "--barcode-name" : "", "--write-index", - "--output-fmt cram", + "--output-fmt cram,version=3.0", "--output-fmt-option archive", ].join(" ").trim() } @@ -166,7 +166,7 @@ process { ext.args = { [ "--write-index", - "--output-fmt cram", + "--output-fmt cram,version=3.0", "--output-fmt-option archive", ].join(" ").trim() } @@ -191,7 +191,7 @@ process { ext.args = { [ "-C", - "--output-fmt cram", + "--output-fmt cram,version=3.0", "--output-fmt-option archive", ].join(" ").trim() } diff --git a/conf/profiles/s3_ugent.config b/conf/profiles/s3_ugent.config index d29f80a0..7e2fe67a 100644 --- a/conf/profiles/s3_ugent.config +++ b/conf/profiles/s3_ugent.config @@ -1,4 +1,5 @@ aws { + profile = "ugent" client { endpoint = "https://s3.ugent.be" protocol = "https" diff --git a/main.nf b/main.nf index ee3fa058..640ad840 100644 --- a/main.nf +++ b/main.nf @@ -66,8 +66,8 @@ workflow { publish: demultiplex_interop = PREPROCESSING.out.demultiplex_interop.transpose(by:1) - demultiplex_reports = PREPROCESSING.out.demultiplex_reports.map { meta, reports -> [ meta, files("${reports.toUri()}/*") ] }.transpose(by:1) - demultiplex_logs = PREPROCESSING.out.demultiplex_logs.map { meta, logs -> [ meta, files("${logs.toUri()}/*") ] }.transpose(by:1) + demultiplex_reports = PREPROCESSING.out.demultiplex_reports.transpose(by:1) + demultiplex_logs = PREPROCESSING.out.demultiplex_logs.transpose(by:1) fastp_json = PREPROCESSING.out.fastp_json fastp_html = PREPROCESSING.out.fastp_html ucrams = PREPROCESSING.out.ucrams @@ -107,11 +107,11 @@ output { bin >> "Interop/${bin.name}" } } demultiplex_reports { path { meta, report -> - def out_path = meta.lane ? "Reports/LOO${meta.lane}/${report.name}" as String : "Reports/${report.name}" + def out_path = meta.lane ? "Reports/L00${meta.lane}/${report.name}" as String : "Reports/${report.name}" report >> out_path } } demultiplex_logs { path { meta, log -> - def out_path = meta.lane ? "Logs/LOO${meta.lane}/${log.name}" as String : "Logs/${log.name}" + def out_path = meta.lane ? "Logs/L00${meta.lane}/${log.name}" as String : "Logs/${log.name}" log >> out_path } } fastp_json { path { meta, json -> diff --git a/modules.json b/modules.json index 99e26ff2..f1b67967 100644 --- a/modules.json +++ b/modules.json @@ -7,143 +7,138 @@ "nf-core": { "bcl2fastq": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["bcl_demultiplex"] }, "bclconvert": { "branch": "master", - "git_sha": "27cceb2eb8aa959d4a8819caab886386a59a3789", - "installed_by": ["bcl_demultiplex", "modules"] + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", + "installed_by": ["bcl_demultiplex", "modules"], + "patch": "modules/nf-core/bclconvert/bclconvert.diff" }, "biobambam/bamsormadup": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"], "patch": "modules/nf-core/biobambam/bamsormadup/biobambam-bamsormadup.diff" }, "bowtie2/align": { "branch": "master", - "git_sha": "8864afe586537bf562eac7b83349c26207f3cb4d", + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", "installed_by": ["fastq_align_dna", "modules"], "patch": "modules/nf-core/bowtie2/align/bowtie2-align.diff" }, "bwa/mem": { "branch": "master", - "git_sha": "a29f18660f5e3748d44d6f716241e70c942c065d", + "git_sha": "1c46359c837ef768b004519f535c30378e8289fc", "installed_by": ["fastq_align_dna"], "patch": "modules/nf-core/bwa/mem/bwa-mem.diff" }, "bwamem2/mem": { "branch": "master", - "git_sha": "a29f18660f5e3748d44d6f716241e70c942c065d", + "git_sha": "d86336f3e7ae0d5f76c67b0859409769cfeb2af2", "installed_by": ["fastq_align_dna"], "patch": "modules/nf-core/bwamem2/mem/bwamem2-mem.diff" }, "dragmap/align": { "branch": "master", - "git_sha": "8864afe586537bf562eac7b83349c26207f3cb4d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["fastq_align_dna"], "patch": "modules/nf-core/dragmap/align/dragmap-align.diff" }, "fastp": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"], - "patch": "modules/nf-core/fastp/fastp.diff" - }, - "fastqc": { - "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "d9ec4ef289ad39b8a662a7a12be50409b11df84b", "installed_by": ["modules"] }, "md5sum": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", "installed_by": ["modules"] }, "mosdepth": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", "installed_by": ["modules"], "patch": "modules/nf-core/mosdepth/mosdepth.diff" }, "multiqc": { "branch": "master", - "git_sha": "471cf3ca1617271b9b6fea09ea2ebdee78b874de", + "git_sha": "0b2435805036a16dcdcf21533632d956b8273ac4", "installed_by": ["modules"] }, "picard/collecthsmetrics": { "branch": "master", - "git_sha": "49f4e50534fe4b64101e62ea41d5dc43b1324358", + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", "installed_by": ["modules"], "patch": "modules/nf-core/picard/collecthsmetrics/picard-collecthsmetrics.diff" }, "picard/collectmultiplemetrics": { "branch": "master", - "git_sha": "49f4e50534fe4b64101e62ea41d5dc43b1324358", + "git_sha": "df124e87c74d8b40285199f8cc20151f5aa57255", "installed_by": ["modules"], "patch": "modules/nf-core/picard/collectmultiplemetrics/picard-collectmultiplemetrics.diff" }, "picard/collectwgsmetrics": { "branch": "master", - "git_sha": "49f4e50534fe4b64101e62ea41d5dc43b1324358", + "git_sha": "df124e87c74d8b40285199f8cc20151f5aa57255", "installed_by": ["modules"], "patch": "modules/nf-core/picard/collectwgsmetrics/picard-collectwgsmetrics.diff" }, "samtools/cat": { "branch": "master", - "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", + "git_sha": "c8be52dba1166c678e74cda9c3a3c221635c8bb1", "installed_by": ["modules"], "patch": "modules/nf-core/samtools/cat/samtools-cat.diff" }, "samtools/convert": { "branch": "master", - "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", "installed_by": ["modules"], "patch": "modules/nf-core/samtools/convert/samtools-convert.diff" }, "samtools/coverage": { "branch": "master", - "git_sha": "2d20463181b1c38981a02e90d3084b5f9fa8d540", + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", "installed_by": ["modules"], "patch": "modules/nf-core/samtools/coverage/samtools-coverage.diff" }, "samtools/flagstat": { "branch": "master", - "git_sha": "2d20463181b1c38981a02e90d3084b5f9fa8d540", + "git_sha": "e334e12a1e985adc5ffc3fc78a68be1de711de45", "installed_by": ["modules"] }, "samtools/idxstats": { "branch": "master", - "git_sha": "2d20463181b1c38981a02e90d3084b5f9fa8d540", + "git_sha": "c8be52dba1166c678e74cda9c3a3c221635c8bb1", "installed_by": ["modules"] }, "samtools/import": { "branch": "master", - "git_sha": "2d20463181b1c38981a02e90d3084b5f9fa8d540", + "git_sha": "c8be52dba1166c678e74cda9c3a3c221635c8bb1", "installed_by": ["modules"] }, "samtools/sormadup": { "branch": "master", - "git_sha": "38f3b0200093498b70ac2d63a83eac5642e3c873", + "git_sha": "c8be52dba1166c678e74cda9c3a3c221635c8bb1", "installed_by": ["modules"], "patch": "modules/nf-core/samtools/sormadup/samtools-sormadup.diff" }, "samtools/sort": { "branch": "master", - "git_sha": "b7800db9b069ed505db3f9d91b8c72faea9be17b", + "git_sha": "0b2435805036a16dcdcf21533632d956b8273ac4", "installed_by": ["modules"], "patch": "modules/nf-core/samtools/sort/samtools-sort.diff" }, "samtools/stats": { "branch": "master", - "git_sha": "2d20463181b1c38981a02e90d3084b5f9fa8d540", + "git_sha": "0b2435805036a16dcdcf21533632d956b8273ac4", "installed_by": ["modules"], "patch": "modules/nf-core/samtools/stats/samtools-stats.diff" }, "snapaligner/align": { "branch": "master", - "git_sha": "77bdd7e1047d2abe21ae8d89acc295ea553ecbae", + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", "installed_by": ["fastq_align_dna", "modules"], "patch": "modules/nf-core/snapaligner/align/snapaligner-align.diff" }, @@ -152,6 +147,12 @@ "git_sha": "ce9e10540a1555145ddd1ddd8b15f7443cbe1449", "installed_by": ["modules"], "patch": "modules/nf-core/star/align/star-align.diff" + }, + "strobealign": { + "branch": "master", + "git_sha": "d5cc72b63c4e1565cb66e83f0577b04c0bb54d5c", + "installed_by": ["fastq_align_dna", "modules"], + "patch": "modules/nf-core/strobealign/strobealign.diff" } } }, @@ -159,14 +160,13 @@ "nf-core": { "bcl_demultiplex": { "branch": "master", - "git_sha": "1a0770da1cf5c5cd388bf888ba8798bc4d1fba56", + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", "installed_by": ["subworkflows"] }, "fastq_align_dna": { "branch": "master", - "git_sha": "a29f18660f5e3748d44d6f716241e70c942c065d", - "installed_by": ["subworkflows"], - "patch": "subworkflows/nf-core/fastq_align_dna/fastq_align_dna.diff" + "git_sha": "070ddae7fb59384d3d85bf69eb9a1d71ab33ada9", + "installed_by": ["subworkflows"] }, "utils_nextflow_pipeline": { "branch": "master", @@ -175,7 +175,7 @@ }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "271e7fc14eb1320364416d996fb077421f3faed2", + "git_sha": "df4d1c8cdee98a1bbbed8fc51e82296568e0f9c1", "installed_by": ["subworkflows"] }, "utils_nfschema_plugin": { diff --git a/modules/nf-core/bcl2fastq/meta.yml b/modules/nf-core/bcl2fastq/meta.yml index a30a33ef..af17d591 100644 --- a/modules/nf-core/bcl2fastq/meta.yml +++ b/modules/nf-core/bcl2fastq/meta.yml @@ -21,80 +21,89 @@ input: type: file description: "Input samplesheet" pattern: "*.{csv}" + ontologies: + - edam: http://edamontology.org/format_3752 # CSV - run_dir: type: file description: | Input run directory containing RunInfo.xml and BCL data Could be a directory or a tar of the directory + ontologies: [] output: - - fastq: - - meta: - type: file - description: Demultiplexed sample FASTQ files - pattern: "**_S*_L00?_R?_00?.fastq.gz" + fastq: + - - meta: + type: map + description: Groovy Map containing sample information - output/**_S[1-9]*_R?_00?.fastq.gz: type: file description: Demultiplexed sample FASTQ files pattern: "**_S*_L00?_R?_00?.fastq.gz" - - fastq_idx: - - meta: - type: file - description: Optional demultiplexed index FASTQ files - pattern: "**_S*_L00?_I?_00?.fastq.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + fastq_idx: + - - meta: + type: map + description: Groovy Map containing sample information - output/**_S[1-9]*_I?_00?.fastq.gz: type: file description: Optional demultiplexed index FASTQ files pattern: "**_S*_L00?_I?_00?.fastq.gz" - - undetermined: - - meta: - type: file - description: Optional undetermined sample FASTQ files - pattern: "Undetermined_S0_L00?_R?_00?.fastq.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + undetermined: + - - meta: + type: map + description: Groovy Map containing sample information - output/**Undetermined_S0*_R?_00?.fastq.gz: type: file description: Optional undetermined sample FASTQ files pattern: "Undetermined_S0_L00?_R?_00?.fastq.gz" - - undetermined_idx: - - meta: - type: file - description: Optional undetermined index FASTQ files - pattern: "Undetermined_S0_L00?_I?_00?.fastq.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + undetermined_idx: + - - meta: + type: map + description: Groovy Map containing sample information - output/**Undetermined_S0*_I?_00?.fastq.gz: type: file description: Optional undetermined index FASTQ files pattern: "Undetermined_S0_L00?_I?_00?.fastq.gz" - - reports: - - meta: - type: file - description: Demultiplexing Reports - pattern: "Reports/*" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + reports: + - - meta: + type: map + description: Groovy Map containing sample information - output/Reports: type: file description: Demultiplexing Reports pattern: "Reports/*" - - stats: - - meta: - type: file - description: Statistics files - pattern: "Stats/*" + ontologies: [] + stats: + - - meta: + type: map + description: Groovy Map containing sample information - output/Stats: type: file description: Statistics files pattern: "Stats/*" - - interop: - - meta: - type: file - description: Interop files - pattern: "*.{bin}" + ontologies: [] + interop: + - - meta: + type: map + description: Groovy Map containing sample information - InterOp/*.bin: type: file description: Interop files pattern: "*.{bin}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@matthdsm" maintainers: diff --git a/modules/nf-core/bclconvert/Dockerfile b/modules/nf-core/bclconvert/Dockerfile index 441ebc2f..eda84168 100644 --- a/modules/nf-core/bclconvert/Dockerfile +++ b/modules/nf-core/bclconvert/Dockerfile @@ -3,7 +3,7 @@ # Push to nfcore/bclconvert: FROM debian:bullseye-slim -ARG BCLCONVERT_VERSION="4.3.13" +ARG BCLCONVERT_VERSION="4.4.6" LABEL org.opencontainers.image.description="Docker image containing bcl-convert" LABEL org.opencontainers.image.version="$BCLCONVERT_VERSION" LABEL org.opencontainers.image.documentation="https://github.com/nf-core/modules/blob/master/modules/nf-core/bclconvert/README.md" @@ -24,7 +24,7 @@ RUN apt-get update \ # Link hostname cmd to fix hardcoded path RUN ln -s /bin/hostname /usr/bin/hostname # Install bcl-convert -ADD bcl-convert-4.3.13-2.el7.x86_64.rpm bcl-convert.rpm +COPY bcl-convert-4.4.6-2.el8.x86_64.rpm bcl-convert.rpm SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN rpm2cpio bcl-convert.rpm | cpio -idmv \ && rm bcl-convert.rpm diff --git a/modules/nf-core/bclconvert/bclconvert.diff b/modules/nf-core/bclconvert/bclconvert.diff new file mode 100644 index 00000000..dc0dee2d --- /dev/null +++ b/modules/nf-core/bclconvert/bclconvert.diff @@ -0,0 +1,25 @@ +Changes in component 'nf-core/bclconvert' +'modules/nf-core/bclconvert/LICENSE' is unchanged +'modules/nf-core/bclconvert/Dockerfile' is unchanged +'modules/nf-core/bclconvert/README.md' is unchanged +'modules/nf-core/bclconvert/.gitignore' is unchanged +'modules/nf-core/bclconvert/meta.yml' is unchanged +Changes in 'bclconvert/main.nf': +--- modules/nf-core/bclconvert/main.nf ++++ modules/nf-core/bclconvert/main.nf +@@ -12,8 +12,8 @@ + tuple val(meta), path("output/**_S[1-9]*_I?_00?.fastq.gz") , emit: fastq_idx , optional:true + tuple val(meta), path("output/**Undetermined_S0*_R?_00?.fastq.gz"), emit: undetermined , optional:true + tuple val(meta), path("output/**Undetermined_S0*_I?_00?.fastq.gz"), emit: undetermined_idx, optional:true +- tuple val(meta), path("output/Reports") , emit: reports +- tuple val(meta), path("output/Logs") , emit: logs ++ tuple val(meta), path("output/Reports/*") , emit: reports ++ tuple val(meta), path("output/Logs/*") , emit: logs + tuple val(meta), path("output/InterOp/*.bin") , emit: interop , optional:true + path("versions.yml") , emit: versions + + +'modules/nf-core/bclconvert/tests/main.nf.test.snap' is unchanged +'modules/nf-core/bclconvert/tests/nextflow.config' is unchanged +'modules/nf-core/bclconvert/tests/main.nf.test' is unchanged +************************************************************ diff --git a/modules/nf-core/bclconvert/main.nf b/modules/nf-core/bclconvert/main.nf index a9bc0197..b61f2240 100644 --- a/modules/nf-core/bclconvert/main.nf +++ b/modules/nf-core/bclconvert/main.nf @@ -2,20 +2,20 @@ process BCLCONVERT { tag {"$meta.lane" ? "$meta.id"+"."+"$meta.lane" : "$meta.id" } label 'process_high' - container "nf-core/bclconvert:4.3.13" + container "nf-core/bclconvert:4.4.6" input: tuple val(meta), path(samplesheet), path(run_dir) output: - tuple val(meta), path("output/**_S[1-9]*_R?_00?.fastq.gz") , emit: fastq - tuple val(meta), path("output/**_S[1-9]*_I?_00?.fastq.gz") , optional:true, emit: fastq_idx - tuple val(meta), path("output/**Undetermined_S0*_R?_00?.fastq.gz") , optional:true, emit: undetermined - tuple val(meta), path("output/**Undetermined_S0*_I?_00?.fastq.gz") , optional:true, emit: undetermined_idx - tuple val(meta), path("output/Reports") , emit: reports - tuple val(meta), path("output/Logs") , emit: logs - tuple val(meta), path("**/InterOp/*.bin", includeInputs: true), emit: interop - path("versions.yml") , emit: versions + tuple val(meta), path("output/**_S[1-9]*_R?_00?.fastq.gz") , emit: fastq + tuple val(meta), path("output/**_S[1-9]*_I?_00?.fastq.gz") , emit: fastq_idx , optional:true + tuple val(meta), path("output/**Undetermined_S0*_R?_00?.fastq.gz"), emit: undetermined , optional:true + tuple val(meta), path("output/**Undetermined_S0*_I?_00?.fastq.gz"), emit: undetermined_idx, optional:true + tuple val(meta), path("output/Reports/*") , emit: reports + tuple val(meta), path("output/Logs/*") , emit: logs + tuple val(meta), path("output/InterOp/*.bin") , emit: interop , optional:true + path("versions.yml") , emit: versions when: task.ext.when == null || task.ext.when @@ -62,9 +62,50 @@ process BCLCONVERT { --bcl-input-directory ${input_dir} \\ --sample-sheet ${samplesheet} + # copy the InterOp folder contents to ensure it gets picked up when using fusion + mkdir -p output/InterOp/ + cp -n **/InterOp/*.bin output/InterOp/ + cat <<-END_VERSIONS > versions.yml "${task.process}": bclconvert: \$(bcl-convert -V 2>&1 | head -n 1 | sed 's/^.*Version //') END_VERSIONS """ + + stub: + """ + mkdir -p output/Reports + mkdir -p output/Logs + echo "" | gzip > output/Sample1_S1_L001_R1_001.fastq.gz + echo "" | gzip > output/Undetermined_S0_L001_R1_001.fastq.gz + touch output/Reports/Adapter_Cycle_Metrics.csv + touch output/Reports/Adapter_Metrics.csv + touch output/Reports/Demultiplex_Stats.csv + touch output/Reports/Demultiplex_Tile_Stats.csv + touch output/Reports/fastq_list.csv + touch output/Reports/Index_Hopping_Counts.csv + touch output/Reports/IndexMetricsOut.bin + touch output/Reports/Quality_Metrics.csv + touch output/Reports/Quality_Tile_Metrics.csv + touch output/Reports/RunInfo.xml + touch output/Reports/SampleSheet.csv + touch output/Reports/Top_Unknown_Barcodes.csv + touch output/Logs/Errors.log + touch output/Logs/FastqComplete.log + touch output/Logs/Info.log + touch output/Logs/Warnings.log + mkdir -p output/InterOp + touch output/InterOp/ControlMetricsOut.bin + touch output/InterOp/CorrectedIntMetricsOut.bin + touch output/InterOp/ErrorMetricsOut.bin + touch output/InterOp/ExtractionMetricsOut.bin + touch output/InterOp/IndexMetricsOut.bin + touch output/InterOp/QMetricsOut.bin + touch output/InterOp/TileMetricsOut.bin + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bclconvert: \$(bcl-convert -V 2>&1 | head -n 1 | sed 's/^.*Version //') + END_VERSIONS + """ + } diff --git a/modules/nf-core/bclconvert/meta.yml b/modules/nf-core/bclconvert/meta.yml index f40c8768..e1cd3e01 100644 --- a/modules/nf-core/bclconvert/meta.yml +++ b/modules/nf-core/bclconvert/meta.yml @@ -30,66 +30,50 @@ input: Could be a directory or a tar of the directory ontologies: [] output: - - fastq: - - meta: - type: file - description: Demultiplexed sample FASTQ files - pattern: "**_S*_L00?_R?_00?.fastq.gz" - ontologies: - - edam: http://edamontology.org/format_3989 # GZIP format + fastq: + - - meta: + type: map + description: Groovy Map containing sample information - output/**_S[1-9]*_R?_00?.fastq.gz: type: file description: Demultiplexed sample FASTQ files pattern: "**_S*_L00?_R?_00?.fastq.gz" ontologies: - edam: http://edamontology.org/format_3989 # GZIP format - - fastq_idx: - - meta: - type: file - description: Optional demultiplexed index FASTQ files - pattern: "**_S*_L00?_I?_00?.fastq.gz" - ontologies: - - edam: http://edamontology.org/format_3989 # GZIP format + fastq_idx: + - - meta: + type: map + description: Groovy Map containing sample information - output/**_S[1-9]*_I?_00?.fastq.gz: type: file description: Optional demultiplexed index FASTQ files pattern: "**_S*_L00?_I?_00?.fastq.gz" ontologies: - edam: http://edamontology.org/format_3989 # GZIP format - - undetermined: - - meta: - type: file - description: Optional undetermined sample FASTQ files - pattern: "Undetermined_S0_L00?_R?_00?.fastq.gz" - ontologies: - - edam: http://edamontology.org/format_3989 # GZIP format + undetermined: + - - meta: + type: map + description: Groovy Map containing sample information - output/**Undetermined_S0*_R?_00?.fastq.gz: type: file description: Optional undetermined sample FASTQ files pattern: "Undetermined_S0_L00?_R?_00?.fastq.gz" ontologies: - edam: http://edamontology.org/format_3989 # GZIP format - - undetermined_idx: - - meta: - type: file - description: Optional undetermined index FASTQ files - pattern: "Undetermined_S0_L00?_I?_00?.fastq.gz" - ontologies: - - edam: http://edamontology.org/format_3989 # GZIP format + undetermined_idx: + - - meta: + type: map + description: Groovy Map containing sample information - output/**Undetermined_S0*_I?_00?.fastq.gz: type: file description: Optional undetermined index FASTQ files pattern: "Undetermined_S0_L00?_I?_00?.fastq.gz" ontologies: - edam: http://edamontology.org/format_3989 # GZIP format - - reports: - - meta: - type: file - description: Demultiplexing Reports - pattern: "Reports/*.{csv,xml}" - ontologies: - - edam: http://edamontology.org/format_3752 # CSV - - edam: http://edamontology.org/format_2332 # XML + reports: + - - meta: + type: map + description: Groovy Map containing sample information - output/Reports: type: file description: Demultiplexing Reports @@ -97,35 +81,31 @@ output: ontologies: - edam: http://edamontology.org/format_3752 # CSV - edam: http://edamontology.org/format_2332 # XML - - logs: - - meta: - type: file - description: Log files - pattern: "Logs/*.{log,txt}" - ontologies: [] + logs: + - - meta: + type: map + description: Groovy Map containing sample information - output/Logs: type: file description: Log files pattern: "Logs/*.{log,txt}" ontologies: [] - - interop: - - meta: - type: file - description: Interop files - pattern: "*.{bin}" - ontologies: [] - - "**/InterOp/*.bin": + interop: + - - meta: + type: map + description: Groovy Map containing sample information + - "output/InterOp/*.bin": type: file description: Interop files pattern: "*.{bin}" ontologies: [] - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@matthdsm" maintainers: diff --git a/modules/nf-core/bclconvert/tests/main.nf.test b/modules/nf-core/bclconvert/tests/main.nf.test index b246be20..b2971c02 100644 --- a/modules/nf-core/bclconvert/tests/main.nf.test +++ b/modules/nf-core/bclconvert/tests/main.nf.test @@ -4,14 +4,17 @@ nextflow_process { script "../main.nf" process "BCLCONVERT" config "./nextflow.config" + tag "bclconvert" tag "modules" tag "modules_nfcore" - test("homo sapiens illumina [bcl]") { + test("homo_sapiens illumina [bcl]") { when { + params { + module_args = "--force --first-tile-only true" + } process { - //TODO use new test dataset when available, see https://github.com/nf-core/test-datasets/issues/996 """ input[0] = [ [ id: 'test', lane:1 ], @@ -26,16 +29,88 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( + process.out.fastq, + process.out.fastq_idx, + process.out.undetermined.collect { meta, fastq -> file(fastq).name }, + process.out.undetermined_idx, process.out.reports, + process.out.logs.collect { meta, logs -> file(logs).list().sort() }, + process.out.interop.collect { meta, interop -> + interop.findAll { interopfile -> + file(interopfile).name != "IndexMetricsOut.bin" } }, process.out.versions, - process.out.fastq, - file(process.out.logs.get(0).get(1)).list().sort(), - process.out.interop.get(0).get(1).findAll { file(it).name != "IndexMetricsOut.bin" }, - ).match() - }, - { assert process.out.undetermined.get(0).get(1) ==~ ".*/Undetermined_S0_L001_R1_001.fastq.gz"}, - { assert file(process.out.interop.get(0).get(1).find { file(it).name == "IndexMetricsOut.bin" }).exists() } + path(process.out.versions[0]).yaml + ).match() } + ) + } + } + + test("sars_cov2 illumina [bcl]") { + when { + params { + module_args = "--force --tiles s_1_2101" + } + process { + """ + input[0] = [ + [ id: 'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bcl/SampleSheet.csv', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bcl/200624_A00834_0183_BHMTFYDRXX.tar.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.fastq.collect { + meta, fastqs -> + fastqs.findAll { + fastqfile -> + file(fastqfile).name != "SampleZ_S5_L001_R1_001.fastq.gz" + } + }, + process.out.fastq_idx, + process.out.undetermined.collect { meta, fastq -> file(fastq).name }, + process.out.undetermined_idx, + process.out.reports, + process.out.logs.collect { meta, logs -> file(logs).list().sort() }, + process.out.interop, + process.out.interop.collect { meta, interop -> + interop.findAll { interopfile -> + file(interopfile).name != "IndexMetricsOut.bin" } }, + process.out.versions, + path(process.out.versions[0]).yaml + ).match() } + ) + } + } + + test("homo_sapiens illumina [bcl] - stub") { + options "-stub" + + when { + params { + module_args = "--force --first-tile-only true" + } + process { + """ + input[0] = [ + [ id: 'test', lane:1 ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bcl/flowcell_samplesheet.csv', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bcl/flowcell.tar.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } ) } } -} \ No newline at end of file +} diff --git a/modules/nf-core/bclconvert/tests/main.nf.test.snap b/modules/nf-core/bclconvert/tests/main.nf.test.snap index 0c366a2d..b7838a5e 100644 --- a/modules/nf-core/bclconvert/tests/main.nf.test.snap +++ b/modules/nf-core/bclconvert/tests/main.nf.test.snap @@ -1,6 +1,303 @@ { - "homo sapiens illumina [bcl]": { + "sars_cov2 illumina [bcl]": { + "content": [ + [ + [ + "Sample1_S1_L001_R1_001.fastq.gz:md5,b5489d1964db8db5502eb742cc3ef3ec", + "Sample23_S3_L001_R1_001.fastq.gz:md5,767a1091320320b140288066e29bccc5", + "SampleA_S2_L001_R1_001.fastq.gz:md5,7de2ea88133409f34563f40a0d8c9e55", + "sampletest_S4_L001_R1_001.fastq.gz:md5,c16c7de1b7bffb5e4503f4d94c40f881" + ] + ], + [ + + ], + [ + "Undetermined_S0_L001_R1_001.fastq.gz" + ], + [ + + ], + [ + [ + { + "id": "test" + }, + [ + "Adapter_Cycle_Metrics.csv:md5,05fbe7b2b0acdd557d355b448aa88ace", + "Adapter_Metrics.csv:md5,0fa4ac708955417af9d18cec4955552f", + "Demultiplex_Detailed_Stats.csv:md5,5a6a4d66a96256ff71e4f649927fb112", + "Demultiplex_Stats.csv:md5,4a3f451faa098156623b55b0f2ff27ee", + "Demultiplex_Tile_Stats.csv:md5,f91fb0c7a2c5588ed43c7f9145d004ee", + "IndexMetricsOut.bin:md5,fb16c8a9873e5b5950ae5949126af76c", + "Index_Hopping_Counts.csv:md5,f59474d96afe8218c7590bb240b19690", + "Quality_Metrics.csv:md5,c4622066f85d93b1661c928a46cfc508", + "Quality_Tile_Metrics.csv:md5,e22bc5e2f147695150b02afcccb38c4f", + "RunInfo.xml:md5,f283cb4600235db9261ee1e319b1407e", + "SampleSheet.csv:md5,4113eabae23136cc819c7f15ac5b6aad", + "Top_Unknown_Barcodes.csv:md5,37dbc2860c640fc721820b0217ea0504", + "fastq_list.csv:md5,482cf7fe9b304a900e4ede3bb25b4912" + ] + ] + ], + [ + [ + "Errors.log", + "FastqComplete.txt", + "Info.log", + "Warnings.log" + ] + ], + [ + [ + { + "id": "test" + }, + [ + "BasecallingMetricsOut.bin:md5,7fb651325cba614d497d376eaf43fef4", + "CorrectedIntMetricsOut.bin:md5,dc8d57282ba9ece9e5fc58a92aa2ac52", + "EmpiricalPhasingMetricsOut.bin:md5,1ef4631faf0a3a3beb31b10fc38a734d", + "EventMetricsOut.bin:md5,dee320ce29bdadde44589aa9439f53ab", + "ExtendedTileMetricsOut.bin:md5,f01d1a9cf8445adf719e652ad7304cf2", + "ExtractionMetricsOut.bin:md5,972f4082ad950baaf42a6d28517d28a8", + "FWHMGridMetricsOut.bin:md5,6e297bafcd845bfd0440d08e1bb27685", + "ImageMetricsOut.bin:md5,ac5d1f0a1f611c0c7c9dd8e6b9e701b1", + "IndexMetricsOut.bin:md5,6d95975d5909eb88f824e6dc8066457d", + "OpticalModelMetricsOut.bin:md5,3eaea5fcf2d353950b1e720c73695ccb", + "PFGridMetricsOut.bin:md5,ae469858ee96ffafbcaf3afb814bdab2", + "QMetrics2030Out.bin:md5,438248760db58917b32f4eccc6c64c39", + "QMetricsByLaneOut.bin:md5,e8254cb4a27846710a2a143296be2d8f", + "QMetricsOut.bin:md5,8f6b83028a42be721200a598161ac5c6", + "RegistrationMetricsOut.bin:md5,b5ebd957aed067b6403d851ba2ce0139", + "TileMetricsOut.bin:md5,21388348d81fa9be326d30ef6d348464" + ] + ] + ], + [ + [ + "BasecallingMetricsOut.bin:md5,7fb651325cba614d497d376eaf43fef4", + "CorrectedIntMetricsOut.bin:md5,dc8d57282ba9ece9e5fc58a92aa2ac52", + "EmpiricalPhasingMetricsOut.bin:md5,1ef4631faf0a3a3beb31b10fc38a734d", + "EventMetricsOut.bin:md5,dee320ce29bdadde44589aa9439f53ab", + "ExtendedTileMetricsOut.bin:md5,f01d1a9cf8445adf719e652ad7304cf2", + "ExtractionMetricsOut.bin:md5,972f4082ad950baaf42a6d28517d28a8", + "FWHMGridMetricsOut.bin:md5,6e297bafcd845bfd0440d08e1bb27685", + "ImageMetricsOut.bin:md5,ac5d1f0a1f611c0c7c9dd8e6b9e701b1", + "OpticalModelMetricsOut.bin:md5,3eaea5fcf2d353950b1e720c73695ccb", + "PFGridMetricsOut.bin:md5,ae469858ee96ffafbcaf3afb814bdab2", + "QMetrics2030Out.bin:md5,438248760db58917b32f4eccc6c64c39", + "QMetricsByLaneOut.bin:md5,e8254cb4a27846710a2a143296be2d8f", + "QMetricsOut.bin:md5,8f6b83028a42be721200a598161ac5c6", + "RegistrationMetricsOut.bin:md5,b5ebd957aed067b6403d851ba2ce0139", + "TileMetricsOut.bin:md5,21388348d81fa9be326d30ef6d348464" + ] + ], + [ + "versions.yml:md5,a7ddd79ad04a69cb254185a11296f1b6" + ], + { + "BCLCONVERT": { + "bclconvert": "4.4.6" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-23T10:12:42.943671245" + }, + "homo_sapiens illumina [bcl] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "lane": 1 + }, + "Sample1_S1_L001_R1_001.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test", + "lane": 1 + }, + "Undetermined_S0_L001_R1_001.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + + ], + "4": [ + [ + { + "id": "test", + "lane": 1 + }, + [ + "Adapter_Cycle_Metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "Adapter_Metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "Demultiplex_Stats.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "Demultiplex_Tile_Stats.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "IndexMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "Index_Hopping_Counts.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "Quality_Metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "Quality_Tile_Metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "RunInfo.xml:md5,d41d8cd98f00b204e9800998ecf8427e", + "SampleSheet.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "Top_Unknown_Barcodes.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "fastq_list.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "5": [ + [ + { + "id": "test", + "lane": 1 + }, + [ + "Errors.log:md5,d41d8cd98f00b204e9800998ecf8427e", + "FastqComplete.log:md5,d41d8cd98f00b204e9800998ecf8427e", + "Info.log:md5,d41d8cd98f00b204e9800998ecf8427e", + "Warnings.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "lane": 1 + }, + [ + "ControlMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "CorrectedIntMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "ErrorMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "ExtractionMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "IndexMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "QMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "TileMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "7": [ + "versions.yml:md5,a7ddd79ad04a69cb254185a11296f1b6" + ], + "fastq": [ + [ + { + "id": "test", + "lane": 1 + }, + "Sample1_S1_L001_R1_001.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "fastq_idx": [ + + ], + "interop": [ + [ + { + "id": "test", + "lane": 1 + }, + [ + "ControlMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "CorrectedIntMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "ErrorMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "ExtractionMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "IndexMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "QMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "TileMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "logs": [ + [ + { + "id": "test", + "lane": 1 + }, + [ + "Errors.log:md5,d41d8cd98f00b204e9800998ecf8427e", + "FastqComplete.log:md5,d41d8cd98f00b204e9800998ecf8427e", + "Info.log:md5,d41d8cd98f00b204e9800998ecf8427e", + "Warnings.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "reports": [ + [ + { + "id": "test", + "lane": 1 + }, + [ + "Adapter_Cycle_Metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "Adapter_Metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "Demultiplex_Stats.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "Demultiplex_Tile_Stats.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "IndexMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "Index_Hopping_Counts.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "Quality_Metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "Quality_Tile_Metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "RunInfo.xml:md5,d41d8cd98f00b204e9800998ecf8427e", + "SampleSheet.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "Top_Unknown_Barcodes.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "fastq_list.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "undetermined": [ + [ + { + "id": "test", + "lane": 1 + }, + "Undetermined_S0_L001_R1_001.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "undetermined_idx": [ + + ], + "versions": [ + "versions.yml:md5,a7ddd79ad04a69cb254185a11296f1b6" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-23T10:12:55.362214653" + }, + "homo_sapiens illumina [bcl]": { "content": [ + [ + [ + { + "id": "test", + "lane": 1 + }, + "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b" + ] + ], + [ + + ], + [ + "Undetermined_S0_L001_R1_001.fastq.gz" + ], + [ + + ], [ [ { @@ -10,8 +307,9 @@ [ "Adapter_Cycle_Metrics.csv:md5,5a0c88793b4a0885fe3dda16609b576e", "Adapter_Metrics.csv:md5,989240b8840b2169ac1061f952c90f6c", + "Demultiplex_Detailed_Stats.csv:md5,fda7961f2958545daa94b55b84c99eb1", "Demultiplex_Stats.csv:md5,93949a8cd96f907d83e0808c1ec2a04b", - "Demultiplex_Tile_Stats.csv:md5,83120160b0f22a1303fa1db31c19f6e9", + "Demultiplex_Tile_Stats.csv:md5,d966f774c438485907ae22ac34b85722", "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", "Quality_Metrics.csv:md5,6614accb1bb414fe312b17b81f5521f7", @@ -24,36 +322,36 @@ ] ], [ - "versions.yml:md5,3a54ec728e3eb67bfd5af57ebd36ccab" + [ + "Errors.log", + "FastqComplete.txt", + "Info.log", + "Warnings.log" + ] ], [ [ - { - "id": "test", - "lane": 1 - }, - "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b" + "ControlMetricsOut.bin:md5,6d77b38d0793a6e1ce1e85706e488953", + "CorrectedIntMetricsOut.bin:md5,2bbf84d3be72734addaa2fe794711434", + "ErrorMetricsOut.bin:md5,38c88def138e9bb832539911affdb286", + "ExtractionMetricsOut.bin:md5,7497c3178837eea8f09350b5cd252e99", + "QMetricsOut.bin:md5,7e9f198d53ebdfbb699a5f94cf1ed51c", + "TileMetricsOut.bin:md5,83891751ec1c91a425a524b476b6ca3c" ] ], [ - "Errors.log", - "FastqComplete.txt", - "Info.log", - "Warnings.log" + "versions.yml:md5,a7ddd79ad04a69cb254185a11296f1b6" ], - [ - "ControlMetricsOut.bin:md5,6d77b38d0793a6e1ce1e85706e488953", - "CorrectedIntMetricsOut.bin:md5,2bbf84d3be72734addaa2fe794711434", - "ErrorMetricsOut.bin:md5,38c88def138e9bb832539911affdb286", - "ExtractionMetricsOut.bin:md5,7497c3178837eea8f09350b5cd252e99", - "QMetricsOut.bin:md5,7e9f198d53ebdfbb699a5f94cf1ed51c", - "TileMetricsOut.bin:md5,83891751ec1c91a425a524b476b6ca3c" - ] + { + "BCLCONVERT": { + "bclconvert": "4.4.6" + } + } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-06-02T12:35:36.967547" + "timestamp": "2025-09-23T10:12:18.369689549" } -} +} \ No newline at end of file diff --git a/modules/nf-core/bclconvert/tests/nextflow.config b/modules/nf-core/bclconvert/tests/nextflow.config index 344f4720..848581b5 100644 --- a/modules/nf-core/bclconvert/tests/nextflow.config +++ b/modules/nf-core/bclconvert/tests/nextflow.config @@ -1,10 +1,5 @@ process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - - ext.args = {[ - meta.lane ? "--bcl-only-lane ${meta.lane}" : "", - "--force", - "--first-tile-only true" - ].join(" ").trim()} + withName: "BCLCONVERT" { + ext.args = params.module_args + } } diff --git a/modules/nf-core/biobambam/bamsormadup/biobambam-bamsormadup.diff b/modules/nf-core/biobambam/bamsormadup/biobambam-bamsormadup.diff index 749067c4..9c5a8c3e 100644 --- a/modules/nf-core/biobambam/bamsormadup/biobambam-bamsormadup.diff +++ b/modules/nf-core/biobambam/bamsormadup/biobambam-bamsormadup.diff @@ -1,4 +1,4 @@ -Changes in module 'nf-core/biobambam/bamsormadup' +Changes in component 'nf-core/biobambam/bamsormadup' 'modules/nf-core/biobambam/bamsormadup/environment.yml' is unchanged 'modules/nf-core/biobambam/bamsormadup/meta.yml' is unchanged Changes in 'biobambam/bamsormadup/main.nf': diff --git a/modules/nf-core/biobambam/bamsormadup/environment.yml b/modules/nf-core/biobambam/bamsormadup/environment.yml index eb19895a..8c8c3166 100644 --- a/modules/nf-core/biobambam/bamsormadup/environment.yml +++ b/modules/nf-core/biobambam/bamsormadup/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/biobambam/bamsormadup/meta.yml b/modules/nf-core/biobambam/bamsormadup/meta.yml index cfd09d87..a863c54a 100644 --- a/modules/nf-core/biobambam/bamsormadup/meta.yml +++ b/modules/nf-core/biobambam/bamsormadup/meta.yml @@ -23,6 +23,7 @@ input: - bams: type: file description: List containing 1 or more bam files + ontologies: [] - - meta2: type: map description: | @@ -32,9 +33,10 @@ input: type: file description: Reference genome in FASTA format (optional) pattern: "*.{fa,fasta,fna}" + ontologies: [] output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -43,8 +45,9 @@ output: type: file description: BAM file with duplicate reads marked/removed pattern: "*.bam" - - bam_index: - - meta: + ontologies: [] + bam_index: + - - meta: type: map description: | Groovy Map containing sample information @@ -53,8 +56,9 @@ output: type: file description: BAM index file pattern: "*.bai" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -63,8 +67,9 @@ output: type: file description: CRAM file with duplicate reads marked/removed pattern: "*.cram" - - metrics: - - meta: + ontologies: [] + metrics: + - - meta: type: map description: | Groovy Map containing sample information @@ -73,11 +78,14 @@ output: type: file description: Duplicate metrics file generated by biobambam pattern: "*.{metrics.txt}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@matthdsm" maintainers: diff --git a/modules/nf-core/bowtie2/align/bowtie2-align.diff b/modules/nf-core/bowtie2/align/bowtie2-align.diff index 1a6f0ab5..33d3a5cf 100644 --- a/modules/nf-core/bowtie2/align/bowtie2-align.diff +++ b/modules/nf-core/bowtie2/align/bowtie2-align.diff @@ -1,11 +1,11 @@ -Changes in module 'nf-core/bowtie2/align' +Changes in component 'nf-core/bowtie2/align' 'modules/nf-core/bowtie2/align/environment.yml' is unchanged 'modules/nf-core/bowtie2/align/meta.yml' is unchanged Changes in 'bowtie2/align/main.nf': --- modules/nf-core/bowtie2/align/main.nf +++ modules/nf-core/bowtie2/align/main.nf @@ -8,9 +8,7 @@ - 'biocontainers/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:f70b31a2db15c023d641c32f433fb02cd04df5a6-0' }" + 'community.wave.seqera.io/library/bowtie2_htslib_samtools_pigz:edeb13799090a2a6' }" input: - tuple val(meta) , path(reads) @@ -19,7 +19,6 @@ Changes in 'bowtie2/align/main.nf': 'modules/nf-core/bowtie2/align/tests/main.nf.test.snap' is unchanged 'modules/nf-core/bowtie2/align/tests/large_index.config' is unchanged 'modules/nf-core/bowtie2/align/tests/sam2.config' is unchanged -'modules/nf-core/bowtie2/align/tests/tags.yml' is unchanged 'modules/nf-core/bowtie2/align/tests/main.nf.test' is unchanged 'modules/nf-core/bowtie2/align/tests/sam.config' is unchanged 'modules/nf-core/bowtie2/align/tests/cram_crai.config' is unchanged diff --git a/modules/nf-core/bowtie2/align/meta.yml b/modules/nf-core/bowtie2/align/meta.yml index 7436097b..0c12b28a 100644 --- a/modules/nf-core/bowtie2/align/meta.yml +++ b/modules/nf-core/bowtie2/align/meta.yml @@ -14,7 +14,7 @@ tools: sequencing reads to long reference sequences. homepage: http://bowtie-bio.sourceforge.net/bowtie2/index.shtml documentation: http://bowtie-bio.sourceforge.net/bowtie2/manual.shtml - doi: 10.1038/nmeth.1923 + doi: 10.1186/gb-2009-10-3-r25 licence: ["GPL-3.0-or-later"] identifier: "" input: @@ -28,6 +28,7 @@ input: description: | List of input FastQ files of size 1 and 2 for single-end and paired-end data, respectively. + ontologies: [] - - meta2: type: map description: | @@ -37,6 +38,7 @@ input: type: file description: Bowtie2 genome index files pattern: "*.ebwt" + ontologies: [] - - meta3: type: map description: | @@ -46,84 +48,88 @@ input: type: file description: Bowtie2 genome fasta file pattern: "*.fasta" - - - save_unaligned: - type: boolean - description: | - Save reads that do not map to the reference (true) or discard them (false) - (default: false) - - - sort_bam: - type: boolean - description: use samtools sort (true) or samtools view (false) - pattern: "true or false" + ontologies: [] + - save_unaligned: + type: boolean + description: | + Save reads that do not map to the reference (true) or discard them (false) + (default: false) + - sort_bam: + type: boolean + description: use samtools sort (true) or samtools view (false) + pattern: "true or false" output: - - sam: - - meta: - type: file - description: Output SAM file containing read alignments - pattern: "*.sam" + sam: + - - meta: + type: map + description: Groovy Map containing sample information - "*.sam": type: file description: Output SAM file containing read alignments pattern: "*.sam" - - bam: - - meta: - type: file - description: Output BAM file containing read alignments - pattern: "*.bam" + ontologies: [] + bam: + - - meta: + type: map + description: Groovy Map containing sample information - "*.bam": type: file description: Output BAM file containing read alignments pattern: "*.bam" - - cram: - - meta: - type: file - description: Output CRAM file containing read alignments - pattern: "*.cram" + ontologies: [] + cram: + - - meta: + type: map + description: Groovy Map containing sample information - "*.cram": type: file description: Output CRAM file containing read alignments pattern: "*.cram" - - csi: - - meta: - type: file - description: Output SAM/BAM index for large inputs - pattern: "*.csi" + ontologies: [] + csi: + - - meta: + type: map + description: Groovy Map containing sample information - "*.csi": type: file description: Output SAM/BAM index for large inputs pattern: "*.csi" - - crai: - - meta: - type: file - description: Output CRAM index - pattern: "*.crai" + ontologies: [] + crai: + - - meta: + type: map + description: Groovy Map containing sample information - "*.crai": type: file description: Output CRAM index pattern: "*.crai" - - log: - - meta: - type: file - description: Alignment log - pattern: "*.log" + ontologies: [] + log: + - - meta: + type: map + description: Groovy Map containing sample information - "*.log": type: file description: Alignment log pattern: "*.log" - - fastq: - - meta: - type: file - description: Unaligned FastQ files - pattern: "*.fastq.gz" + ontologies: [] + fastq: + - - meta: + type: map + description: Groovy Map containing sample information - "*fastq.gz": type: file description: Unaligned FastQ files pattern: "*.fastq.gz" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/bowtie2/align/tests/large_index.config b/modules/nf-core/bowtie2/align/tests/large_index.config index fdc1c59d..b2f0c405 100644 --- a/modules/nf-core/bowtie2/align/tests/large_index.config +++ b/modules/nf-core/bowtie2/align/tests/large_index.config @@ -2,4 +2,4 @@ process { withName: BOWTIE2_BUILD { ext.args = '--large-index' } -} \ No newline at end of file +} diff --git a/modules/nf-core/bowtie2/align/tests/sam.config b/modules/nf-core/bowtie2/align/tests/sam.config index c1d8c358..14d94e9a 100644 --- a/modules/nf-core/bowtie2/align/tests/sam.config +++ b/modules/nf-core/bowtie2/align/tests/sam.config @@ -2,4 +2,4 @@ process { withName: BOWTIE2_ALIGN { ext.args2 = '--output-fmt SAM' } -} \ No newline at end of file +} diff --git a/modules/nf-core/bowtie2/align/tests/sam2.config b/modules/nf-core/bowtie2/align/tests/sam2.config index 4e85ff0e..c39156f9 100644 --- a/modules/nf-core/bowtie2/align/tests/sam2.config +++ b/modules/nf-core/bowtie2/align/tests/sam2.config @@ -2,4 +2,4 @@ process { withName: BOWTIE2_ALIGN { ext.args2 = '-O SAM' } -} \ No newline at end of file +} diff --git a/modules/nf-core/bwa/mem/bwa-mem.diff b/modules/nf-core/bwa/mem/bwa-mem.diff index e07a383f..07ca43b0 100644 --- a/modules/nf-core/bwa/mem/bwa-mem.diff +++ b/modules/nf-core/bwa/mem/bwa-mem.diff @@ -1,11 +1,11 @@ -Changes in module 'nf-core/bwa/mem' +Changes in component 'nf-core/bwa/mem' 'modules/nf-core/bwa/mem/environment.yml' is unchanged 'modules/nf-core/bwa/mem/meta.yml' is unchanged Changes in 'bwa/mem/main.nf': --- modules/nf-core/bwa/mem/main.nf +++ modules/nf-core/bwa/mem/main.nf @@ -8,9 +8,7 @@ - 'biocontainers/mulled-v2-fe8faa35dbf6dc65a0f7f5d4ea12e31a79f73e40:1bd8542a8a0b42e0981337910954371d0230828e-0' }" + 'community.wave.seqera.io/library/bwa_htslib_samtools:83b50ff84ead50d0' }" input: - tuple val(meta) , path(reads) @@ -17,6 +17,5 @@ Changes in 'bwa/mem/main.nf': output: 'modules/nf-core/bwa/mem/tests/main.nf.test.snap' is unchanged -'modules/nf-core/bwa/mem/tests/tags.yml' is unchanged 'modules/nf-core/bwa/mem/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/bwa/mem/environment.yml b/modules/nf-core/bwa/mem/environment.yml index ed5448a1..54e67949 100644 --- a/modules/nf-core/bwa/mem/environment.yml +++ b/modules/nf-core/bwa/mem/environment.yml @@ -6,8 +6,8 @@ channels: dependencies: # renovate: datasource=conda depName=bioconda/bwa - - bioconda::bwa=0.7.18 + - bioconda::bwa=0.7.19 # renovate: datasource=conda depName=bioconda/htslib - - bioconda::htslib=1.21 + - bioconda::htslib=1.22.1 # renovate: datasource=conda depName=bioconda/samtools - - bioconda::samtools=1.21 + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/bwa/mem/main.nf b/modules/nf-core/bwa/mem/main.nf index da6ea4a2..a646e9e7 100644 --- a/modules/nf-core/bwa/mem/main.nf +++ b/modules/nf-core/bwa/mem/main.nf @@ -4,8 +4,8 @@ process BWA_MEM { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/bf/bf7890f8d4e38a7586581cb7fa13401b7af1582f21d94eef969df4cea852b6da/data' : - 'community.wave.seqera.io/library/bwa_htslib_samtools:56c9f8d5201889a4' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/d7/d7e24dc1e4d93ca4d3a76a78d4c834a7be3985b0e1e56fddd61662e047863a8a/data' : + 'community.wave.seqera.io/library/bwa_htslib_samtools:83b50ff84ead50d0' }" input: tuple val(meta) , path(reads), path(index), path(fasta) diff --git a/modules/nf-core/bwa/mem/meta.yml b/modules/nf-core/bwa/mem/meta.yml index b6f696c0..e1265ab7 100644 --- a/modules/nf-core/bwa/mem/meta.yml +++ b/modules/nf-core/bwa/mem/meta.yml @@ -55,52 +55,57 @@ input: ontologies: - edam: "http://edamontology.org/data_2044" # Sequence - edam: "http://edamontology.org/format_1929" # FASTA - - - sort_bam: - type: boolean - description: use samtools sort (true) or samtools view (false) - pattern: "true or false" + - sort_bam: + type: boolean + description: use samtools sort (true) or samtools view (false) + pattern: "true or false" output: - - bam: - - meta: - type: file - description: Output BAM file containing read alignments + bam: + - - meta: + type: map + description: Groovy Map containing sample information - "*.bam": type: file description: Output BAM file containing read alignments pattern: "*.{bam}" ontologies: - edam: "http://edamontology.org/format_2572" # BAM - - cram: - - meta: + cram: + - - meta: type: file - description: Output CRAM file containing read alignments + description: Output BAM file containing read alignments + ontologies: [] - "*.cram": type: file description: Output CRAM file containing read alignments pattern: "*.{cram}" ontologies: - edam: "http://edamontology.org/format_3462" # CRAM - - csi: - - meta: - type: file - description: Optional index file for BAM file + csi: + - - meta: + type: map + description: Groovy Map containing sample information - "*.csi": type: file description: Optional index file for BAM file pattern: "*.{csi}" - - crai: - - meta: - type: file - description: Optional index file for CRAM file + ontologies: [] + crai: + - - meta: + type: map + description: Groovy Map containing sample information - "*.crai": type: file description: Optional index file for CRAM file pattern: "*.{crai}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@jeremy1805" diff --git a/modules/nf-core/bwa/mem/tests/main.nf.test.snap b/modules/nf-core/bwa/mem/tests/main.nf.test.snap index 3aaefdda..51496a3c 100644 --- a/modules/nf-core/bwa/mem/tests/main.nf.test.snap +++ b/modules/nf-core/bwa/mem/tests/main.nf.test.snap @@ -11,16 +11,16 @@ ], [ - "versions.yml:md5,c60680eba0f00e791c0d5a0a6e9d665f" + "versions.yml:md5,f882069f942ae2a95e2c91f82e4445c6" ], - "53df0e7b72f1f85fb28af5fec435246", + "37b4ee1649480bd1ff98666447f64fa5", "798439cbd7fd81cbcc5078022dc5479d" ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T08:36:00.831642964" + "timestamp": "2025-09-23T11:05:11.396076472" }, "Single-End Sort": { "content": [ @@ -34,16 +34,16 @@ ], [ - "versions.yml:md5,c60680eba0f00e791c0d5a0a6e9d665f" + "versions.yml:md5,f882069f942ae2a95e2c91f82e4445c6" ], - "5eca502b75fefc26e8000908bf0bb3a3", + "57106634fcaf3bf503d5487a7717c5d3", "94fcf617f5b994584c4e8d4044e16b4f" ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T08:36:16.025706238" + "timestamp": "2025-09-23T11:05:19.529514701" }, "Paired-End": { "content": [ @@ -57,16 +57,16 @@ ], [ - "versions.yml:md5,c60680eba0f00e791c0d5a0a6e9d665f" + "versions.yml:md5,f882069f942ae2a95e2c91f82e4445c6" ], - "fec2aafbba4637767bc4e202c71aee58", + "57770ff7c7186ed40c42f3d71c16ce3c", "57aeef88ed701a8ebc8e2f0a381b2a6" ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T08:36:27.309924644" + "timestamp": "2025-09-23T11:05:27.433790935" }, "Paired-End Sort": { "content": [ @@ -80,16 +80,16 @@ ], [ - "versions.yml:md5,c60680eba0f00e791c0d5a0a6e9d665f" + "versions.yml:md5,f882069f942ae2a95e2c91f82e4445c6" ], - "d5ad8844218280969c1f9349bd62d057", + "8f5d8f83b485dcfa1f47a73ae645e3a7", "af8628d9df18b2d3d4f6fd47ef2bb872" ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T08:36:45.448624985" + "timestamp": "2025-09-23T11:05:35.775774487" }, "Single-end - stub": { "content": [ @@ -125,7 +125,7 @@ ] ], "4": [ - "versions.yml:md5,c60680eba0f00e791c0d5a0a6e9d665f" + "versions.yml:md5,f882069f942ae2a95e2c91f82e4445c6" ], "bam": [ [ @@ -158,15 +158,15 @@ ] ], "versions": [ - "versions.yml:md5,c60680eba0f00e791c0d5a0a6e9d665f" + "versions.yml:md5,f882069f942ae2a95e2c91f82e4445c6" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T08:37:16.211123969" + "timestamp": "2025-09-23T11:05:51.638917351" }, "Paired-End - no fasta": { "content": [ @@ -180,16 +180,16 @@ ], [ - "versions.yml:md5,c60680eba0f00e791c0d5a0a6e9d665f" + "versions.yml:md5,f882069f942ae2a95e2c91f82e4445c6" ], - "fec2aafbba4637767bc4e202c71aee58", + "57770ff7c7186ed40c42f3d71c16ce3c", "57aeef88ed701a8ebc8e2f0a381b2a6" ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T08:36:56.592159657" + "timestamp": "2025-09-23T11:05:43.764589371" }, "Paired-end - stub": { "content": [ @@ -225,7 +225,7 @@ ] ], "4": [ - "versions.yml:md5,c60680eba0f00e791c0d5a0a6e9d665f" + "versions.yml:md5,f882069f942ae2a95e2c91f82e4445c6" ], "bam": [ [ @@ -258,14 +258,14 @@ ] ], "versions": [ - "versions.yml:md5,c60680eba0f00e791c0d5a0a6e9d665f" + "versions.yml:md5,f882069f942ae2a95e2c91f82e4445c6" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T08:37:32.177177506" + "timestamp": "2025-09-23T11:05:59.642014144" } } \ No newline at end of file diff --git a/modules/nf-core/bwamem2/mem/bwamem2-mem.diff b/modules/nf-core/bwamem2/mem/bwamem2-mem.diff index 7c300098..37262b6f 100644 --- a/modules/nf-core/bwamem2/mem/bwamem2-mem.diff +++ b/modules/nf-core/bwamem2/mem/bwamem2-mem.diff @@ -1,11 +1,11 @@ -Changes in module 'nf-core/bwamem2/mem' +Changes in component 'nf-core/bwamem2/mem' 'modules/nf-core/bwamem2/mem/environment.yml' is unchanged 'modules/nf-core/bwamem2/mem/meta.yml' is unchanged Changes in 'bwamem2/mem/main.nf': --- modules/nf-core/bwamem2/mem/main.nf +++ modules/nf-core/bwamem2/mem/main.nf @@ -8,9 +8,7 @@ - 'biocontainers/mulled-v2-e5d375990341c5aef3c9aff74f96f66f65375ef6:2d15960ccea84e249a150b7f5d4db3a42fc2d6c3-0' }" + 'community.wave.seqera.io/library/bwa-mem2_htslib_samtools:db98f81f55b64113' }" input: - tuple val(meta), path(reads) @@ -17,6 +17,5 @@ Changes in 'bwamem2/mem/main.nf': output: 'modules/nf-core/bwamem2/mem/tests/main.nf.test.snap' is unchanged -'modules/nf-core/bwamem2/mem/tests/tags.yml' is unchanged 'modules/nf-core/bwamem2/mem/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/bwamem2/mem/environment.yml b/modules/nf-core/bwamem2/mem/environment.yml index c069e281..f3637444 100644 --- a/modules/nf-core/bwamem2/mem/environment.yml +++ b/modules/nf-core/bwamem2/mem/environment.yml @@ -6,8 +6,8 @@ channels: dependencies: # renovate: datasource=conda depName=bioconda/bwa-mem2 - - bwa-mem2=2.2.1 + - bwa-mem2=2.3 # renovate: datasource=conda depName=bioconda/htslib - - htslib=1.21 + - htslib=1.22.1 # renovate: datasource=conda depName=bioconda/samtools - - samtools=1.21 + - samtools=1.22.1 diff --git a/modules/nf-core/bwamem2/mem/main.nf b/modules/nf-core/bwamem2/mem/main.nf index 41e2252a..830c1710 100644 --- a/modules/nf-core/bwamem2/mem/main.nf +++ b/modules/nf-core/bwamem2/mem/main.nf @@ -4,8 +4,8 @@ process BWAMEM2_MEM { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/9a/9ac054213e67b3c9308e409b459080bbe438f8fd6c646c351bc42887f35a42e7/data' : - 'community.wave.seqera.io/library/bwa-mem2_htslib_samtools:e1f420694f8e42bd' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/e0/e05ce34b46ad42810eb29f74e4e304c0cb592b2ca15572929ed8bbaee58faf01/data' : + 'community.wave.seqera.io/library/bwa-mem2_htslib_samtools:db98f81f55b64113' }" input: tuple val(meta), path(reads), path(index), path(fasta) diff --git a/modules/nf-core/bwamem2/mem/meta.yml b/modules/nf-core/bwamem2/mem/meta.yml index d17e0dbd..6c7d1728 100644 --- a/modules/nf-core/bwamem2/mem/meta.yml +++ b/modules/nf-core/bwamem2/mem/meta.yml @@ -55,13 +55,13 @@ input: ontologies: - edam: "http://edamontology.org/data_2044" # Sequence - edam: "http://edamontology.org/format_1929" # FASTA - - - sort_bam: - type: boolean - description: use samtools sort (true) or samtools view (false) - pattern: "true or false" + - sort_bam: + type: boolean + description: use samtools sort (true) or samtools view (false) + pattern: "true or false" output: - - sam: - - meta: + sam: + - - meta: type: map description: | Groovy Map containing sample information @@ -72,8 +72,8 @@ output: pattern: "*.{sam}" ontologies: - edam: "http://edamontology.org/format_2573" # SAM - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -84,8 +84,8 @@ output: pattern: "*.{bam}" ontologies: - edam: "http://edamontology.org/format_2572" # BAM - - cram: - - meta: + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -96,8 +96,8 @@ output: pattern: "*.{cram}" ontologies: - edam: "http://edamontology.org/format_3462" # CRAM - - crai: - - meta: + crai: + - - meta: type: map description: | Groovy Map containing sample information @@ -106,8 +106,9 @@ output: type: file description: Index file for CRAM file pattern: "*.{crai}" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -116,11 +117,14 @@ output: type: file description: Index file for BAM file pattern: "*.{csi}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@maxulysse" - "@matthdsm" diff --git a/modules/nf-core/bwamem2/mem/tests/main.nf.test.snap b/modules/nf-core/bwamem2/mem/tests/main.nf.test.snap index ec90701f..b7d40a68 100644 --- a/modules/nf-core/bwamem2/mem/tests/main.nf.test.snap +++ b/modules/nf-core/bwamem2/mem/tests/main.nf.test.snap @@ -1,17 +1,17 @@ { "sarscov2 - [fastq1, fastq2], index, fasta, false": { "content": [ - "9505760d66e1d5a5d34ab79a98228c6", + "e414c2d48e2e44c2c52c20ecd88e8bd8", "57aeef88ed701a8ebc8e2f0a381b2a6", [ - "versions.yml:md5,ca1b1dcf82b92fb0751816fca16a477a" + "versions.yml:md5,3574188ab1f33fd99cff9f5562dfb885" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T10:57:52.782442426" + "timestamp": "2025-09-23T11:44:52.73673293" }, "sarscov2 - [fastq1, fastq2], index, fasta, true - stub": { "content": [ @@ -44,7 +44,7 @@ ] ], "5": [ - "versions.yml:md5,ca1b1dcf82b92fb0751816fca16a477a" + "versions.yml:md5,3574188ab1f33fd99cff9f5562dfb885" ], "bam": [ [ @@ -74,56 +74,56 @@ ], "versions": [ - "versions.yml:md5,ca1b1dcf82b92fb0751816fca16a477a" + "versions.yml:md5,3574188ab1f33fd99cff9f5562dfb885" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T10:58:37.140104324" + "timestamp": "2025-09-23T11:45:14.834888709" }, "sarscov2 - [fastq1, fastq2], index, fasta, true": { "content": [ - "e0c38d5772ca5f4d5d9999f4477e933c", + "716ed1ef39deaad346ca7cf86e08f959", "af8628d9df18b2d3d4f6fd47ef2bb872", [ - "versions.yml:md5,ca1b1dcf82b92fb0751816fca16a477a" + "versions.yml:md5,3574188ab1f33fd99cff9f5562dfb885" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T10:58:19.047052261" + "timestamp": "2025-09-23T11:45:04.750057645" }, "sarscov2 - fastq, index, fasta, false": { "content": [ - "58d05395bbb819e929885bde415947ae", + "283a83f604f3f5338acedfee349dccf4", "798439cbd7fd81cbcc5078022dc5479d", [ - "versions.yml:md5,ca1b1dcf82b92fb0751816fca16a477a" + "versions.yml:md5,3574188ab1f33fd99cff9f5562dfb885" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T10:56:53.456559296" + "timestamp": "2025-09-23T11:44:28.57550711" }, "sarscov2 - fastq, index, fasta, true": { "content": [ - "276189f6f003f99a87664e74fad2893d", + "ed99048bb552cac58e39923b550b6d5b", "94fcf617f5b994584c4e8d4044e16b4f", [ - "versions.yml:md5,ca1b1dcf82b92fb0751816fca16a477a" + "versions.yml:md5,3574188ab1f33fd99cff9f5562dfb885" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T10:57:21.949711746" + "timestamp": "2025-09-23T11:44:40.437183765" } } \ No newline at end of file diff --git a/modules/nf-core/dragmap/align/dragmap-align.diff b/modules/nf-core/dragmap/align/dragmap-align.diff index 60188aab..cf4c75e6 100644 --- a/modules/nf-core/dragmap/align/dragmap-align.diff +++ b/modules/nf-core/dragmap/align/dragmap-align.diff @@ -1,22 +1,23 @@ -Changes in module 'nf-core/dragmap/align' +Changes in component 'nf-core/dragmap/align' 'modules/nf-core/dragmap/align/environment.yml' is unchanged 'modules/nf-core/dragmap/align/meta.yml' is unchanged Changes in 'dragmap/align/main.nf': --- modules/nf-core/dragmap/align/main.nf +++ modules/nf-core/dragmap/align/main.nf -@@ -8,9 +8,7 @@ - 'biocontainers/mulled-v2-580d344d9d4a496cd403932da8765f9e0187774d:7eed251370ac7f3537c3d9472cdb2f9f5d8da1c5-0' }" +@@ -9,10 +9,8 @@ + : 'biocontainers/mulled-v2-580d344d9d4a496cd403932da8765f9e0187774d:df80ed8d23d0a2c43181a2b3dd1b39f2d00fab5c-0'}" input: -- tuple val(meta) , path(reads) +- tuple val(meta), path(reads) - tuple val(meta2), path(hashmap) - tuple val(meta3), path(fasta) +- val sort_bam + tuple val(meta) , path(reads), path(hashmap), path(fasta) - val sort_bam ++ val sort_bam output: + tuple val(meta), path("*.sam"), emit: sam, optional: true 'modules/nf-core/dragmap/align/tests/main.nf.test.snap' is unchanged -'modules/nf-core/dragmap/align/tests/tags.yml' is unchanged 'modules/nf-core/dragmap/align/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/dragmap/align/meta.yml b/modules/nf-core/dragmap/align/meta.yml index 80f020f5..ba3ab484 100644 --- a/modules/nf-core/dragmap/align/meta.yml +++ b/modules/nf-core/dragmap/align/meta.yml @@ -25,6 +25,7 @@ input: description: | List of input FastQ files of size 1 and 2 for single-end and paired-end data, respectively. + ontologies: [] - - meta2: type: map description: | @@ -34,6 +35,7 @@ input: type: file description: DRAGMAP hash table pattern: "Directory containing DRAGMAP hash table *.{cmp,.bin,.txt}" + ontologies: [] - - meta3: type: map description: | @@ -43,12 +45,13 @@ input: type: file description: Genome fasta reference files pattern: "*.{fa,fasta,fna}" - - - sort_bam: - type: boolean - description: Sort the BAM file + ontologies: [] + - sort_bam: + type: boolean + description: Sort the BAM file output: - - sam: - - meta: + sam: + - - meta: type: map description: | Groovy Map containing sample information @@ -57,17 +60,20 @@ output: type: file description: Output SAM file containing read alignments pattern: "*.{sam}" - - bam: - - meta: - type: file - description: Output BAM file containing read alignments - pattern: "*.{bam}" + ontologies: [] + bam: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - "*.bam": type: file description: Output BAM file containing read alignments pattern: "*.{bam}" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -76,8 +82,9 @@ output: type: file description: Output CRAM file containing read alignments pattern: "*.{cram}" - - crai: - - meta: + ontologies: [] + crai: + - - meta: type: map description: | Groovy Map containing sample information @@ -86,8 +93,9 @@ output: type: file description: Index file for CRAM file pattern: "*.{crai}" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -96,8 +104,9 @@ output: type: file description: Index file for CRAM file pattern: "*.{csi}" - - log: - - meta: + ontologies: [] + log: + - - meta: type: map description: | Groovy Map containing sample information @@ -106,11 +115,14 @@ output: type: file description: Log file pattern: "*.{log}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@edmundmiller" maintainers: diff --git a/modules/nf-core/fastp/environment.yml b/modules/nf-core/fastp/environment.yml index 26d4aca5..0c36eed2 100644 --- a/modules/nf-core/fastp/environment.yml +++ b/modules/nf-core/fastp/environment.yml @@ -1,5 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::fastp=0.23.4 + # renovate: datasource=conda depName=bioconda/fastp + - bioconda::fastp=1.0.1 diff --git a/modules/nf-core/fastp/fastp.diff b/modules/nf-core/fastp/fastp.diff deleted file mode 100644 index 266c00b1..00000000 --- a/modules/nf-core/fastp/fastp.diff +++ /dev/null @@ -1,21 +0,0 @@ -Changes in module 'nf-core/fastp' -'modules/nf-core/fastp/environment.yml' is unchanged -'modules/nf-core/fastp/meta.yml' is unchanged -Changes in 'fastp/main.nf': ---- modules/nf-core/fastp/main.nf -+++ modules/nf-core/fastp/main.nf -@@ -92,7 +92,6 @@ - $fail_fastq \\ - $merge_fastq \\ - --thread $task.cpus \\ -- --detect_adapter_for_pe \\ - $args \\ - 2> >(tee ${prefix}.fastp.log >&2) - - -'modules/nf-core/fastp/tests/main.nf.test.snap' is unchanged -'modules/nf-core/fastp/tests/tags.yml' is unchanged -'modules/nf-core/fastp/tests/main.nf.test' is unchanged -'modules/nf-core/fastp/tests/nextflow.save_failed.config' is unchanged -'modules/nf-core/fastp/tests/nextflow.interleaved.config' is unchanged -************************************************************ diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf index 02b69407..85013f5d 100644 --- a/modules/nf-core/fastp/main.nf +++ b/modules/nf-core/fastp/main.nf @@ -4,12 +4,11 @@ process FASTP { 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' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/52/527b18847a97451091dba07a886b24f17f742a861f9f6c9a6bfb79d4f1f3bf9d/data' : + 'community.wave.seqera.io/library/fastp:1.0.1--c8b87fe62dcc103c' }" input: - tuple val(meta), path(reads) - path adapter_fasta + tuple val(meta), path(reads), path(adapter_fasta) val discard_trimmed_pass val save_trimmed_fail val save_merged @@ -48,7 +47,7 @@ process FASTP { $adapter_list \\ $fail_fastq \\ $args \\ - 2> >(tee ${prefix}.fastp.log >&2) \\ + 2>| >(tee ${prefix}.fastp.log >&2) \\ | gzip -c > ${prefix}.fastp.fastq.gz cat <<-END_VERSIONS > versions.yml @@ -69,7 +68,7 @@ process FASTP { $adapter_list \\ $fail_fastq \\ $args \\ - 2> >(tee ${prefix}.fastp.log >&2) + 2>| >(tee ${prefix}.fastp.log >&2) cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -92,8 +91,9 @@ process FASTP { $fail_fastq \\ $merge_fastq \\ --thread $task.cpus \\ + --detect_adapter_for_pe \\ $args \\ - 2> >(tee ${prefix}.fastp.log >&2) + 2>| >(tee ${prefix}.fastp.log >&2) cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/fastp/meta.yml b/modules/nf-core/fastp/meta.yml index 159404d0..324025fe 100644 --- a/modules/nf-core/fastp/meta.yml +++ b/modules/nf-core/fastp/meta.yml @@ -24,24 +24,27 @@ input: List of input FastQ files of size 1 and 2 for single-end and paired-end data, respectively. If you wish to run interleaved paired-end data, supply as single-end data but with `--interleaved_in` in your `modules.conf`'s `ext.args` for the module. - - - adapter_fasta: + ontologies: [] + - adapter_fasta: type: file description: File in FASTA format containing possible adapters to remove. pattern: "*.{fasta,fna,fas,fa}" - - - discard_trimmed_pass: - type: boolean - description: Specify true to not write any reads that pass trimming thresholds. - | This can be used to use fastp for the output report only. - - - save_trimmed_fail: - type: boolean - description: Specify true to save files that failed to pass trimming thresholds - ending in `*.fail.fastq.gz` - - - save_merged: - type: boolean - description: Specify true to save all merged reads to a file ending in `*.merged.fastq.gz` + ontologies: [] + - discard_trimmed_pass: + type: boolean + description: | + Specify true to not write any reads that pass trimming thresholds. + This can be used to use fastp for the output report only. + - save_trimmed_fail: + type: boolean + description: Specify true to save files that failed to pass trimming thresholds + ending in `*.fail.fastq.gz` + - save_merged: + type: boolean + description: Specify true to save all merged reads to a file ending in `*.merged.fastq.gz` output: - - reads: - - meta: + reads: + - - meta: type: map description: | Groovy Map containing sample information @@ -50,8 +53,10 @@ output: type: file description: The trimmed/modified/unmerged fastq reads pattern: "*fastp.fastq.gz" - - json: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + json: + - - meta: type: map description: | Groovy Map containing sample information @@ -60,8 +65,10 @@ output: type: file description: Results in JSON format pattern: "*.json" - - html: - - meta: + ontologies: + - edam: http://edamontology.org/format_3464 # JSON + html: + - - meta: type: map description: | Groovy Map containing sample information @@ -70,8 +77,9 @@ output: type: file description: Results in HTML format pattern: "*.html" - - log: - - meta: + ontologies: [] + log: + - - meta: type: map description: | Groovy Map containing sample information @@ -80,8 +88,9 @@ output: type: file description: fastq log file pattern: "*.log" - - reads_fail: - - meta: + ontologies: [] + reads_fail: + - - meta: type: map description: | Groovy Map containing sample information @@ -90,8 +99,10 @@ output: type: file description: Reads the failed the preprocessing pattern: "*fail.fastq.gz" - - reads_merged: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + reads_merged: + - - meta: type: map description: | Groovy Map containing sample information @@ -100,11 +111,14 @@ output: type: file description: Reads that were successfully merged pattern: "*.{merged.fastq.gz}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@kevinmenden" diff --git a/modules/nf-core/fastp/tests/main.nf.test b/modules/nf-core/fastp/tests/main.nf.test index 30dbb8aa..5125705c 100644 --- a/modules/nf-core/fastp/tests/main.nf.test +++ b/modules/nf-core/fastp/tests/main.nf.test @@ -13,14 +13,19 @@ nextflow_process { process { """ + adapter_fasta = [] // empty list for no adapter file! + discard_trimmed_pass = false + save_trimmed_fail = false + save_merged = false + input[0] = Channel.of([ [ id:'test', single_end:true ], - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ], + adapter_fasta ]) - input[1] = [] - input[2] = false - input[3] = false - input[4] = false + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -31,11 +36,11 @@ nextflow_process { { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, { assert snapshot( - process.out.json, process.out.reads, process.out.reads_fail, process.out.reads_merged, - process.out.versions).match() } + process.out.versions).match() + } ) } } @@ -46,20 +51,22 @@ nextflow_process { process { """ - adapter_fasta = [] - save_trimmed_pass = true - save_trimmed_fail = false - save_merged = false + adapter_fasta = [] + discard_trimmed_pass = false + save_trimmed_fail = false + save_merged = false input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ], + adapter_fasta ]) - input[1] = [] - input[2] = false - input[3] = false - input[4] = false + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -70,7 +77,6 @@ nextflow_process { { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") }, { assert path(process.out.log.get(0).get(1)).getText().contains("Q30 bases: 12281(88.3716%)") }, { assert snapshot( - process.out.json, process.out.reads, process.out.reads_fail, process.out.reads_merged, @@ -85,14 +91,19 @@ nextflow_process { when { process { """ + adapter_fasta = [] + discard_trimmed_pass = false + save_trimmed_fail = false + save_merged = false + input[0] = Channel.of([ [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ], + adapter_fasta ]) - input[1] = [] - input[2] = false - input[3] = false - input[4] = false + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -106,7 +117,6 @@ nextflow_process { { assert process.out.reads_merged == [] }, { assert snapshot( process.out.reads, - process.out.json, process.out.versions).match() } ) } @@ -118,14 +128,19 @@ nextflow_process { process { """ + adapter_fasta = [] + discard_trimmed_pass = false + save_trimmed_fail = true + save_merged = false + input[0] = Channel.of([ [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ], + adapter_fasta ]) - input[1] = [] - input[2] = false - input[3] = true - input[4] = false + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -136,7 +151,6 @@ nextflow_process { { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, { assert snapshot( - process.out.json, process.out.reads, process.out.reads_fail, process.out.reads_merged, @@ -151,15 +165,22 @@ nextflow_process { when { process { """ + adapter_fasta = [] + discard_trimmed_pass = false + save_trimmed_fail = true + save_merged = false + input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)] + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ], + adapter_fasta ]) - input[1] = [] - input[2] = false - input[3] = true - input[4] = false + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -173,7 +194,6 @@ nextflow_process { process.out.reads, process.out.reads_fail, process.out.reads_merged, - process.out.json, process.out.versions).match() } ) } @@ -184,15 +204,22 @@ nextflow_process { when { process { """ + adapter_fasta = [] + discard_trimmed_pass = false + save_trimmed_fail = false + save_merged = true + input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ], + adapter_fasta ]) - input[1] = [] - input[2] = false - input[3] = false - input[4] = true + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -203,7 +230,6 @@ nextflow_process { { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") }, { assert path(process.out.log.get(0).get(1)).getText().contains("total reads: 75") }, { assert snapshot( - process.out.json, process.out.reads, process.out.reads_fail, process.out.reads_merged, @@ -217,15 +243,22 @@ nextflow_process { when { process { """ + adapter_fasta = file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) + discard_trimmed_pass = false + save_trimmed_fail = false + save_merged = true + input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ], + adapter_fasta ]) - input[1] = Channel.of([ file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) ]) + input[1] = false input[2] = false - input[3] = false - input[4] = true + input[3] = true """ } } @@ -236,7 +269,6 @@ nextflow_process { { assert path(process.out.html.get(0).get(1)).getText().contains("
") }, { assert path(process.out.log.get(0).get(1)).getText().contains("total bases: 13683") }, { assert snapshot( - process.out.json, process.out.reads, process.out.reads_fail, process.out.reads_merged, @@ -250,14 +282,20 @@ nextflow_process { when { process { """ + adapter_fasta = [] + discard_trimmed_pass = true + save_trimmed_fail = false + save_merged = false + input[0] = Channel.of([ [ id:'test', single_end:true ], - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ], + adapter_fasta ]) - input[1] = [] - input[2] = true - input[3] = false - input[4] = false + + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -268,7 +306,6 @@ nextflow_process { { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, { assert snapshot( - process.out.json, process.out.reads, process.out.reads, process.out.reads_fail, @@ -285,15 +322,22 @@ nextflow_process { when { process { """ + adapter_fasta = [] + discard_trimmed_pass = true + save_trimmed_fail = false + save_merged = false + input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ], + adapter_fasta ]) - input[1] = [] - input[2] = true - input[3] = false - input[4] = false + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -304,7 +348,6 @@ nextflow_process { { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") }, { assert path(process.out.log.get(0).get(1)).getText().contains("Q30 bases: 12281(88.3716%)") }, { assert snapshot( - process.out.json, process.out.reads, process.out.reads, process.out.reads_fail, @@ -324,14 +367,19 @@ nextflow_process { process { """ + adapter_fasta = [] + discard_trimmed_pass = false + save_trimmed_fail = false + save_merged = false + input[0] = Channel.of([ [ id:'test', single_end:true ], - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ], + adapter_fasta ]) - input[1] = [] - input[2] = false - input[3] = false - input[4] = false + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -352,20 +400,20 @@ nextflow_process { process { """ - adapter_fasta = [] - save_trimmed_pass = true - save_trimmed_fail = false - save_merged = false + adapter_fasta = [] + discard_trimmed_pass = false + save_trimmed_fail = false + save_merged = false input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ], + adapter_fasta ]) - input[1] = [] - input[2] = false - input[3] = false - input[4] = false + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -386,14 +434,19 @@ nextflow_process { when { process { """ + adapter_fasta = [] + discard_trimmed_pass = false + save_trimmed_fail = false + save_merged = false + input[0] = Channel.of([ [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ], + adapter_fasta ]) - input[1] = [] - input[2] = false - input[3] = false - input[4] = false + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -414,14 +467,19 @@ nextflow_process { process { """ + adapter_fasta = [] + discard_trimmed_pass = false + save_trimmed_fail = true + save_merged = false + input[0] = Channel.of([ [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ], + adapter_fasta ]) - input[1] = [] - input[2] = false - input[3] = true - input[4] = false + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -442,15 +500,20 @@ nextflow_process { when { process { """ + adapter_fasta = [] + discard_trimmed_pass = false + save_trimmed_fail = true + save_merged = false + input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)] + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)], + adapter_fasta ]) - input[1] = [] - input[2] = false - input[3] = true - input[4] = false + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -470,15 +533,20 @@ nextflow_process { when { process { """ + adapter_fasta = [] + discard_trimmed_pass = false + save_trimmed_fail = false + save_merged = true + input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ], + adapter_fasta ]) - input[1] = [] - input[2] = false - input[3] = false - input[4] = true + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -498,15 +566,22 @@ nextflow_process { when { process { """ + adapter_fasta = file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) + discard_trimmed_pass = false + save_trimmed_fail = false + save_merged = true + input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ], + adapter_fasta ]) - input[1] = Channel.of([ file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) ]) - input[2] = false - input[3] = false - input[4] = true + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -526,14 +601,19 @@ nextflow_process { when { process { """ + adapter_fasta = [] + discard_trimmed_pass = true + save_trimmed_fail = false + save_merged = false + input[0] = Channel.of([ [ id:'test', single_end:true ], - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ], + adapter_fasta ]) - input[1] = [] - input[2] = true - input[3] = false - input[4] = false + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -553,15 +633,20 @@ nextflow_process { when { process { """ + adapter_fasta = [] + discard_trimmed_pass = true + save_trimmed_fail = false + save_merged = false + input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ], + adapter_fasta ]) - input[1] = [] - input[2] = true - input[3] = false - input[4] = false + input[1] = discard_trimmed_pass + input[2] = save_trimmed_fail + input[3] = save_merged """ } } @@ -573,4 +658,4 @@ nextflow_process { ) } } -} \ No newline at end of file +} diff --git a/modules/nf-core/fastp/tests/main.nf.test.snap b/modules/nf-core/fastp/tests/main.nf.test.snap index 54be7e45..a30c680d 100644 --- a/modules/nf-core/fastp/tests/main.nf.test.snap +++ b/modules/nf-core/fastp/tests/main.nf.test.snap @@ -39,7 +39,7 @@ ], "6": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ], "html": [ [ @@ -78,27 +78,18 @@ ], "versions": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T14:31:10.841098" + "timestamp": "2025-09-11T09:55:42.073182" }, "test_fastp_paired_end": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" - ] - ], [ [ { @@ -118,26 +109,17 @@ ], [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T13:43:28.665779" + "timestamp": "2025-09-19T16:23:12.436191" }, "test_fastp_paired_end_merged_adapterlist": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,5914ca3f21ce162123a824e33e8564f6" - ] - ], [ [ { @@ -163,26 +145,17 @@ ] ], [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T13:44:18.210375" + "timestamp": "2025-09-19T16:23:32.267735" }, "test_fastp_single_end_qc_only": { "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,5cc5f01e449309e0e689ed6f51a2294a" - ] - ], [ ], @@ -202,14 +175,14 @@ ], [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T13:44:27.380974" + "timestamp": "2025-09-19T16:23:36.149003" }, "test_fastp_paired_end_trim_fail": { "content": [ @@ -242,23 +215,14 @@ ], [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,4c3268ddb50ea5b33125984776aa3519" - ] - ], - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T13:43:58.749589" + "timestamp": "2025-09-19T16:23:24.23891" }, "fastp - stub test_fastp_interleaved": { "content": [ @@ -306,7 +270,7 @@ ], "6": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ], "html": [ [ @@ -351,15 +315,15 @@ ], "versions": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T13:50:00.270029" + "timestamp": "2025-09-11T09:55:19.47199" }, "test_fastp_single_end - stub": { "content": [ @@ -407,7 +371,7 @@ ], "6": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ], "html": [ [ @@ -452,15 +416,15 @@ ], "versions": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T13:49:42.502789" + "timestamp": "2025-09-11T09:55:09.617001" }, "test_fastp_paired_end_merged_adapterlist - stub": { "content": [ @@ -517,7 +481,7 @@ ] ], "6": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ], "html": [ [ @@ -571,15 +535,15 @@ ] ], "versions": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T13:54:53.458252" + "timestamp": "2025-09-11T09:55:37.413738" }, "test_fastp_paired_end_merged - stub": { "content": [ @@ -636,7 +600,7 @@ ] ], "6": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ], "html": [ [ @@ -690,27 +654,18 @@ ] ], "versions": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T13:50:27.689379" + "timestamp": "2025-09-11T09:55:32.965652" }, "test_fastp_paired_end_merged": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" - ] - ], [ [ { @@ -736,14 +691,14 @@ ] ], [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T13:44:08.68476" + "timestamp": "2025-09-19T16:23:28.074624" }, "test_fastp_paired_end - stub": { "content": [ @@ -794,7 +749,7 @@ ], "6": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ], "html": [ [ @@ -842,27 +797,18 @@ ], "versions": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T13:49:51.679221" + "timestamp": "2025-09-11T09:55:14.414258" }, "test_fastp_single_end": { "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,c852d7a6dba5819e4ac8d9673bedcacc" - ] - ], [ [ { @@ -879,14 +825,14 @@ ], [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T13:43:18.834322" + "timestamp": "2025-09-19T16:23:08.469846" }, "test_fastp_single_end_trim_fail - stub": { "content": [ @@ -940,7 +886,7 @@ ], "6": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ], "html": [ [ @@ -991,15 +937,15 @@ ], "versions": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T14:05:36.898142" + "timestamp": "2025-09-11T09:55:23.871395" }, "test_fastp_paired_end_trim_fail - stub": { "content": [ @@ -1060,7 +1006,7 @@ ], "6": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ], "html": [ [ @@ -1118,15 +1064,15 @@ ], "versions": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T14:05:49.212847" + "timestamp": "2025-09-11T09:55:28.399328" }, "fastp test_fastp_interleaved": { "content": [ @@ -1140,35 +1086,17 @@ ] ], [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,b24e0624df5cc0b11cd5ba21b726fb22" - ] - ], - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T13:43:38.910832" + "timestamp": "2025-09-19T16:23:16.479494" }, "test_fastp_single_end_trim_fail": { "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,9a7ee180f000e8d00c7fb67f06293eb5" - ] - ], [ [ { @@ -1191,26 +1119,17 @@ ], [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T13:43:48.22378" + "timestamp": "2025-09-19T16:23:20.299076" }, "test_fastp_paired_end_qc_only": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,623064a45912dac6f2b64e3f2e9901df" - ] - ], [ ], @@ -1230,14 +1149,14 @@ ], [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T13:44:36.334938" + "timestamp": "2025-09-19T16:23:40.113724" }, "test_fastp_paired_end_qc_only - stub": { "content": [ @@ -1279,7 +1198,7 @@ ], "6": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ], "html": [ [ @@ -1318,14 +1237,14 @@ ], "versions": [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + "versions.yml:md5,c4974822658d02533e660fae343f281b" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-07-05T14:31:27.096468" + "timestamp": "2025-09-11T09:55:46.696419" } } \ No newline at end of file diff --git a/modules/nf-core/fastp/tests/tags.yml b/modules/nf-core/fastp/tests/tags.yml deleted file mode 100644 index c1afcce7..00000000 --- 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 f9f54ee9..00000000 --- a/modules/nf-core/fastqc/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -channels: - - conda-forge - - bioconda -dependencies: - - bioconda::fastqc=0.12.1 diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf deleted file mode 100644 index 23e16634..00000000 --- a/modules/nf-core/fastqc/main.nf +++ /dev/null @@ -1,64 +0,0 @@ -process FASTQC { - tag "${meta.id}" - label 'process_medium' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/fastqc:0.12.1--hdfd78af_0' : - 'biocontainers/fastqc:0.12.1--hdfd78af_0' }" - - input: - tuple val(meta), path(reads) - - output: - tuple val(meta), path("*.html"), emit: html - tuple val(meta), path("*.zip") , emit: zip - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - // Make list of old name and new name pairs to use for renaming in the bash while loop - def old_new_pairs = reads instanceof Path || reads.size() == 1 ? [[ reads, "${prefix}.${reads.extension}" ]] : reads.withIndex().collect { entry, index -> [ entry, "${prefix}_${index + 1}.${entry.extension}" ] } - def rename_to = old_new_pairs*.join(' ').join(' ') - def renamed_files = old_new_pairs.collect{ _old_name, new_name -> new_name }.join(' ') - - // The total amount of allocated RAM by FastQC is equal to the number of threads defined (--threads) time the amount of RAM defined (--memory) - // https://github.com/s-andrews/FastQC/blob/1faeea0412093224d7f6a07f777fad60a5650795/fastqc#L211-L222 - // Dividing the task.memory by task.cpu allows to stick to requested amount of RAM in the label - def memory_in_mb = task.memory ? task.memory.toUnit('MB') / task.cpus : null - // FastQC memory value allowed range (100 - 10000) - def fastqc_memory = memory_in_mb > 10000 ? 10000 : (memory_in_mb < 100 ? 100 : memory_in_mb) - - """ - printf "%s %s\\n" ${rename_to} | while read old_name new_name; do - [ -f "\${new_name}" ] || ln -s \$old_name \$new_name - done - - fastqc \\ - ${args} \\ - --threads ${task.cpus} \\ - --memory ${fastqc_memory} \\ - ${renamed_files} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) - END_VERSIONS - """ - - stub: - def prefix = task.ext.prefix ?: "${meta.id}" - """ - touch ${prefix}.html - touch ${prefix}.zip - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) - END_VERSIONS - """ -} diff --git a/modules/nf-core/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml deleted file mode 100644 index c8d9d025..00000000 --- a/modules/nf-core/fastqc/meta.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: fastqc -description: Run FastQC on sequenced reads -keywords: - - quality control - - qc - - adapters - - fastq -tools: - - fastqc: - description: | - FastQC gives general quality metrics about your reads. - It provides information about the quality score distribution - across your reads, the per base sequence content (%A/C/G/T). - - You get information about adapter contamination and other - overrepresented sequences. - homepage: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/ - documentation: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/ - licence: ["GPL-2.0-only"] - identifier: biotools:fastqc -input: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FastQ files of size 1 and 2 for single-end and paired-end data, - respectively. - ontologies: [] -output: - html: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.html": - type: file - description: FastQC report - pattern: "*_{fastqc.html}" - ontologies: [] - zip: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.zip": - type: file - description: FastQC report archive - pattern: "*_{fastqc.zip}" - ontologies: [] - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML -authors: - - "@drpatelh" - - "@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 deleted file mode 100644 index e9d79a07..00000000 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ /dev/null @@ -1,309 +0,0 @@ -nextflow_process { - - name "Test Process FASTQC" - script "../main.nf" - process "FASTQC" - - tag "modules" - tag "modules_nfcore" - tag "fastqc" - - test("sarscov2 single-end [fastq]") { - - when { - process { - """ - input[0] = Channel.of([ - [ id: 'test', single_end:true ], - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/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[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } - ) - } - } - - test("sarscov2 paired-end [fastq]") { - - when { - process { - """ - input[0] = Channel.of([ - [id: 'test', single_end: false], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, - { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, - { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, - { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, - { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } - ) - } - } - - test("sarscov2 interleaved [fastq]") { - - when { - process { - """ - input[0] = Channel.of([ - [id: 'test', single_end: false], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } - ) - } - } - - test("sarscov2 paired-end [bam]") { - - when { - process { - """ - input[0] = Channel.of([ - [id: 'test', single_end: false], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } - ) - } - } - - test("sarscov2 multiple [fastq]") { - - when { - process { - """ - input[0] = Channel.of([ - [id: 'test', single_end: false], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) ] - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, - { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, - { assert process.out.html[0][1][2] ==~ ".*/test_3_fastqc.html" }, - { assert process.out.html[0][1][3] ==~ ".*/test_4_fastqc.html" }, - { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, - { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, - { assert process.out.zip[0][1][2] ==~ ".*/test_3_fastqc.zip" }, - { assert process.out.zip[0][1][3] ==~ ".*/test_4_fastqc.zip" }, - { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][2]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][3]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } - ) - } - } - - test("sarscov2 custom_prefix") { - - when { - process { - """ - input[0] = Channel.of([ - [ id:'mysample', single_end:true ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert process.out.html[0][1] ==~ ".*/mysample_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/mysample_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } - ) - } - } - - test("sarscov2 single-end [fastq] - stub") { - - options "-stub" - when { - process { - """ - input[0] = Channel.of([ - [ id: 'test', single_end:true ], - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("sarscov2 paired-end [fastq] - stub") { - - options "-stub" - when { - process { - """ - input[0] = Channel.of([ - [id: 'test', single_end: false], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("sarscov2 interleaved [fastq] - stub") { - - options "-stub" - when { - process { - """ - input[0] = Channel.of([ - [id: 'test', single_end: false], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("sarscov2 paired-end [bam] - stub") { - - options "-stub" - when { - process { - """ - input[0] = Channel.of([ - [id: 'test', single_end: false], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("sarscov2 multiple [fastq] - stub") { - - options "-stub" - when { - process { - """ - input[0] = Channel.of([ - [id: 'test', single_end: false], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) ] - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("sarscov2 custom_prefix - stub") { - - options "-stub" - when { - process { - """ - input[0] = Channel.of([ - [ id:'mysample', single_end:true ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } -} diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap deleted file mode 100644 index d5db3092..00000000 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ /dev/null @@ -1,392 +0,0 @@ -{ - "sarscov2 custom_prefix": { - "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:02:16.374038" - }, - "sarscov2 single-end [fastq] - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": true - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": true - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ], - "html": [ - [ - { - "id": "test", - "single_end": true - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ], - "zip": [ - [ - { - "id": "test", - "single_end": true - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:02:24.993809" - }, - "sarscov2 custom_prefix - stub": { - "content": [ - { - "0": [ - [ - { - "id": "mysample", - "single_end": true - }, - "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "mysample", - "single_end": true - }, - "mysample.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ], - "html": [ - [ - { - "id": "mysample", - "single_end": true - }, - "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ], - "zip": [ - [ - { - "id": "mysample", - "single_end": true - }, - "mysample.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:03:10.93942" - }, - "sarscov2 interleaved [fastq]": { - "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:01:42.355718" - }, - "sarscov2 paired-end [bam]": { - "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:01:53.276274" - }, - "sarscov2 multiple [fastq]": { - "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:02:05.527626" - }, - "sarscov2 paired-end [fastq]": { - "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:01:31.188871" - }, - "sarscov2 paired-end [fastq] - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ], - "html": [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ], - "zip": [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:02:34.273566" - }, - "sarscov2 multiple [fastq] - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ], - "html": [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ], - "zip": [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:03:02.304411" - }, - "sarscov2 single-end [fastq]": { - "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:01:19.095607" - }, - "sarscov2 interleaved [fastq] - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ], - "html": [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ], - "zip": [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:02:44.640184" - }, - "sarscov2 paired-end [bam] - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ], - "html": [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ], - "zip": [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:02:53.550742" - } -} \ No newline at end of file diff --git a/modules/nf-core/md5sum/tests/nextflow.config b/modules/nf-core/md5sum/tests/nextflow.config index de999064..4acada55 100644 --- a/modules/nf-core/md5sum/tests/nextflow.config +++ b/modules/nf-core/md5sum/tests/nextflow.config @@ -1,2 +1,2 @@ -process.ext.args = '--tag' \ No newline at end of file +process.ext.args = '--tag' diff --git a/modules/nf-core/mosdepth/environment.yml b/modules/nf-core/mosdepth/environment.yml index e9379873..97c93721 100644 --- a/modules/nf-core/mosdepth/environment.yml +++ b/modules/nf-core/mosdepth/environment.yml @@ -1,6 +1,10 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: # renovate: datasource=conda depName=bioconda/mosdepth - - mosdepth=0.3.8 + - mosdepth=0.3.11=h0ec343a_1 + # renovate: datasource=conda depName=bioconda/htslib + - htslib=1.22.1 diff --git a/modules/nf-core/mosdepth/main.nf b/modules/nf-core/mosdepth/main.nf index 3631cdb3..8166ac0b 100644 --- a/modules/nf-core/mosdepth/main.nf +++ b/modules/nf-core/mosdepth/main.nf @@ -4,8 +4,8 @@ process MOSDEPTH { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mosdepth:0.3.8--hd299d5a_0' : - 'biocontainers/mosdepth:0.3.8--hd299d5a_0'}" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/00/00d32b53160c26794959da7303ee6e2107afd4d292060c9f287b0af1fddbd847/data' : + 'community.wave.seqera.io/library/mosdepth_htslib:0f58993cb6d93294'}" input: tuple val(meta), path(bam), path(bai), path(bed), path(fasta) diff --git a/modules/nf-core/mosdepth/meta.yml b/modules/nf-core/mosdepth/meta.yml index dc783c90..af1ea44a 100644 --- a/modules/nf-core/mosdepth/meta.yml +++ b/modules/nf-core/mosdepth/meta.yml @@ -23,14 +23,17 @@ input: type: file description: Input BAM/CRAM file pattern: "*.{bam,cram}" + ontologies: [] - bai: type: file description: Index for BAM/CRAM file pattern: "*.{bai,crai}" + ontologies: [] - bed: type: file description: BED file with intersected intervals pattern: "*.{bed}" + ontologies: [] - - meta2: type: map description: | @@ -40,9 +43,10 @@ input: type: file description: Reference genome FASTA file pattern: "*.{fa,fasta}" + ontologies: [] output: - - global_txt: - - meta: + global_txt: + - - meta: type: map description: | Groovy Map containing sample information @@ -51,8 +55,9 @@ output: type: file description: Text file with global cumulative coverage distribution pattern: "*.{global.dist.txt}" - - summary_txt: - - meta: + ontologies: [] + summary_txt: + - - meta: type: map description: | Groovy Map containing sample information @@ -61,8 +66,9 @@ output: type: file description: Text file with summary mean depths per chromosome and regions pattern: "*.{summary.txt}" - - regions_txt: - - meta: + ontologies: [] + regions_txt: + - - meta: type: map description: | Groovy Map containing sample information @@ -71,8 +77,9 @@ output: type: file description: Text file with region cumulative coverage distribution pattern: "*.{region.dist.txt}" - - per_base_d4: - - meta: + ontologies: [] + per_base_d4: + - - meta: type: map description: | Groovy Map containing sample information @@ -81,8 +88,9 @@ output: type: file description: D4 file with per-base coverage pattern: "*.{per-base.d4}" - - per_base_bed: - - meta: + ontologies: [] + per_base_bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -91,8 +99,9 @@ output: type: file description: BED file with per-base coverage pattern: "*.{per-base.bed.gz}" - - per_base_csi: - - meta: + ontologies: [] + per_base_csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -101,8 +110,9 @@ output: type: file description: Index file for BED file with per-base coverage pattern: "*.{per-base.bed.gz.csi}" - - regions_bed: - - meta: + ontologies: [] + regions_bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -111,8 +121,9 @@ output: type: file description: BED file with per-region coverage pattern: "*.{regions.bed.gz}" - - regions_csi: - - meta: + ontologies: [] + regions_csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -121,8 +132,9 @@ output: type: file description: Index file for BED file with per-region coverage pattern: "*.{regions.bed.gz.csi}" - - quantized_bed: - - meta: + ontologies: [] + quantized_bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -131,8 +143,9 @@ output: type: file description: BED file with binned coverage pattern: "*.{quantized.bed.gz}" - - quantized_csi: - - meta: + ontologies: [] + quantized_csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -141,8 +154,9 @@ output: type: file description: Index file for BED file with binned coverage pattern: "*.{quantized.bed.gz.csi}" - - thresholds_bed: - - meta: + ontologies: [] + thresholds_bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -152,8 +166,9 @@ output: description: BED file with the number of bases in each region that are covered at or above each threshold pattern: "*.{thresholds.bed.gz}" - - thresholds_csi: - - meta: + ontologies: [] + thresholds_csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -162,11 +177,14 @@ output: type: file description: Index file for BED file with threshold coverage pattern: "*.{thresholds.bed.gz.csi}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/mosdepth/mosdepth.diff b/modules/nf-core/mosdepth/mosdepth.diff index 53e32f2b..59a3adf0 100644 --- a/modules/nf-core/mosdepth/mosdepth.diff +++ b/modules/nf-core/mosdepth/mosdepth.diff @@ -1,11 +1,11 @@ -Changes in module 'nf-core/mosdepth' +Changes in component 'nf-core/mosdepth' 'modules/nf-core/mosdepth/environment.yml' is unchanged 'modules/nf-core/mosdepth/meta.yml' is unchanged Changes in 'mosdepth/main.nf': --- modules/nf-core/mosdepth/main.nf +++ modules/nf-core/mosdepth/main.nf @@ -8,8 +8,7 @@ - 'biocontainers/mosdepth:0.3.8--hd299d5a_0'}" + 'community.wave.seqera.io/library/mosdepth_htslib:0f58993cb6d93294'}" input: - tuple val(meta), path(bam), path(bai), path(bed) @@ -18,7 +18,6 @@ Changes in 'mosdepth/main.nf': 'modules/nf-core/mosdepth/tests/main.nf.test.snap' is unchanged 'modules/nf-core/mosdepth/tests/threshold.config' is unchanged 'modules/nf-core/mosdepth/tests/quantized.config' is unchanged -'modules/nf-core/mosdepth/tests/tags.yml' is unchanged 'modules/nf-core/mosdepth/tests/main.nf.test' is unchanged 'modules/nf-core/mosdepth/tests/window.config' is unchanged ************************************************************ diff --git a/modules/nf-core/mosdepth/tests/main.nf.test.snap b/modules/nf-core/mosdepth/tests/main.nf.test.snap index c604540b..a063dd9f 100644 --- a/modules/nf-core/mosdepth/tests/main.nf.test.snap +++ b/modules/nf-core/mosdepth/tests/main.nf.test.snap @@ -39,7 +39,7 @@ ] ], "12": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ], "2": [ [ @@ -222,15 +222,15 @@ ] ], "versions": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-04-29T13:33:16.953408231" + "timestamp": "2025-09-23T13:06:13.219131" }, "homo_sapiens - cram, crai, bed": { "content": [ @@ -260,7 +260,7 @@ ], "12": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ], "2": [ [ @@ -289,7 +289,7 @@ "id": "test", "single_end": true }, - "test.per-base.bed.gz.csi:md5,6f322dc9250522a701bd68bd18fa8294" + "test.per-base.bed.gz.csi:md5,6adccf94ed775c9f53422e3e9c7af27f" ] ], "6": [ @@ -307,7 +307,7 @@ "id": "test", "single_end": true }, - "test.regions.bed.gz.csi:md5,e7df086f0a36e88ca231e143d43bd3f9" + "test.regions.bed.gz.csi:md5,c33ac5c86370039463796f01434fc0e4" ] ], "8": [ @@ -340,7 +340,7 @@ "id": "test", "single_end": true }, - "test.per-base.bed.gz.csi:md5,6f322dc9250522a701bd68bd18fa8294" + "test.per-base.bed.gz.csi:md5,6adccf94ed775c9f53422e3e9c7af27f" ] ], "per_base_d4": [ @@ -367,7 +367,7 @@ "id": "test", "single_end": true }, - "test.regions.bed.gz.csi:md5,e7df086f0a36e88ca231e143d43bd3f9" + "test.regions.bed.gz.csi:md5,c33ac5c86370039463796f01434fc0e4" ] ], "regions_txt": [ @@ -395,15 +395,15 @@ ], "versions": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-04-29T13:32:50.160217828" + "timestamp": "2025-09-23T13:22:14.011309" }, "homo_sapiens - bam, bai, [] - quantized": { "content": [ @@ -433,7 +433,7 @@ ], "12": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ], "2": [ @@ -456,7 +456,7 @@ "id": "test", "single_end": true }, - "test.per-base.bed.gz.csi:md5,6f322dc9250522a701bd68bd18fa8294" + "test.per-base.bed.gz.csi:md5,6adccf94ed775c9f53422e3e9c7af27f" ] ], "6": [ @@ -480,7 +480,7 @@ "id": "test", "single_end": true }, - "test.quantized.bed.gz.csi:md5,4f69e6ace50206a2768be66ded3a56f0" + "test.quantized.bed.gz.csi:md5,c0a3176a59010639455a4aefb3f247ef" ] ], "global_txt": [ @@ -507,7 +507,7 @@ "id": "test", "single_end": true }, - "test.per-base.bed.gz.csi:md5,6f322dc9250522a701bd68bd18fa8294" + "test.per-base.bed.gz.csi:md5,6adccf94ed775c9f53422e3e9c7af27f" ] ], "per_base_d4": [ @@ -528,7 +528,7 @@ "id": "test", "single_end": true }, - "test.quantized.bed.gz.csi:md5,4f69e6ace50206a2768be66ded3a56f0" + "test.quantized.bed.gz.csi:md5,c0a3176a59010639455a4aefb3f247ef" ] ], "regions_bed": [ @@ -556,15 +556,15 @@ ], "versions": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-04-29T13:33:01.164885111" + "timestamp": "2025-09-23T13:22:22.818082" }, "homo_sapiens - bam, bai, bed": { "content": [ @@ -594,7 +594,7 @@ ], "12": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ], "2": [ [ @@ -623,7 +623,7 @@ "id": "test", "single_end": true }, - "test.per-base.bed.gz.csi:md5,6f322dc9250522a701bd68bd18fa8294" + "test.per-base.bed.gz.csi:md5,6adccf94ed775c9f53422e3e9c7af27f" ] ], "6": [ @@ -641,7 +641,7 @@ "id": "test", "single_end": true }, - "test.regions.bed.gz.csi:md5,e7df086f0a36e88ca231e143d43bd3f9" + "test.regions.bed.gz.csi:md5,c33ac5c86370039463796f01434fc0e4" ] ], "8": [ @@ -674,7 +674,7 @@ "id": "test", "single_end": true }, - "test.per-base.bed.gz.csi:md5,6f322dc9250522a701bd68bd18fa8294" + "test.per-base.bed.gz.csi:md5,6adccf94ed775c9f53422e3e9c7af27f" ] ], "per_base_d4": [ @@ -701,7 +701,7 @@ "id": "test", "single_end": true }, - "test.regions.bed.gz.csi:md5,e7df086f0a36e88ca231e143d43bd3f9" + "test.regions.bed.gz.csi:md5,c33ac5c86370039463796f01434fc0e4" ] ], "regions_txt": [ @@ -729,15 +729,15 @@ ], "versions": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-04-29T13:32:39.071657456" + "timestamp": "2025-09-23T13:22:04.449943" }, "homo_sapiens - bam, bai, [] - window": { "content": [ @@ -767,7 +767,7 @@ ], "12": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ], "2": [ [ @@ -796,7 +796,7 @@ "id": "test", "single_end": true }, - "test.per-base.bed.gz.csi:md5,6f322dc9250522a701bd68bd18fa8294" + "test.per-base.bed.gz.csi:md5,6adccf94ed775c9f53422e3e9c7af27f" ] ], "6": [ @@ -814,7 +814,7 @@ "id": "test", "single_end": true }, - "test.regions.bed.gz.csi:md5,2a30bcb7f5c7632136b3efce24723970" + "test.regions.bed.gz.csi:md5,17a2cbe22a948d7c004b90a1f28347a1" ] ], "8": [ @@ -847,7 +847,7 @@ "id": "test", "single_end": true }, - "test.per-base.bed.gz.csi:md5,6f322dc9250522a701bd68bd18fa8294" + "test.per-base.bed.gz.csi:md5,6adccf94ed775c9f53422e3e9c7af27f" ] ], "per_base_d4": [ @@ -874,7 +874,7 @@ "id": "test", "single_end": true }, - "test.regions.bed.gz.csi:md5,2a30bcb7f5c7632136b3efce24723970" + "test.regions.bed.gz.csi:md5,17a2cbe22a948d7c004b90a1f28347a1" ] ], "regions_txt": [ @@ -902,15 +902,15 @@ ], "versions": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-04-29T13:32:55.631776118" + "timestamp": "2025-09-23T13:22:18.435089" }, "homo_sapiens - bam, bai, []": { "content": [ @@ -940,7 +940,7 @@ ], "12": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ], "2": [ @@ -963,7 +963,7 @@ "id": "test", "single_end": true }, - "test.per-base.bed.gz.csi:md5,6f322dc9250522a701bd68bd18fa8294" + "test.per-base.bed.gz.csi:md5,6adccf94ed775c9f53422e3e9c7af27f" ] ], "6": [ @@ -1002,7 +1002,7 @@ "id": "test", "single_end": true }, - "test.per-base.bed.gz.csi:md5,6f322dc9250522a701bd68bd18fa8294" + "test.per-base.bed.gz.csi:md5,6adccf94ed775c9f53422e3e9c7af27f" ] ], "per_base_d4": [ @@ -1039,15 +1039,15 @@ ], "versions": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-04-29T13:32:33.642125299" + "timestamp": "2025-09-23T13:21:59.785829" }, "homo_sapiens - cram, crai, []": { "content": [ @@ -1077,7 +1077,7 @@ ], "12": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ], "2": [ @@ -1100,7 +1100,7 @@ "id": "test", "single_end": true }, - "test.per-base.bed.gz.csi:md5,6f322dc9250522a701bd68bd18fa8294" + "test.per-base.bed.gz.csi:md5,6adccf94ed775c9f53422e3e9c7af27f" ] ], "6": [ @@ -1139,7 +1139,7 @@ "id": "test", "single_end": true }, - "test.per-base.bed.gz.csi:md5,6f322dc9250522a701bd68bd18fa8294" + "test.per-base.bed.gz.csi:md5,6adccf94ed775c9f53422e3e9c7af27f" ] ], "per_base_d4": [ @@ -1176,15 +1176,15 @@ ], "versions": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-04-29T13:32:44.704920941" + "timestamp": "2025-09-23T13:22:09.294766" }, "homo_sapiens - bam, bai, bed - thresholds": { "content": [ @@ -1222,11 +1222,11 @@ "id": "test", "single_end": true }, - "test.thresholds.bed.gz.csi:md5,219414a0751185adb98d2235d83ea055" + "test.thresholds.bed.gz.csi:md5,2c52ab89e7496af475de3cb2ca04c7b3" ] ], "12": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ], "2": [ [ @@ -1255,7 +1255,7 @@ "id": "test", "single_end": true }, - "test.per-base.bed.gz.csi:md5,6f322dc9250522a701bd68bd18fa8294" + "test.per-base.bed.gz.csi:md5,6adccf94ed775c9f53422e3e9c7af27f" ] ], "6": [ @@ -1273,7 +1273,7 @@ "id": "test", "single_end": true }, - "test.regions.bed.gz.csi:md5,e7df086f0a36e88ca231e143d43bd3f9" + "test.regions.bed.gz.csi:md5,c33ac5c86370039463796f01434fc0e4" ] ], "8": [ @@ -1306,7 +1306,7 @@ "id": "test", "single_end": true }, - "test.per-base.bed.gz.csi:md5,6f322dc9250522a701bd68bd18fa8294" + "test.per-base.bed.gz.csi:md5,6adccf94ed775c9f53422e3e9c7af27f" ] ], "per_base_d4": [ @@ -1333,7 +1333,7 @@ "id": "test", "single_end": true }, - "test.regions.bed.gz.csi:md5,e7df086f0a36e88ca231e143d43bd3f9" + "test.regions.bed.gz.csi:md5,c33ac5c86370039463796f01434fc0e4" ] ], "regions_txt": [ @@ -1369,18 +1369,18 @@ "id": "test", "single_end": true }, - "test.thresholds.bed.gz.csi:md5,219414a0751185adb98d2235d83ea055" + "test.thresholds.bed.gz.csi:md5,2c52ab89e7496af475de3cb2ca04c7b3" ] ], "versions": [ - "versions.yml:md5,87634e525fb18990cd98fe1080ad72ce" + "versions.yml:md5,74f14bf8082836f8dc941b8c77c176fb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-04-29T13:33:06.737266831" + "timestamp": "2025-09-23T13:22:27.300204" } } \ No newline at end of file diff --git a/modules/nf-core/mosdepth/tests/quantized.config b/modules/nf-core/mosdepth/tests/quantized.config index 63c55350..c208a4ce 100644 --- a/modules/nf-core/mosdepth/tests/quantized.config +++ b/modules/nf-core/mosdepth/tests/quantized.config @@ -1,3 +1,3 @@ process { ext.args = "--quantize 0:1:4:100:200" -} \ No newline at end of file +} diff --git a/modules/nf-core/mosdepth/tests/tags.yml b/modules/nf-core/mosdepth/tests/tags.yml deleted file mode 100644 index 5cd2e08e..00000000 --- a/modules/nf-core/mosdepth/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -mosdepth: - - "modules/nf-core/mosdepth/**" diff --git a/modules/nf-core/mosdepth/tests/threshold.config b/modules/nf-core/mosdepth/tests/threshold.config index 9b014ddf..3302da60 100644 --- a/modules/nf-core/mosdepth/tests/threshold.config +++ b/modules/nf-core/mosdepth/tests/threshold.config @@ -1,3 +1,3 @@ process { ext.args = "--thresholds 1,10,20,30" -} \ No newline at end of file +} diff --git a/modules/nf-core/mosdepth/tests/window.config b/modules/nf-core/mosdepth/tests/window.config index 7a0f755c..7f0d08d6 100644 --- a/modules/nf-core/mosdepth/tests/window.config +++ b/modules/nf-core/mosdepth/tests/window.config @@ -1,3 +1,3 @@ process { ext.args = "--by 100" -} \ No newline at end of file +} diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index 812fc4c5..d02016a0 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::multiqc=1.29 + - bioconda::multiqc=1.32 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 0ac3c369..335afccc 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -3,11 +3,11 @@ process MULTIQC { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.29--pyhdfd78af_0' : - 'biocontainers/multiqc:1.29--pyhdfd78af_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/8c/8c6c120d559d7ee04c7442b61ad7cf5a9e8970be5feefb37d68eeaa60c1034eb/data' : + 'community.wave.seqera.io/library/multiqc:1.32--d58f60e4deb769bf' }" input: - path multiqc_files, stageAs: "?/*" + path multiqc_files, stageAs: "?/*" path(multiqc_config) path(extra_multiqc_config) path(multiqc_logo) @@ -15,10 +15,10 @@ process MULTIQC { path(sample_names) output: - path "*multiqc_report.html", emit: report - path "*_data" , emit: data - path "*_plots" , optional:true, emit: plots - path "versions.yml" , emit: versions + path "*.html" , emit: report + path "*_data" , emit: data + path "*_plots" , optional:true, emit: plots + tuple val("${task.process}"), val('multiqc'), eval('multiqc --version | sed "s/.* //g"'), topic: versions, emit: versions_multiqc when: task.ext.when == null || task.ext.when @@ -26,38 +26,30 @@ process MULTIQC { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ? "--filename ${task.ext.prefix}.html" : '' - def config = multiqc_config ? "--config $multiqc_config" : '' - def extra_config = extra_multiqc_config ? "--config $extra_multiqc_config" : '' + def config = multiqc_config ? "--config ${multiqc_config}" : '' + def extra_config = extra_multiqc_config ? "--config ${extra_multiqc_config}" : '' def logo = multiqc_logo ? "--cl-config 'custom_logo: \"${multiqc_logo}\"'" : '' def replace = replace_names ? "--replace-names ${replace_names}" : '' def samples = sample_names ? "--sample-names ${sample_names}" : '' """ multiqc \\ --force \\ - $args \\ - $config \\ - $prefix \\ - $extra_config \\ - $logo \\ - $replace \\ - $samples \\ + ${args} \\ + ${config} \\ + ${prefix} \\ + ${extra_config} \\ + ${logo} \\ + ${replace} \\ + ${samples} \\ . - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - multiqc: \$( multiqc --version | sed -e "s/multiqc, version //g" ) - END_VERSIONS """ stub: """ mkdir multiqc_data + touch multiqc_data/.stub mkdir multiqc_plots touch multiqc_report.html - cat <<-END_VERSIONS > versions.yml - "${task.process}": - multiqc: \$( multiqc --version | sed -e "s/multiqc, version //g" ) - END_VERSIONS """ } diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml index b16c1879..4a908611 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -1,6 +1,6 @@ name: multiqc -description: Aggregate results from bioinformatics analyses across many samples into - a single report +description: Aggregate results from bioinformatics analyses across many samples + into a single report keywords: - QC - bioinformatics tools @@ -15,57 +15,85 @@ tools: licence: ["GPL-3.0-or-later"] identifier: biotools:multiqc input: - - - multiqc_files: - type: file - description: | - List of reports / files recognised by MultiQC, for example the html and zip output of FastQC - - - multiqc_config: - type: file - description: Optional config yml for MultiQC - pattern: "*.{yml,yaml}" - - - extra_multiqc_config: - type: file - description: Second optional config yml for MultiQC. Will override common sections - in multiqc_config. - pattern: "*.{yml,yaml}" - - - multiqc_logo: - type: file - description: Optional logo file for MultiQC - pattern: "*.{png}" - - - replace_names: + - multiqc_files: + type: file + description: | + List of reports / files recognised by MultiQC, for example the html and zip output of FastQC + ontologies: [] + - multiqc_config: + type: file + description: Optional config yml for MultiQC + pattern: "*.{yml,yaml}" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML + - extra_multiqc_config: + type: file + description: Second optional config yml for MultiQC. Will override common + sections in multiqc_config. + pattern: "*.{yml,yaml}" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML + - multiqc_logo: + type: file + description: Optional logo file for MultiQC + pattern: "*.{png}" + ontologies: [] + - replace_names: + type: file + description: | + Optional two-column sample renaming file. First column a set of + patterns, second column a set of corresponding replacements. Passed via + MultiQC's `--replace-names` option. + pattern: "*.{tsv}" + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + - sample_names: + type: file + description: | + Optional TSV file with headers, passed to the MultiQC --sample_names + argument. + pattern: "*.{tsv}" + ontologies: + - edam: http://edamontology.org/format_3475 # TSV +output: + report: + - "*.html": type: file - description: | - Optional two-column sample renaming file. First column a set of - patterns, second column a set of corresponding replacements. Passed via - MultiQC's `--replace-names` option. - pattern: "*.{tsv}" - - - sample_names: + description: MultiQC report file + pattern: ".html" + ontologies: [] + data: + - "*_data": + type: directory + description: MultiQC data dir + pattern: "multiqc_data" + plots: + - "*_plots": type: file - description: | - Optional TSV file with headers, passed to the MultiQC --sample_names - argument. - pattern: "*.{tsv}" -output: - - report: - - "*multiqc_report.html": - type: file - description: MultiQC report file - pattern: "multiqc_report.html" - - data: - - "*_data": - type: directory - description: MultiQC data dir - pattern: "multiqc_data" - - plots: - - "*_plots": - type: file - description: Plots created by MultiQC - pattern: "*_data" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + description: Plots created by MultiQC + pattern: "*_data" + ontologies: [] + versions_multiqc: + - - ${task.process}: + type: string + description: The process the versions were collected from + - multiqc: + type: string + description: The tool name + - multiqc --version | sed "s/.* //g: + type: string + description: The command used to generate the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - multiqc: + type: string + description: The tool name + - multiqc --version | sed "s/.* //g: + type: string + description: The command used to generate the version of the tool authors: - "@abhi18av" - "@bunop" diff --git a/modules/nf-core/multiqc/tests/custom_prefix.config b/modules/nf-core/multiqc/tests/custom_prefix.config new file mode 100644 index 00000000..b30b1358 --- /dev/null +++ b/modules/nf-core/multiqc/tests/custom_prefix.config @@ -0,0 +1,5 @@ +process { + withName: 'MULTIQC' { + ext.prefix = "custom_prefix" + } +} diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index 33316a7d..d1ae8b06 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -30,7 +30,33 @@ nextflow_process { { assert process.success }, { assert process.out.report[0] ==~ ".*/multiqc_report.html" }, { assert process.out.data[0] ==~ ".*/multiqc_data" }, - { assert snapshot(process.out.versions).match("multiqc_versions_single") } + { assert snapshot(process.out.findAll { key, val -> key.startsWith("versions")}).match() } + ) + } + + } + + test("sarscov2 single-end [fastqc] - custom prefix") { + config "./custom_prefix.config" + + when { + process { + """ + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true)) + input[1] = [] + input[2] = [] + input[3] = [] + input[4] = [] + input[5] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.report[0] ==~ ".*/custom_prefix.html" }, + { assert process.out.data[0] ==~ ".*/custom_prefix_data" } ) } @@ -56,7 +82,7 @@ nextflow_process { { assert process.success }, { assert process.out.report[0] ==~ ".*/multiqc_report.html" }, { assert process.out.data[0] ==~ ".*/multiqc_data" }, - { assert snapshot(process.out.versions).match("multiqc_versions_config") } + { assert snapshot(process.out.findAll { key, val -> key.startsWith("versions")}).match() } ) } } @@ -84,7 +110,7 @@ nextflow_process { { assert snapshot(process.out.report.collect { file(it).getName() } + process.out.data.collect { file(it).getName() } + process.out.plots.collect { file(it).getName() } + - process.out.versions ).match("multiqc_stub") } + process.out.findAll { key, val -> key.startsWith("versions")} ).match() } ) } diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index 25caea81..f76049d3 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -1,41 +1,61 @@ { - "multiqc_versions_single": { + "sarscov2 single-end [fastqc]": { "content": [ - [ - "versions.yml:md5,c1fe644a37468f6dae548d98bc72c2c1" - ] + { + "versions_multiqc": [ + [ + "MULTIQC", + "multiqc", + "1.32" + ] + ] + } ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.2" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-03T09:17:40.895950399" + "timestamp": "2025-10-28T15:27:59.813370216" }, - "multiqc_stub": { + "sarscov2 single-end [fastqc] - stub": { "content": [ [ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,c1fe644a37468f6dae548d98bc72c2c1" + { + "versions_multiqc": [ + [ + "MULTIQC", + "multiqc", + "1.32" + ] + ] + } ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.2" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-03T09:18:16.875131107" + "timestamp": "2025-10-28T15:30:48.963962021" }, - "multiqc_versions_config": { + "sarscov2 single-end [fastqc] [config]": { "content": [ - [ - "versions.yml:md5,c1fe644a37468f6dae548d98bc72c2c1" - ] + { + "versions_multiqc": [ + [ + "MULTIQC", + "multiqc", + "1.32" + ] + ] + } ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.2" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-03T09:18:03.624717769" + "timestamp": "2025-10-28T15:29:30.664969334" } } \ No newline at end of file diff --git a/modules/nf-core/picard/collecthsmetrics/environment.yml b/modules/nf-core/picard/collecthsmetrics/environment.yml index 1d715d56..b4ac4fe0 100644 --- a/modules/nf-core/picard/collecthsmetrics/environment.yml +++ b/modules/nf-core/picard/collecthsmetrics/environment.yml @@ -1,5 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::picard=3.3.0 + # renovate: datasource=conda depName=bioconda/picard + - bioconda::picard=3.4.0 diff --git a/modules/nf-core/picard/collecthsmetrics/main.nf b/modules/nf-core/picard/collecthsmetrics/main.nf index 6eb9aa0c..a1dc56d8 100644 --- a/modules/nf-core/picard/collecthsmetrics/main.nf +++ b/modules/nf-core/picard/collecthsmetrics/main.nf @@ -4,8 +4,8 @@ process PICARD_COLLECTHSMETRICS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/picard:3.3.0--hdfd78af_0' : - 'biocontainers/picard:3.3.0--hdfd78af_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/08/0861295baa7c01fc593a9da94e82b44a729dcaf8da92be8e565da109aa549b25/data' : + 'community.wave.seqera.io/library/picard:3.4.0--e9963040df0a9bf6' }" input: tuple val(meta), path(bam), path(bai), path(bait_intervals, stageAs: "bait/*"), path(target_intervals, stageAs: "target/*") ,path(fasta) ,path(fai) ,path(dict) @@ -33,14 +33,14 @@ process PICARD_COLLECTHSMETRICS { def bait_intervallist_cmd = "" if (bait_intervals =~ /.(bed|bed.gz)$/){ bait_interval_list = bait_intervals.toString().replaceAll(/.(bed|bed.gz)$/, ".interval_list") - bait_intervallist_cmd = "picard -Xmx${avail_mem}M BedToIntervalList --INPUT ${bait_intervals} --OUTPUT ${bait_interval_list} --SEQUENCE_DICTIONARY ${dict} --TMP_DIR ." + bait_intervallist_cmd = "picard -Xmx${avail_mem}M BedToIntervalList --INPUT ${bait_intervals} --OUTPUT ${bait_interval_list} --SEQUENCE_DICTIONARY ${dict} --TMP_DIR ." } def target_interval_list = target_intervals def target_intervallist_cmd = "" if (target_intervals =~ /.(bed|bed.gz)$/){ target_interval_list = target_intervals.toString().replaceAll(/.(bed|bed.gz)$/, ".interval_list") - target_intervallist_cmd = "picard -Xmx${avail_mem}M BedToIntervalList --INPUT ${target_intervals} --OUTPUT ${target_interval_list} --SEQUENCE_DICTIONARY ${dict} --TMP_DIR ." + target_intervallist_cmd = "picard -Xmx${avail_mem}M BedToIntervalList --INPUT ${target_intervals} --OUTPUT ${target_interval_list} --SEQUENCE_DICTIONARY ${dict} --TMP_DIR ." } diff --git a/modules/nf-core/picard/collecthsmetrics/meta.yml b/modules/nf-core/picard/collecthsmetrics/meta.yml index ea6deda3..511ae959 100644 --- a/modules/nf-core/picard/collecthsmetrics/meta.yml +++ b/modules/nf-core/picard/collecthsmetrics/meta.yml @@ -28,51 +28,68 @@ input: type: file description: An aligned BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - bai: type: file description: Optional aligned BAM/CRAM/SAM file index pattern: "*.{bai,crai,sai}" + ontologies: [] - bait_intervals: type: file description: An interval file that contains the locations of the baits used. pattern: "*.{interval_list,bed,bed.gz}" + ontologies: [] - target_intervals: type: file description: An interval file that contains the locations of the targets. pattern: "*.{interval_list,bed,bed.gz}" + ontologies: [] - - meta2: type: map description: | Groovy Map containing reference information e.g. [ id:'genome' ] - - fasta: + - ref: type: file description: | A reference file to calculate dropout metrics measuring reduced representation of reads. Optional input. - pattern: "*.{fa,fasta,fna}" + pattern: "*.{fa,fa.gz,fasta,fasta.gz,fna,fna.gz}" + ontologies: [] - - meta3: type: map description: | Groovy Map containing reference information e.g. [ id:'genome' ] - - fai: + - ref_fai: type: file - description: Index of FASTA file. Only needed when fasta is supplied. + description: Index of reference file. Only needed when reference is supplied. pattern: "*.fai" + ontologies: [] - - meta4: type: map description: | Groovy Map containing reference information e.g. [ id:'genome' ] - - dict: + - ref_dict: type: file description: Sequence dictionary of FASTA file. Only needed when bed interval lists are supplied. pattern: "*.dict" + ontologies: [] + - - meta5: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - ref_gzi: + type: file + description: Index of reference file. Only needed when gzipped reference is supplied. + pattern: "*.gzi" + ontologies: [] output: - - metrics: - - meta: + metrics: + - - meta: type: map description: | Groovy Map containing sample information @@ -81,11 +98,14 @@ output: type: file description: Alignment metrics files generated by picard pattern: "*_{metrics}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@projectoriented" - "@matthdsm" diff --git a/modules/nf-core/picard/collecthsmetrics/picard-collecthsmetrics.diff b/modules/nf-core/picard/collecthsmetrics/picard-collecthsmetrics.diff index 951f60dc..5907d093 100644 --- a/modules/nf-core/picard/collecthsmetrics/picard-collecthsmetrics.diff +++ b/modules/nf-core/picard/collecthsmetrics/picard-collecthsmetrics.diff @@ -1,23 +1,49 @@ -Changes in module 'nf-core/picard/collecthsmetrics' +Changes in component 'nf-core/picard/collecthsmetrics' 'modules/nf-core/picard/collecthsmetrics/environment.yml' is unchanged 'modules/nf-core/picard/collecthsmetrics/meta.yml' is unchanged Changes in 'picard/collecthsmetrics/main.nf': --- modules/nf-core/picard/collecthsmetrics/main.nf +++ modules/nf-core/picard/collecthsmetrics/main.nf -@@ -8,10 +8,7 @@ - 'biocontainers/picard:3.3.0--hdfd78af_0' }" +@@ -8,11 +8,7 @@ + 'community.wave.seqera.io/library/picard:3.4.0--e9963040df0a9bf6' }" input: - tuple val(meta), path(bam), path(bai), path(bait_intervals, stageAs: "baits/*"), path(target_intervals, stageAs: 'targets/*') -- tuple val(meta2), path(fasta) -- tuple val(meta3), path(fai) -- tuple val(meta4), path(dict) +- tuple val(meta2), path(ref) +- tuple val(meta3), path(ref_fai) +- tuple val(meta4), path(ref_dict) +- tuple val(meta5), path(ref_gzi) // ref_gzi only required if reference is gzipped + tuple val(meta), path(bam), path(bai), path(bait_intervals, stageAs: "bait/*"), path(target_intervals, stageAs: "target/*") ,path(fasta) ,path(fai) ,path(dict) output: tuple val(meta), path("*_metrics") , emit: metrics +@@ -24,7 +20,7 @@ + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" +- def reference = ref ? "--REFERENCE_SEQUENCE ${ref}" : "" ++ def reference = fasta ? "--REFERENCE_SEQUENCE ${fasta}" : "" + + def avail_mem = 3072 + if (!task.memory) { +@@ -37,14 +33,14 @@ + def bait_intervallist_cmd = "" + if (bait_intervals =~ /.(bed|bed.gz)$/){ + bait_interval_list = bait_intervals.toString().replaceAll(/.(bed|bed.gz)$/, ".interval_list") +- bait_intervallist_cmd = "picard -Xmx${avail_mem}M BedToIntervalList --INPUT ${bait_intervals} --OUTPUT ${bait_interval_list} --SEQUENCE_DICTIONARY ${ref_dict} --TMP_DIR ." ++ bait_intervallist_cmd = "picard -Xmx${avail_mem}M BedToIntervalList --INPUT ${bait_intervals} --OUTPUT ${bait_interval_list} --SEQUENCE_DICTIONARY ${dict} --TMP_DIR ." + } + + def target_interval_list = target_intervals + def target_intervallist_cmd = "" + if (target_intervals =~ /.(bed|bed.gz)$/){ + target_interval_list = target_intervals.toString().replaceAll(/.(bed|bed.gz)$/, ".interval_list") +- target_intervallist_cmd = "picard -Xmx${avail_mem}M BedToIntervalList --INPUT ${target_intervals} --OUTPUT ${target_interval_list} --SEQUENCE_DICTIONARY ${ref_dict} --TMP_DIR ." ++ target_intervallist_cmd = "picard -Xmx${avail_mem}M BedToIntervalList --INPUT ${target_intervals} --OUTPUT ${target_interval_list} --SEQUENCE_DICTIONARY ${dict} --TMP_DIR ." + } + + 'modules/nf-core/picard/collecthsmetrics/tests/main.nf.test.snap' is unchanged -'modules/nf-core/picard/collecthsmetrics/tests/tags.yml' is unchanged 'modules/nf-core/picard/collecthsmetrics/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/picard/collecthsmetrics/tests/main.nf.test b/modules/nf-core/picard/collecthsmetrics/tests/main.nf.test index 3bbbd8cf..fe40e7b0 100644 --- a/modules/nf-core/picard/collecthsmetrics/tests/main.nf.test +++ b/modules/nf-core/picard/collecthsmetrics/tests/main.nf.test @@ -24,6 +24,45 @@ nextflow_process { input[1] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[2] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true)] input[3] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true)] + input[4] = [[:],[]] + """ + } + } + + then { + def size = path(process.out.metrics[0][1]).size() + def lines = path(process.out.metrics[0][1]).readLines()[0..100] + lines.remove(3) // remove timestamp + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.metrics[0][1]).name, + size, + lines, + process.out.versions + ).match() + } + ) + } + + } + + test("sarscov2 - bam - gzippedfa") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/picard/baits.interval_list', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/picard/targets.interval_list', checkIfExists: true) + ] + input[1] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true)] + input[2] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz.fai', checkIfExists: true)] + input[3] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true)] + input[4] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz.gzi', checkIfExists: true)] """ } } @@ -63,6 +102,7 @@ nextflow_process { input[1] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[2] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true)] input[3] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true)] + input[4] = [[:],[]] """ } } @@ -91,6 +131,7 @@ nextflow_process { input[1] = [[:],[]] input[2] = [[:],[]] input[3] = [[:],[]] + input[4] = [[:],[]] """ } } @@ -129,6 +170,7 @@ nextflow_process { input[1] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[2] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true)] input[3] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true)] + input[4] = [[:],[]] """ } } @@ -167,6 +209,7 @@ nextflow_process { input[1] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[2] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true)] input[3] = [[id:'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true)] + input[4] = [[:],[]] """ } } @@ -188,4 +231,4 @@ nextflow_process { } } -} \ No newline at end of file +} diff --git a/modules/nf-core/picard/collecthsmetrics/tests/main.nf.test.snap b/modules/nf-core/picard/collecthsmetrics/tests/main.nf.test.snap index 4d21710a..11b0f7c5 100644 --- a/modules/nf-core/picard/collecthsmetrics/tests/main.nf.test.snap +++ b/modules/nf-core/picard/collecthsmetrics/tests/main.nf.test.snap @@ -106,26 +106,142 @@ "89\t0\t0" ], [ - "versions.yml:md5,bdfc7b655683e7b66f68e894c999805e" + "versions.yml:md5,533cf1e35d36fdacbb762f5df2e1b322" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-10-18T10:51:55.291163084" + "timestamp": "2025-09-15T10:37:59.62099935" + }, + "sarscov2 - bam - gzippedfa": { + "content": [ + "test.CollectHsMetrics.coverage_metrics", + 3601, + [ + "## htsjdk.samtools.metrics.StringHeader", + "# CollectHsMetrics --BAIT_INTERVALS baits/baits.interval_list --TARGET_INTERVALS targets/targets.interval_list --INPUT test.paired_end.sorted.bam --OUTPUT test.CollectHsMetrics.coverage_metrics --REFERENCE_SEQUENCE genome.fasta.gz --METRIC_ACCUMULATION_LEVEL ALL_READS --NEAR_DISTANCE 250 --MINIMUM_MAPPING_QUALITY 20 --MINIMUM_BASE_QUALITY 20 --CLIP_OVERLAPPING_READS true --INCLUDE_INDELS false --COVERAGE_CAP 200 --SAMPLE_SIZE 10000 --ALLELE_FRACTION 0.001 --ALLELE_FRACTION 0.005 --ALLELE_FRACTION 0.01 --ALLELE_FRACTION 0.02 --ALLELE_FRACTION 0.05 --ALLELE_FRACTION 0.1 --ALLELE_FRACTION 0.2 --ALLELE_FRACTION 0.3 --ALLELE_FRACTION 0.5 --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", + "", + "## METRICS CLASS\tpicard.analysis.directed.HsMetrics", + "BAIT_SET\tBAIT_TERRITORY\tBAIT_DESIGN_EFFICIENCY\tON_BAIT_BASES\tNEAR_BAIT_BASES\tOFF_BAIT_BASES\tPCT_SELECTED_BASES\tPCT_OFF_BAIT\tON_BAIT_VS_SELECTED\tMEAN_BAIT_COVERAGE\tPCT_USABLE_BASES_ON_BAIT\tPCT_USABLE_BASES_ON_TARGET\tFOLD_ENRICHMENT\tHS_LIBRARY_SIZE\tHS_PENALTY_10X\tHS_PENALTY_20X\tHS_PENALTY_30X\tHS_PENALTY_40X\tHS_PENALTY_50X\tHS_PENALTY_100X\tTARGET_TERRITORY\tGENOME_SIZE\tTOTAL_READS\tPF_READS\tPF_BASES\tPF_UNIQUE_READS\tPF_UQ_READS_ALIGNED\tPF_BASES_ALIGNED\tPF_UQ_BASES_ALIGNED\tON_TARGET_BASES\tPCT_PF_READS\tPCT_PF_UQ_READS\tPCT_PF_UQ_READS_ALIGNED\tMEAN_TARGET_COVERAGE\tMEDIAN_TARGET_COVERAGE\tMAX_TARGET_COVERAGE\tMIN_TARGET_COVERAGE\tZERO_CVG_TARGETS_PCT\tPCT_EXC_DUPE\tPCT_EXC_ADAPTER\tPCT_EXC_MAPQ\tPCT_EXC_BASEQ\tPCT_EXC_OVERLAP\tPCT_EXC_OFF_TARGET\tFOLD_80_BASE_PENALTY\tPCT_TARGET_BASES_1X\tPCT_TARGET_BASES_2X\tPCT_TARGET_BASES_10X\tPCT_TARGET_BASES_20X\tPCT_TARGET_BASES_30X\tPCT_TARGET_BASES_40X\tPCT_TARGET_BASES_50X\tPCT_TARGET_BASES_100X\tPCT_TARGET_BASES_250X\tPCT_TARGET_BASES_500X\tPCT_TARGET_BASES_1000X\tPCT_TARGET_BASES_2500X\tPCT_TARGET_BASES_5000X\tPCT_TARGET_BASES_10000X\tPCT_TARGET_BASES_25000X\tPCT_TARGET_BASES_50000X\tPCT_TARGET_BASES_100000X\tAT_DROPOUT\tGC_DROPOUT\tHET_SNP_SENSITIVITY\tHET_SNP_Q\tSAMPLE\tLIBRARY\tREAD_GROUP", + "baits\t158\t0.594937\t725\t3985\t22691\t0.171892\t0.828108\t0.153928\t4.588608\t0.026225\t0.000181\t4.995204\t\t0\t0\t0\t0\t0\t0\t94\t29829\t200\t200\t27645\t200\t197\t27401\t27401\t5\t1\t1\t0.985\t0.053191\t0\t1\t0\t0.75\t0\t0\t0.005438\t0.054487\t0.259516\t0.680377\t?\t0.053191\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t76.595745\t23.404255\t0.015734\t0\t\t\t", + "", + "## HISTOGRAM\tjava.lang.Integer", + "coverage_or_base_quality\thigh_quality_coverage_count\tunfiltered_baseq_count", + "0\t89\t0", + "1\t5\t0", + "2\t0\t0", + "3\t0\t0", + "4\t0\t0", + "5\t0\t0", + "6\t0\t0", + "7\t0\t0", + "8\t0\t0", + "9\t0\t0", + "10\t0\t0", + "11\t0\t0", + "12\t0\t0", + "13\t0\t0", + "14\t0\t5", + "15\t0\t0", + "16\t0\t0", + "17\t0\t0", + "18\t0\t0", + "19\t0\t0", + "20\t0\t0", + "21\t0\t1", + "22\t0\t0", + "23\t0\t0", + "24\t0\t0", + "25\t0\t0", + "26\t0\t0", + "27\t0\t0", + "28\t0\t0", + "29\t0\t0", + "30\t0\t0", + "31\t0\t0", + "32\t0\t1", + "33\t0\t0", + "34\t0\t0", + "35\t0\t0", + "36\t0\t3", + "37\t0\t0", + "38\t0\t0", + "39\t0\t0", + "40\t0\t0", + "41\t0\t0", + "42\t0\t0", + "43\t0\t0", + "44\t0\t0", + "45\t0\t0", + "46\t0\t0", + "47\t0\t0", + "48\t0\t0", + "49\t0\t0", + "50\t0\t0", + "51\t0\t0", + "52\t0\t0", + "53\t0\t0", + "54\t0\t0", + "55\t0\t0", + "56\t0\t0", + "57\t0\t0", + "58\t0\t0", + "59\t0\t0", + "60\t0\t0", + "61\t0\t0", + "62\t0\t0", + "63\t0\t0", + "64\t0\t0", + "65\t0\t0", + "66\t0\t0", + "67\t0\t0", + "68\t0\t0", + "69\t0\t0", + "70\t0\t0", + "71\t0\t0", + "72\t0\t0", + "73\t0\t0", + "74\t0\t0", + "75\t0\t0", + "76\t0\t0", + "77\t0\t0", + "78\t0\t0", + "79\t0\t0", + "80\t0\t0", + "81\t0\t0", + "82\t0\t0", + "83\t0\t0", + "84\t0\t0", + "85\t0\t0", + "86\t0\t0", + "87\t0\t0", + "88\t0\t0", + "89\t0\t0" + ], + [ + "versions.yml:md5,533cf1e35d36fdacbb762f5df2e1b322" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-15T10:37:32.831030701" }, "versions": { "content": [ [ - "versions.yml:md5,bdfc7b655683e7b66f68e894c999805e" + "versions.yml:md5,533cf1e35d36fdacbb762f5df2e1b322" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-10-18T10:51:30.748857589" + "timestamp": "2025-09-15T10:37:42.492104283" }, "sarscov2 - bam - samebed": { "content": [ @@ -234,14 +350,14 @@ "89\t0\t0" ], [ - "versions.yml:md5,bdfc7b655683e7b66f68e894c999805e" + "versions.yml:md5,533cf1e35d36fdacbb762f5df2e1b322" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-10-18T10:52:43.803456585" + "timestamp": "2025-09-15T10:38:39.302597954" }, "sarscov2 - bam": { "content": [ @@ -350,14 +466,14 @@ "89\t0\t0" ], [ - "versions.yml:md5,bdfc7b655683e7b66f68e894c999805e" + "versions.yml:md5,533cf1e35d36fdacbb762f5df2e1b322" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-10-18T10:51:01.881343611" + "timestamp": "2025-09-15T10:37:15.861292725" }, "sarscov2 - bam - bed": { "content": [ @@ -466,13 +582,13 @@ "89\t0\t0" ], [ - "versions.yml:md5,bdfc7b655683e7b66f68e894c999805e" + "versions.yml:md5,533cf1e35d36fdacbb762f5df2e1b322" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-10-18T10:52:22.830749735" + "timestamp": "2025-09-15T10:38:18.912909604" } } \ No newline at end of file diff --git a/modules/nf-core/picard/collecthsmetrics/tests/tags.yml b/modules/nf-core/picard/collecthsmetrics/tests/tags.yml deleted file mode 100644 index b353f95e..00000000 --- a/modules/nf-core/picard/collecthsmetrics/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -picard/collecthsmetrics: - - "modules/nf-core/picard/collecthsmetrics/**" diff --git a/modules/nf-core/picard/collectmultiplemetrics/environment.yml b/modules/nf-core/picard/collectmultiplemetrics/environment.yml index 1d715d56..b4ac4fe0 100644 --- a/modules/nf-core/picard/collectmultiplemetrics/environment.yml +++ b/modules/nf-core/picard/collectmultiplemetrics/environment.yml @@ -1,5 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::picard=3.3.0 + # renovate: datasource=conda depName=bioconda/picard + - bioconda::picard=3.4.0 diff --git a/modules/nf-core/picard/collectmultiplemetrics/main.nf b/modules/nf-core/picard/collectmultiplemetrics/main.nf index de390df1..e4d74998 100644 --- a/modules/nf-core/picard/collectmultiplemetrics/main.nf +++ b/modules/nf-core/picard/collectmultiplemetrics/main.nf @@ -4,8 +4,8 @@ process PICARD_COLLECTMULTIPLEMETRICS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/picard:3.3.0--hdfd78af_0' : - 'biocontainers/picard:3.3.0--hdfd78af_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/08/0861295baa7c01fc593a9da94e82b44a729dcaf8da92be8e565da109aa549b25/data' : + 'community.wave.seqera.io/library/picard:3.4.0--e9963040df0a9bf6' }" input: tuple val(meta) , path(bam), path(bai) ,path(fasta) ,path(fai) diff --git a/modules/nf-core/picard/collectmultiplemetrics/meta.yml b/modules/nf-core/picard/collectmultiplemetrics/meta.yml index 2b7981ac..3f0bf610 100644 --- a/modules/nf-core/picard/collectmultiplemetrics/meta.yml +++ b/modules/nf-core/picard/collectmultiplemetrics/meta.yml @@ -26,10 +26,12 @@ input: type: file description: SAM/BAM/CRAM file pattern: "*.{sam,bam,cram}" + ontologies: [] - bai: type: file description: Optional SAM/BAM/CRAM file index pattern: "*.{sai,bai,crai}" + ontologies: [] - - meta2: type: map description: | @@ -38,6 +40,7 @@ input: - fasta: type: file description: Genome fasta file + ontologies: [] - - meta3: type: map description: | @@ -47,9 +50,10 @@ input: type: file description: Index of FASTA file. Only needed when fasta is supplied. pattern: "*.fai" + ontologies: [] output: - - metrics: - - meta: + metrics: + - - meta: type: map description: | Groovy Map containing sample information @@ -58,8 +62,9 @@ output: type: file description: Alignment metrics files generated by picard pattern: "*_{metrics}" - - pdf: - - meta: + ontologies: [] + pdf: + - - meta: type: map description: | Groovy Map containing sample information @@ -68,11 +73,14 @@ output: type: file description: PDF plots of metrics pattern: "*.{pdf}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" maintainers: diff --git a/modules/nf-core/picard/collectmultiplemetrics/picard-collectmultiplemetrics.diff b/modules/nf-core/picard/collectmultiplemetrics/picard-collectmultiplemetrics.diff index 6c796d52..489076fb 100644 --- a/modules/nf-core/picard/collectmultiplemetrics/picard-collectmultiplemetrics.diff +++ b/modules/nf-core/picard/collectmultiplemetrics/picard-collectmultiplemetrics.diff @@ -1,11 +1,11 @@ -Changes in module 'nf-core/picard/collectmultiplemetrics' +Changes in component 'nf-core/picard/collectmultiplemetrics' 'modules/nf-core/picard/collectmultiplemetrics/environment.yml' is unchanged 'modules/nf-core/picard/collectmultiplemetrics/meta.yml' is unchanged Changes in 'picard/collectmultiplemetrics/main.nf': --- modules/nf-core/picard/collectmultiplemetrics/main.nf +++ modules/nf-core/picard/collectmultiplemetrics/main.nf @@ -8,9 +8,7 @@ - 'biocontainers/picard:3.3.0--hdfd78af_0' }" + 'community.wave.seqera.io/library/picard:3.4.0--e9963040df0a9bf6' }" input: - tuple val(meta) , path(bam), path(bai) diff --git a/modules/nf-core/picard/collectmultiplemetrics/tests/main.nf.test.snap b/modules/nf-core/picard/collectmultiplemetrics/tests/main.nf.test.snap index a76a3237..5a1de114 100644 --- a/modules/nf-core/picard/collectmultiplemetrics/tests/main.nf.test.snap +++ b/modules/nf-core/picard/collectmultiplemetrics/tests/main.nf.test.snap @@ -16,14 +16,14 @@ "test.CollectMultipleMetrics.read_length_histogram.pdf" ], [ - "versions.yml:md5,791db2719d57a997f8253b3ba97d62d7" + "versions.yml:md5,aca7ca0dc0012ee97698236828ba242a" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-10-18T11:05:12.591021247" + "timestamp": "2025-09-15T10:41:26.126816186" }, "test-picard-collectmultiplemetrics-cram": { "content": [ @@ -42,14 +42,14 @@ "test.CollectMultipleMetrics.read_length_histogram.pdf" ], [ - "versions.yml:md5,791db2719d57a997f8253b3ba97d62d7" + "versions.yml:md5,aca7ca0dc0012ee97698236828ba242a" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-10-18T11:06:08.499320579" + "timestamp": "2025-09-15T10:41:50.933556225" }, "test-picard-collectmultiplemetrics-nofasta": { "content": [ @@ -68,13 +68,13 @@ "test.CollectMultipleMetrics.read_length_histogram.pdf" ], [ - "versions.yml:md5,791db2719d57a997f8253b3ba97d62d7" + "versions.yml:md5,aca7ca0dc0012ee97698236828ba242a" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-10-18T11:05:42.117033611" + "timestamp": "2025-09-15T10:41:38.213084333" } } \ No newline at end of file diff --git a/modules/nf-core/picard/collectwgsmetrics/environment.yml b/modules/nf-core/picard/collectwgsmetrics/environment.yml index 13265842..186d4a4b 100644 --- a/modules/nf-core/picard/collectwgsmetrics/environment.yml +++ b/modules/nf-core/picard/collectwgsmetrics/environment.yml @@ -1,6 +1,9 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::picard=3.3.0 + # renovate: datasource=conda depName=bioconda/picard + - bioconda::picard=3.4.0 - conda-forge::r-base=4.4.1 diff --git a/modules/nf-core/picard/collectwgsmetrics/main.nf b/modules/nf-core/picard/collectwgsmetrics/main.nf index 468e1c8a..cd4a7711 100644 --- a/modules/nf-core/picard/collectwgsmetrics/main.nf +++ b/modules/nf-core/picard/collectwgsmetrics/main.nf @@ -4,8 +4,8 @@ process PICARD_COLLECTWGSMETRICS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/picard:3.3.0--hdfd78af_0' : - 'biocontainers/picard:3.3.0--hdfd78af_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/08/0861295baa7c01fc593a9da94e82b44a729dcaf8da92be8e565da109aa549b25/data' : + 'community.wave.seqera.io/library/picard:3.4.0--e9963040df0a9bf6' }" input: tuple val(meta), path(bam), path(bai) ,path(fasta) ,path(fai) diff --git a/modules/nf-core/picard/collectwgsmetrics/meta.yml b/modules/nf-core/picard/collectwgsmetrics/meta.yml index bb748080..a27e0a88 100644 --- a/modules/nf-core/picard/collectwgsmetrics/meta.yml +++ b/modules/nf-core/picard/collectwgsmetrics/meta.yml @@ -26,10 +26,12 @@ input: type: file description: Aligned reads file pattern: "*.{bam, cram}" + ontologies: [] - bai: type: file description: (Optional) Aligned reads file index pattern: "*.{bai,crai}" + ontologies: [] - - meta2: type: map description: | @@ -39,6 +41,7 @@ input: type: file description: Genome fasta file pattern: "*.{fa,fasta,fna}" + ontologies: [] - - meta3: type: map description: | @@ -48,13 +51,15 @@ input: type: file description: Genome fasta file index pattern: "*.{fai}" - - - intervallist: - type: file - description: Picard Interval List. Defines which contigs to include. Can be - generated from a BED file with GATK BedToIntervalList. + ontologies: [] + - intervallist: + type: file + description: Picard Interval List. Defines which contigs to include. Can be generated + from a BED file with GATK BedToIntervalList. + ontologies: [] output: - - metrics: - - meta: + metrics: + - - meta: type: map description: | Groovy Map containing sample information @@ -63,11 +68,14 @@ output: type: file description: Alignment metrics files generated by picard pattern: "*_{metrics}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@flowuenne" diff --git a/modules/nf-core/picard/collectwgsmetrics/picard-collectwgsmetrics.diff b/modules/nf-core/picard/collectwgsmetrics/picard-collectwgsmetrics.diff index 98d4a1eb..bf843c60 100644 --- a/modules/nf-core/picard/collectwgsmetrics/picard-collectwgsmetrics.diff +++ b/modules/nf-core/picard/collectwgsmetrics/picard-collectwgsmetrics.diff @@ -1,11 +1,11 @@ -Changes in module 'nf-core/picard/collectwgsmetrics' +Changes in component 'nf-core/picard/collectwgsmetrics' 'modules/nf-core/picard/collectwgsmetrics/environment.yml' is unchanged 'modules/nf-core/picard/collectwgsmetrics/meta.yml' is unchanged Changes in 'picard/collectwgsmetrics/main.nf': --- modules/nf-core/picard/collectwgsmetrics/main.nf +++ modules/nf-core/picard/collectwgsmetrics/main.nf @@ -8,9 +8,7 @@ - 'biocontainers/picard:3.3.0--hdfd78af_0' }" + 'community.wave.seqera.io/library/picard:3.4.0--e9963040df0a9bf6' }" input: - tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/picard/collectwgsmetrics/tests/main.nf.test.snap b/modules/nf-core/picard/collectwgsmetrics/tests/main.nf.test.snap index 1958fcde..d944d96b 100644 --- a/modules/nf-core/picard/collectwgsmetrics/tests/main.nf.test.snap +++ b/modules/nf-core/picard/collectwgsmetrics/tests/main.nf.test.snap @@ -3,26 +3,26 @@ "content": [ true, [ - "versions.yml:md5,9927db69fdd55176be5cdbd427d000c2" + "versions.yml:md5,0fa1034c5831e54d4534e6052a8d6b61" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-10-18T10:15:18.13771243" + "timestamp": "2025-09-15T10:45:19.40801445" }, "test-picard-collectwgsmetrics": { "content": [ true, [ - "versions.yml:md5,9927db69fdd55176be5cdbd427d000c2" + "versions.yml:md5,0fa1034c5831e54d4534e6052a8d6b61" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-10-18T10:14:57.786056996" + "timestamp": "2025-09-15T10:44:57.689335695" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/cat/environment.yml b/modules/nf-core/samtools/cat/environment.yml index 62054fc9..89e12a64 100644 --- a/modules/nf-core/samtools/cat/environment.yml +++ b/modules/nf-core/samtools/cat/environment.yml @@ -4,5 +4,7 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/cat/main.nf b/modules/nf-core/samtools/cat/main.nf index 61349e59..d200e501 100644 --- a/modules/nf-core/samtools/cat/main.nf +++ b/modules/nf-core/samtools/cat/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_CAT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta), path(input_files, stageAs: "?/*") diff --git a/modules/nf-core/samtools/cat/meta.yml b/modules/nf-core/samtools/cat/meta.yml index dfb0f78c..a2ac0e21 100644 --- a/modules/nf-core/samtools/cat/meta.yml +++ b/modules/nf-core/samtools/cat/meta.yml @@ -27,9 +27,10 @@ input: type: file description: BAM/CRAM files pattern: "*.{bam,cram}" + ontologies: [] output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -38,8 +39,9 @@ output: type: file description: Concatenated BAM file pattern: "*.{bam}" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -48,11 +50,14 @@ output: type: file description: Concatenated CRAM file pattern: "*.{cram}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@matthdsm" maintainers: diff --git a/modules/nf-core/samtools/cat/samtools-cat.diff b/modules/nf-core/samtools/cat/samtools-cat.diff index 71c58b5c..5b6918b7 100644 --- a/modules/nf-core/samtools/cat/samtools-cat.diff +++ b/modules/nf-core/samtools/cat/samtools-cat.diff @@ -1,4 +1,4 @@ -Changes in module 'nf-core/samtools/cat' +Changes in component 'nf-core/samtools/cat' 'modules/nf-core/samtools/cat/environment.yml' is unchanged 'modules/nf-core/samtools/cat/meta.yml' is unchanged Changes in 'samtools/cat/main.nf': @@ -19,6 +19,5 @@ Changes in 'samtools/cat/main.nf': when: 'modules/nf-core/samtools/cat/tests/main.nf.test.snap' is unchanged -'modules/nf-core/samtools/cat/tests/tags.yml' is unchanged 'modules/nf-core/samtools/cat/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/samtools/cat/tests/main.nf.test.snap b/modules/nf-core/samtools/cat/tests/main.nf.test.snap index 9af1b19f..2143309a 100644 --- a/modules/nf-core/samtools/cat/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/cat/tests/main.nf.test.snap @@ -14,14 +14,14 @@ "bams_stub_versions": { "content": [ [ - "versions.yml:md5,cd29ae344fb0bf5635527e1cb7a7d95f" + "versions.yml:md5,99695cce7873f354da5dd8660522cb4f" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-09-16T07:47:51.511914861" + "timestamp": "2025-09-10T13:02:09.79415" }, "bams_bam": { "content": [ @@ -58,13 +58,13 @@ "bams_versions": { "content": [ [ - "versions.yml:md5,cd29ae344fb0bf5635527e1cb7a7d95f" + "versions.yml:md5,99695cce7873f354da5dd8660522cb4f" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-09-16T08:47:50.783194958" + "timestamp": "2025-09-10T13:02:05.668116" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/cat/tests/tags.yml b/modules/nf-core/samtools/cat/tests/tags.yml deleted file mode 100644 index 97605570..00000000 --- a/modules/nf-core/samtools/cat/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/cat: - - "modules/nf-core/samtools/cat/**" diff --git a/modules/nf-core/samtools/convert/environment.yml b/modules/nf-core/samtools/convert/environment.yml index 62054fc9..89e12a64 100644 --- a/modules/nf-core/samtools/convert/environment.yml +++ b/modules/nf-core/samtools/convert/environment.yml @@ -4,5 +4,7 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/convert/main.nf b/modules/nf-core/samtools/convert/main.nf index 9942d052..f4003d42 100644 --- a/modules/nf-core/samtools/convert/main.nf +++ b/modules/nf-core/samtools/convert/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_CONVERT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta), path(input), path(index), path(fasta), path(fai) @@ -48,7 +48,7 @@ process SAMTOOLS_CONVERT { """ touch ${prefix}.${output_extension} - touch ${prefix}.${index_extension} + touch ${prefix}.${output_extension}.${index_extension} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/samtools/convert/meta.yml b/modules/nf-core/samtools/convert/meta.yml index d5bfa161..519812ab 100644 --- a/modules/nf-core/samtools/convert/meta.yml +++ b/modules/nf-core/samtools/convert/meta.yml @@ -26,10 +26,12 @@ input: type: file description: BAM/CRAM file pattern: "*.{bam,cram}" + ontologies: [] - index: type: file description: BAM/CRAM index file pattern: "*.{bai,crai}" + ontologies: [] - - meta2: type: map description: | @@ -39,6 +41,7 @@ input: type: file description: Reference file to create the CRAM file pattern: "*.{fasta,fa}" + ontologies: [] - - meta3: type: map description: | @@ -48,9 +51,10 @@ input: type: file description: Reference index file to create the CRAM file pattern: "*.{fai}" + ontologies: [] output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -59,8 +63,9 @@ output: type: file description: filtered/converted BAM file pattern: "*{.bam}" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -69,8 +74,9 @@ output: type: file description: filtered/converted CRAM file pattern: "*{cram}" - - bai: - - meta: + ontologies: [] + bai: + - - meta: type: map description: | Groovy Map containing sample information @@ -79,8 +85,9 @@ output: type: file description: filtered/converted BAM index pattern: "*{.bai}" - - crai: - - meta: + ontologies: [] + crai: + - - meta: type: map description: | Groovy Map containing sample information @@ -89,11 +96,14 @@ output: type: file description: filtered/converted CRAM index pattern: "*{.crai}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" - "@maxulysse" diff --git a/modules/nf-core/samtools/convert/samtools-convert.diff b/modules/nf-core/samtools/convert/samtools-convert.diff index 67617c31..bd28d5da 100644 --- a/modules/nf-core/samtools/convert/samtools-convert.diff +++ b/modules/nf-core/samtools/convert/samtools-convert.diff @@ -1,11 +1,11 @@ -Changes in module 'nf-core/samtools/convert' +Changes in component 'nf-core/samtools/convert' 'modules/nf-core/samtools/convert/environment.yml' is unchanged 'modules/nf-core/samtools/convert/meta.yml' is unchanged Changes in 'samtools/convert/main.nf': --- modules/nf-core/samtools/convert/main.nf +++ modules/nf-core/samtools/convert/main.nf @@ -8,9 +8,7 @@ - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: - tuple val(meta), path(input), path(index) @@ -17,6 +17,5 @@ Changes in 'samtools/convert/main.nf': tuple val(meta), path("*.bam") , emit: bam , optional: true 'modules/nf-core/samtools/convert/tests/main.nf.test.snap' is unchanged -'modules/nf-core/samtools/convert/tests/tags.yml' is unchanged 'modules/nf-core/samtools/convert/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/samtools/convert/tests/main.nf.test b/modules/nf-core/samtools/convert/tests/main.nf.test index 91a0c69e..cd603c53 100644 --- a/modules/nf-core/samtools/convert/tests/main.nf.test +++ b/modules/nf-core/samtools/convert/tests/main.nf.test @@ -74,7 +74,7 @@ nextflow_process { } test("sarscov2 - [bam, bai], fasta, fai - stub") { - + options "-stub" when { diff --git a/modules/nf-core/samtools/convert/tests/main.nf.test.snap b/modules/nf-core/samtools/convert/tests/main.nf.test.snap index a021254e..a9ef27e0 100644 --- a/modules/nf-core/samtools/convert/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/convert/tests/main.nf.test.snap @@ -22,26 +22,26 @@ "cram_to_bam_versions": { "content": [ [ - "versions.yml:md5,5bc6eb42ab2a1ea6661f8ee998467ad6" + "versions.yml:md5,13f74b35a5030e75c1e819b2cf602db8" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-09-16T07:52:35.516411351" + "timestamp": "2025-09-10T13:05:31.58641" }, "bam_to_cram_versions": { "content": [ [ - "versions.yml:md5,5bc6eb42ab2a1ea6661f8ee998467ad6" + "versions.yml:md5,13f74b35a5030e75c1e819b2cf602db8" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-09-16T07:52:24.694454205" + "timestamp": "2025-09-10T13:05:26.933516" }, "stub": { "content": [ @@ -67,11 +67,11 @@ "id": "test", "single_end": false }, - "test.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ - "versions.yml:md5,5bc6eb42ab2a1ea6661f8ee998467ad6" + "versions.yml:md5,13f74b35a5030e75c1e819b2cf602db8" ], "bai": [ @@ -85,7 +85,7 @@ "id": "test", "single_end": false }, - "test.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "cram": [ @@ -98,15 +98,15 @@ ] ], "versions": [ - "versions.yml:md5,5bc6eb42ab2a1ea6661f8ee998467ad6" + "versions.yml:md5,13f74b35a5030e75c1e819b2cf602db8" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-09-16T07:52:45.799885099" + "timestamp": "2025-09-10T13:05:36.333776" }, "bam_to_cram_index": { "content": [ diff --git a/modules/nf-core/samtools/convert/tests/tags.yml b/modules/nf-core/samtools/convert/tests/tags.yml deleted file mode 100644 index 030d5eb5..00000000 --- a/modules/nf-core/samtools/convert/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/convert: - - "modules/nf-core/samtools/convert/**" diff --git a/modules/nf-core/samtools/coverage/environment.yml b/modules/nf-core/samtools/coverage/environment.yml index 62054fc9..89e12a64 100644 --- a/modules/nf-core/samtools/coverage/environment.yml +++ b/modules/nf-core/samtools/coverage/environment.yml @@ -4,5 +4,7 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/coverage/main.nf b/modules/nf-core/samtools/coverage/main.nf index 11e347e8..e2adfddd 100644 --- a/modules/nf-core/samtools/coverage/main.nf +++ b/modules/nf-core/samtools/coverage/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_COVERAGE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta), path(input), path(input_index), path(fasta), path(fai) @@ -20,12 +20,17 @@ process SAMTOOLS_COVERAGE { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def reference = fasta ? "--reference ${fasta}" : "" + + if (input.name.endsWith('.cram') && (!fasta || !fai)) { + error "CRAM input file provided but no reference FASTA and/or FAI index for said reference, both are required for CRAM input." + } """ samtools \\ coverage \\ $args \\ -o ${prefix}.txt \\ - --reference ${fasta} \\ + $reference \\ $input cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/samtools/coverage/meta.yml b/modules/nf-core/samtools/coverage/meta.yml index fb9ba6f3..28dceb03 100644 --- a/modules/nf-core/samtools/coverage/meta.yml +++ b/modules/nf-core/samtools/coverage/meta.yml @@ -25,10 +25,12 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - input_index: type: file description: BAM/CRAM index file pattern: "*.{bai,crai}" + ontologies: [] - - meta2: type: map description: | @@ -38,6 +40,7 @@ input: type: file description: Reference genome file pattern: "*.{fa,fasta}" + ontologies: [] - - meta3: type: map description: | @@ -47,9 +50,10 @@ input: type: file description: Reference genome index file pattern: "*.fai" + ontologies: [] output: - - coverage: - - meta: + coverage: + - - meta: type: map description: | Groovy Map containing sample information @@ -59,11 +63,14 @@ output: description: Tabulated text containing the coverage at each position or region or an ASCII-art histogram (with --histogram). pattern: "*.txt" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@LouisLeNezet" maintainers: diff --git a/modules/nf-core/samtools/coverage/samtools-coverage.diff b/modules/nf-core/samtools/coverage/samtools-coverage.diff index 3b0e1f03..5dbbbd9e 100644 --- a/modules/nf-core/samtools/coverage/samtools-coverage.diff +++ b/modules/nf-core/samtools/coverage/samtools-coverage.diff @@ -1,11 +1,11 @@ -Changes in module 'nf-core/samtools/coverage' +Changes in component 'nf-core/samtools/coverage' 'modules/nf-core/samtools/coverage/environment.yml' is unchanged 'modules/nf-core/samtools/coverage/meta.yml' is unchanged Changes in 'samtools/coverage/main.nf': --- modules/nf-core/samtools/coverage/main.nf +++ modules/nf-core/samtools/coverage/main.nf @@ -8,9 +8,7 @@ - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: - tuple val(meta), path(input), path(input_index) @@ -17,6 +17,5 @@ Changes in 'samtools/coverage/main.nf': tuple val(meta), path("*.txt"), emit: coverage 'modules/nf-core/samtools/coverage/tests/main.nf.test.snap' is unchanged -'modules/nf-core/samtools/coverage/tests/tags.yml' is unchanged 'modules/nf-core/samtools/coverage/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/samtools/coverage/tests/main.nf.test b/modules/nf-core/samtools/coverage/tests/main.nf.test index 1e3ad5a4..ffd36109 100644 --- a/modules/nf-core/samtools/coverage/tests/main.nf.test +++ b/modules/nf-core/samtools/coverage/tests/main.nf.test @@ -20,12 +20,12 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) ]) input[1] = Channel.of([ - [ id:'fasta' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + [:], // meta map + [] ]) input[2] = Channel.of([ - [ id:'fai' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + [:], // meta map + [] ]) """ } @@ -69,6 +69,65 @@ nextflow_process { } } + test("test_samtools_coverage_cram_no_fasta") { + when { + process { + """ + input[0] = Channel.of([ + [id: 'test', single_end: false], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true) + ]) + input[1] = Channel.of([ + [:], // meta map + [] + ]) + input[2] = Channel.of([ + [ id:'fai' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert !process.success }, + { assert process.stdout.toString().contains("CRAM input file provided but no reference FASTA and/or FAI index for said reference, both are required for CRAM input.") }, + ) + } + } + + test("test_samtools_coverage_cram_no_fai") { + when { + process { + """ + input[0] = Channel.of([ + [id: 'test', single_end: false], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = Channel.of([ + [:], // meta map + [] + ]) + """ + } + } + + then { + assertAll( + { assert !process.success }, + { assert process.stdout.toString().contains("CRAM input file provided but no reference FASTA and/or FAI index for said reference, both are required for CRAM input.") }, + ) + } + } + + test("test_samtools_coverage_stub") { options "-stub" diff --git a/modules/nf-core/samtools/coverage/tests/main.nf.test.snap b/modules/nf-core/samtools/coverage/tests/main.nf.test.snap index b9ddb18d..68cc3697 100644 --- a/modules/nf-core/samtools/coverage/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/coverage/tests/main.nf.test.snap @@ -12,7 +12,7 @@ ] ], "1": [ - "versions.yml:md5,9c876b9db54dc710c87c404e4b28243c" + "versions.yml:md5,a457b33609ed582818fbe3bc2a20008a" ], "coverage": [ [ @@ -24,15 +24,15 @@ ] ], "versions": [ - "versions.yml:md5,9c876b9db54dc710c87c404e4b28243c" + "versions.yml:md5,a457b33609ed582818fbe3bc2a20008a" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-09-16T07:53:42.773351407" + "timestamp": "2025-09-10T13:06:14.846123" }, "test_samtools_coverage_bam": { "content": [ @@ -47,7 +47,7 @@ ] ], "1": [ - "versions.yml:md5,9c876b9db54dc710c87c404e4b28243c" + "versions.yml:md5,a457b33609ed582818fbe3bc2a20008a" ], "coverage": [ [ @@ -59,15 +59,15 @@ ] ], "versions": [ - "versions.yml:md5,9c876b9db54dc710c87c404e4b28243c" + "versions.yml:md5,a457b33609ed582818fbe3bc2a20008a" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-09-16T07:53:22.798338025" + "timestamp": "2025-09-10T13:06:06.18797" }, "test_samtools_coverage_cram": { "content": [ @@ -82,7 +82,7 @@ ] ], "1": [ - "versions.yml:md5,9c876b9db54dc710c87c404e4b28243c" + "versions.yml:md5,a457b33609ed582818fbe3bc2a20008a" ], "coverage": [ [ @@ -94,14 +94,14 @@ ] ], "versions": [ - "versions.yml:md5,9c876b9db54dc710c87c404e4b28243c" + "versions.yml:md5,a457b33609ed582818fbe3bc2a20008a" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-09-16T07:53:32.409876082" + "timestamp": "2025-10-02T11:22:34.018328" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/coverage/tests/tags.yml b/modules/nf-core/samtools/coverage/tests/tags.yml deleted file mode 100644 index 2b4f53c2..00000000 --- a/modules/nf-core/samtools/coverage/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/coverage: - - "modules/nf-core/samtools/coverage/**" diff --git a/modules/nf-core/samtools/flagstat/environment.yml b/modules/nf-core/samtools/flagstat/environment.yml index 62054fc9..89e12a64 100644 --- a/modules/nf-core/samtools/flagstat/environment.yml +++ b/modules/nf-core/samtools/flagstat/environment.yml @@ -4,5 +4,7 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/flagstat/main.nf b/modules/nf-core/samtools/flagstat/main.nf index c23f3a5c..f148f56b 100644 --- a/modules/nf-core/samtools/flagstat/main.nf +++ b/modules/nf-core/samtools/flagstat/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_FLAGSTAT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta), path(bam), path(bai) @@ -35,7 +35,19 @@ process SAMTOOLS_FLAGSTAT { stub: def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}.flagstat + cat <<-END_FLAGSTAT > ${prefix}.flagstat + 1000000 + 0 in total (QC-passed reads + QC-failed reads) + 0 + 0 secondary + 0 + 0 supplementary + 0 + 0 duplicates + 900000 + 0 mapped (90.00% : N/A) + 1000000 + 0 paired in sequencing + 500000 + 0 read1 + 500000 + 0 read2 + 800000 + 0 properly paired (80.00% : N/A) + 850000 + 0 with mate mapped to a different chr + 50000 + 0 with mate mapped to a different chr (mapQ>=5) + END_FLAGSTAT cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/samtools/flagstat/meta.yml b/modules/nf-core/samtools/flagstat/meta.yml index cdc4c254..ebbc15f2 100644 --- a/modules/nf-core/samtools/flagstat/meta.yml +++ b/modules/nf-core/samtools/flagstat/meta.yml @@ -29,13 +29,15 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - bai: type: file description: Index for BAM/CRAM/SAM file pattern: "*.{bai,crai,sai}" + ontologies: [] output: - - flagstat: - - meta: + flagstat: + - - meta: type: map description: | Groovy Map containing sample information @@ -44,11 +46,14 @@ output: type: file description: File containing samtools flagstat output pattern: "*.{flagstat}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" maintainers: diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap index 04c3852b..0a0a9b15 100644 --- a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap @@ -8,11 +8,11 @@ "id": "test", "single_end": false }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "1": [ - "versions.yml:md5,108a155f2d4a99f50bf3176904208d27" + "versions.yml:md5,bdc0bfb2b0542580e7cd65e80d8570bc" ], "flagstat": [ [ @@ -20,19 +20,19 @@ "id": "test", "single_end": false }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "versions": [ - "versions.yml:md5,108a155f2d4a99f50bf3176904208d27" + "versions.yml:md5,bdc0bfb2b0542580e7cd65e80d8570bc" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-09-16T08:02:58.866491759" + "timestamp": "2025-09-15T15:02:00.813612" }, "BAM": { "content": [ @@ -47,7 +47,7 @@ ] ], "1": [ - "versions.yml:md5,108a155f2d4a99f50bf3176904208d27" + "versions.yml:md5,bdc0bfb2b0542580e7cd65e80d8570bc" ], "flagstat": [ [ @@ -59,14 +59,14 @@ ] ], "versions": [ - "versions.yml:md5,108a155f2d4a99f50bf3176904208d27" + "versions.yml:md5,bdc0bfb2b0542580e7cd65e80d8570bc" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-09-16T08:02:47.383332837" + "timestamp": "2025-09-15T15:01:55.232954" } } \ 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 2d2b7255..00000000 --- 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 index 62054fc9..89e12a64 100644 --- a/modules/nf-core/samtools/idxstats/environment.yml +++ b/modules/nf-core/samtools/idxstats/environment.yml @@ -4,5 +4,7 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/idxstats/main.nf b/modules/nf-core/samtools/idxstats/main.nf index e2bb6b20..9181a1a5 100644 --- a/modules/nf-core/samtools/idxstats/main.nf +++ b/modules/nf-core/samtools/idxstats/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_IDXSTATS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta), path(bam), path(bai) @@ -21,6 +21,7 @@ process SAMTOOLS_IDXSTATS { def prefix = task.ext.prefix ?: "${meta.id}" """ + # Note: --threads value represents *additional* CPUs to allocate (total CPUs = 1 + --threads). samtools \\ idxstats \\ --threads ${task.cpus-1} \\ diff --git a/modules/nf-core/samtools/idxstats/meta.yml b/modules/nf-core/samtools/idxstats/meta.yml index f0a6bcb2..96d42746 100644 --- a/modules/nf-core/samtools/idxstats/meta.yml +++ b/modules/nf-core/samtools/idxstats/meta.yml @@ -29,13 +29,15 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - bai: type: file description: Index for BAM/CRAM/SAM file pattern: "*.{bai,crai,sai}" + ontologies: [] output: - - idxstats: - - meta: + idxstats: + - - meta: type: map description: | Groovy Map containing sample information @@ -44,11 +46,14 @@ output: type: file description: File containing samtools idxstats output pattern: "*.{idxstats}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" maintainers: diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap index 2cc89a3b..d3e785e0 100644 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap @@ -12,7 +12,7 @@ ] ], "1": [ - "versions.yml:md5,c8d7394830c3c1e5be150589571534fb" + "versions.yml:md5,6da44e5235401559cea62052bdc0197b" ], "idxstats": [ [ @@ -24,15 +24,15 @@ ] ], "versions": [ - "versions.yml:md5,c8d7394830c3c1e5be150589571534fb" + "versions.yml:md5,6da44e5235401559cea62052bdc0197b" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-09-16T08:11:56.466856235" + "timestamp": "2025-09-10T13:47:35.796569" }, "bam": { "content": [ @@ -47,7 +47,7 @@ ] ], "1": [ - "versions.yml:md5,c8d7394830c3c1e5be150589571534fb" + "versions.yml:md5,6da44e5235401559cea62052bdc0197b" ], "idxstats": [ [ @@ -59,14 +59,14 @@ ] ], "versions": [ - "versions.yml:md5,c8d7394830c3c1e5be150589571534fb" + "versions.yml:md5,6da44e5235401559cea62052bdc0197b" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-09-16T08:11:46.311550359" + "timestamp": "2025-09-10T13:47:31.86415" } } \ 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 d3057c61..00000000 --- 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/import/environment.yml b/modules/nf-core/samtools/import/environment.yml index 62054fc9..89e12a64 100644 --- a/modules/nf-core/samtools/import/environment.yml +++ b/modules/nf-core/samtools/import/environment.yml @@ -4,5 +4,7 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/import/main.nf b/modules/nf-core/samtools/import/main.nf index b6927949..0efbc75a 100644 --- a/modules/nf-core/samtools/import/main.nf +++ b/modules/nf-core/samtools/import/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_IMPORT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0': - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0': + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta), path(reads) diff --git a/modules/nf-core/samtools/import/meta.yml b/modules/nf-core/samtools/import/meta.yml index 5c98b8be..2b86ce79 100644 --- a/modules/nf-core/samtools/import/meta.yml +++ b/modules/nf-core/samtools/import/meta.yml @@ -28,9 +28,11 @@ input: type: file description: fastq data to be converted to SAM/BAM/CRAM pattern: "*.{fastq,fq,fastq.gz,fq.gz}" + ontologies: + - edam: http://edamontology.org/format_1930 # FASTQ output: - - sam: - - meta: + sam: + - - meta: type: map description: | Groovy Map containing sample information @@ -39,8 +41,9 @@ output: type: file description: SAM file pattern: "*.sam" - - bam: - - meta: + ontologies: [] + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -49,8 +52,9 @@ output: type: file description: Unaligned BAM file pattern: "*.bam" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -59,11 +63,14 @@ output: type: file description: Unaligned CRAM file pattern: "*.cram" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@matthdsm" maintainers: diff --git a/modules/nf-core/samtools/import/tests/tags.yml b/modules/nf-core/samtools/import/tests/tags.yml deleted file mode 100644 index 89c89128..00000000 --- a/modules/nf-core/samtools/import/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/import: - - modules/nf-core/samtools/import/** diff --git a/modules/nf-core/samtools/sormadup/environment.yml b/modules/nf-core/samtools/sormadup/environment.yml index 62054fc9..89e12a64 100644 --- a/modules/nf-core/samtools/sormadup/environment.yml +++ b/modules/nf-core/samtools/sormadup/environment.yml @@ -4,5 +4,7 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/sormadup/main.nf b/modules/nf-core/samtools/sormadup/main.nf index 0ee7a0a7..25541ed8 100644 --- a/modules/nf-core/samtools/sormadup/main.nf +++ b/modules/nf-core/samtools/sormadup/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_SORMADUP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta), path(input), path(fasta) diff --git a/modules/nf-core/samtools/sormadup/meta.yml b/modules/nf-core/samtools/sormadup/meta.yml index bec58e87..bb6295bf 100644 --- a/modules/nf-core/samtools/sormadup/meta.yml +++ b/modules/nf-core/samtools/sormadup/meta.yml @@ -77,6 +77,7 @@ input: type: file description: BAM/CRAM/SAM files pattern: "*.{bam,cram,sam}" + ontologies: [] - - meta2: type: map description: | @@ -86,9 +87,10 @@ input: type: file description: Reference genome file pattern: "*.{fasta,fa,fna}" + ontologies: [] output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -97,8 +99,9 @@ output: type: file description: Sorted and duplicate marked BAM file pattern: "*.bam" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -107,8 +110,9 @@ output: type: file description: Sorted and duplicate marked CRAM file pattern: "*.cram" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -117,8 +121,9 @@ output: type: file description: Sorted and duplicate marked BAM index file pattern: "*.csi" - - crai: - - meta: + ontologies: [] + crai: + - - meta: type: map description: | Groovy Map containing sample information @@ -127,8 +132,9 @@ output: type: file description: Sorted and duplicate marked CRAM index file pattern: "*.crai" - - metrics: - - meta: + ontologies: [] + metrics: + - - meta: type: map description: | Groovy Map containing sample information @@ -137,11 +143,14 @@ output: type: file description: Duplicate metrics file pattern: "*.metrics" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@matthdsm" maintainers: diff --git a/modules/nf-core/samtools/sormadup/samtools-sormadup.diff b/modules/nf-core/samtools/sormadup/samtools-sormadup.diff index 6da27c02..f614f937 100644 --- a/modules/nf-core/samtools/sormadup/samtools-sormadup.diff +++ b/modules/nf-core/samtools/sormadup/samtools-sormadup.diff @@ -1,11 +1,11 @@ -Changes in module 'nf-core/samtools/sormadup' +Changes in component 'nf-core/samtools/sormadup' 'modules/nf-core/samtools/sormadup/environment.yml' is unchanged 'modules/nf-core/samtools/sormadup/meta.yml' is unchanged Changes in 'samtools/sormadup/main.nf': --- modules/nf-core/samtools/sormadup/main.nf +++ modules/nf-core/samtools/sormadup/main.nf @@ -8,8 +8,7 @@ - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: - tuple val(meta), path(input) @@ -17,7 +17,6 @@ Changes in 'samtools/sormadup/main.nf': 'modules/nf-core/samtools/sormadup/tests/main.nf.test.snap' is unchanged 'modules/nf-core/samtools/sormadup/tests/bam.config' is unchanged -'modules/nf-core/samtools/sormadup/tests/tags.yml' is unchanged 'modules/nf-core/samtools/sormadup/tests/cram.config' is unchanged 'modules/nf-core/samtools/sormadup/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/samtools/sormadup/tests/cram.config b/modules/nf-core/samtools/sormadup/tests/cram.config index 8d6ce11a..69897ef7 100644 --- a/modules/nf-core/samtools/sormadup/tests/cram.config +++ b/modules/nf-core/samtools/sormadup/tests/cram.config @@ -7,7 +7,7 @@ process { "-d 2500", // The optical duplicate distance "--barcode-name", // Use the UMI/barcode embedded in the read name (eigth colon delimited part). "--write-index", // Write csi/crai index - "--output-fmt cram", // Output format + "--output-fmt cram,version=3.0",// Output format "--output-fmt-option archive" // Cram compression level ].join(" ").trim()} } diff --git a/modules/nf-core/samtools/sormadup/tests/main.nf.test.snap b/modules/nf-core/samtools/sormadup/tests/main.nf.test.snap index 56776605..7d36514f 100644 --- a/modules/nf-core/samtools/sormadup/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/sormadup/tests/main.nf.test.snap @@ -30,7 +30,7 @@ ] ], "5": [ - "versions.yml:md5,ad563b12da6299eec5c39564782d0814" + "versions.yml:md5,f747eda74610b9e2ffbe38a0fe32605c" ], "bam": [ [ @@ -60,15 +60,15 @@ ] ], "versions": [ - "versions.yml:md5,ad563b12da6299eec5c39564782d0814" + "versions.yml:md5,f747eda74610b9e2ffbe38a0fe32605c" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "25.04.6" }, - "timestamp": "2024-09-16T08:56:24.200237922" + "timestamp": "2025-09-10T14:41:27.357324" }, "sarscov2 - cram": { "content": [ @@ -80,15 +80,15 @@ "id": "test", "single_end": false }, - "test.merged.metrics:md5,548ff6d0d22ef710858639fe22e90004" + "test.merged.metrics:md5,02eebd31b097e165e1b18d84b023f18d" ] ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nextflow": "25.04.6" }, - "timestamp": "2025-02-05T12:24:12.517796" + "timestamp": "2025-09-10T15:34:19.685282" }, "sarscov2 - bam": { "content": [ @@ -99,7 +99,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,4dd85f1abbd2806887c6942f9c84595a" + "test.bam:md5,22ccf80de9847da1fa532f7774580554" ] ], "1": [ @@ -121,7 +121,7 @@ ] ], "5": [ - "versions.yml:md5,ad563b12da6299eec5c39564782d0814" + "versions.yml:md5,f747eda74610b9e2ffbe38a0fe32605c" ], "bam": [ [ @@ -129,7 +129,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,4dd85f1abbd2806887c6942f9c84595a" + "test.bam:md5,22ccf80de9847da1fa532f7774580554" ] ], "crai": [ @@ -151,14 +151,14 @@ ] ], "versions": [ - "versions.yml:md5,ad563b12da6299eec5c39564782d0814" + "versions.yml:md5,f747eda74610b9e2ffbe38a0fe32605c" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nextflow": "25.04.6" }, - "timestamp": "2025-02-05T11:48:51.866973" + "timestamp": "2025-09-10T14:41:11.744386" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/sormadup/tests/tags.yml b/modules/nf-core/samtools/sormadup/tests/tags.yml deleted file mode 100644 index cf362be7..00000000 --- a/modules/nf-core/samtools/sormadup/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/sormadup: - - "modules/nf-core/samtools/sormadup/**" diff --git a/modules/nf-core/samtools/sort/environment.yml b/modules/nf-core/samtools/sort/environment.yml index 62054fc9..89e12a64 100644 --- a/modules/nf-core/samtools/sort/environment.yml +++ b/modules/nf-core/samtools/sort/environment.yml @@ -4,5 +4,7 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf index 53bb171a..4abb5f3c 100644 --- a/modules/nf-core/samtools/sort/main.nf +++ b/modules/nf-core/samtools/sort/main.nf @@ -4,30 +4,41 @@ process SAMTOOLS_SORT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta) , path(bam), path(fasta) + val index_format output: - tuple val(meta), path("*.bam"), emit: bam, optional: true - tuple val(meta), path("*.cram"), emit: cram, optional: true - tuple val(meta), path("*.crai"), emit: crai, optional: true - tuple val(meta), path("*.csi"), emit: csi, optional: true - path "versions.yml", emit: versions + tuple val(meta), path("${prefix}.bam"), emit: bam, optional: true + tuple val(meta), path("${prefix}.cram"), emit: cram, optional: true + tuple val(meta), path("${prefix}.sam"), emit: sam, optional: true + tuple val(meta), path("${prefix}.${extension}.crai"), emit: crai, optional: true + tuple val(meta), path("${prefix}.${extension}.csi"), emit: csi, optional: true + tuple val(meta), path("${prefix}.${extension}.bai"), emit: bai, optional: true + tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //'"), topic: versions, emit: versions_samtools when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def extension = args.contains("--output-fmt sam") ? "sam" : - args.contains("--output-fmt cram") ? "cram" : - "bam" + prefix = task.ext.prefix ?: "${meta.id}" + extension = args.contains("--output-fmt sam") ? "sam" : + args.contains("--output-fmt cram") ? "cram" : + "bam" def reference = fasta ? "--reference ${fasta}" : "" def sort_memory = (task.memory.mega/task.cpus*0.75).intValue() + output_file = index_format ? "${prefix}.${extension}##idx##${prefix}.${extension}.${index_format} --write-index" : "${prefix}.${extension}" + if (index_format) { + if (!index_format.matches('bai|csi|crai')) { + error "Index format not one of bai, csi, crai." + } else if (extension == "sam") { + error "Indexing not compatible with SAM output" + } + } if ("$bam" == "${prefix}.bam") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ @@ -40,34 +51,29 @@ process SAMTOOLS_SORT { --threads $task.cpus \\ ${reference} \\ -m ${sort_memory}M \\ - -o ${prefix}.${extension} \\ + -o ${output_file} \\ - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ stub: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def extension = args.contains("--output-fmt sam") ? "sam" : - args.contains("--output-fmt cram") ? "cram" : - "bam" + prefix = task.ext.prefix ?: "${meta.id}" + extension = args.contains("--output-fmt sam") ? "sam" : + args.contains("--output-fmt cram") ? "cram" : + "bam" + if (index_format) { + if (!index_format.matches('bai|csi|crai')) { + error "Index format not one of bai, csi, crai." + } else if (extension == "sam") { + error "Indexing not compatible with SAM output" + } + } + index = index_format ? "touch ${prefix}.${extension}.${index_format}" : "" + """ touch ${prefix}.${extension} - if [ "${extension}" == "bam" ]; - then - touch ${prefix}.${extension}.csi - elif [ "${extension}" == "cram" ]; - then - touch ${prefix}.${extension}.crai - fi + ${index} - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/samtools/sort/meta.yml b/modules/nf-core/samtools/sort/meta.yml index a9dbec5a..809a57fc 100644 --- a/modules/nf-core/samtools/sort/meta.yml +++ b/modules/nf-core/samtools/sort/meta.yml @@ -26,6 +26,7 @@ input: type: file description: BAM/CRAM/SAM file(s) pattern: "*.{bam,cram,sam}" + ontologies: [] - - meta2: type: map description: | @@ -36,52 +37,100 @@ input: description: Reference genome FASTA file pattern: "*.{fa,fasta,fna}" optional: true + ontologies: [] + - index_format: + type: string + description: Index format to use (optional) + pattern: "bai|csi|crai" output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - "*.bam": + - "${prefix}.bam": type: file description: Sorted BAM file pattern: "*.{bam}" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - "*.cram": + - "${prefix}.cram": type: file description: Sorted CRAM file pattern: "*.{cram}" - - crai: - - meta: + ontologies: [] + sam: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - "*.crai": + - "${prefix}.sam": + type: file + description: Sorted SAM file + pattern: "*.{sam}" + ontologies: [] + crai: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "${prefix}.${extension}.crai": type: file description: CRAM index file (optional) pattern: "*.crai" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - "*.csi": + - "${prefix}.${extension}.csi": type: file description: BAM index file (optional) pattern: "*.csi" - - versions: - - versions.yml: + ontologies: [] + bai: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "${prefix}.${extension}.bai": type: file - description: File containing software versions - pattern: "versions.yml" + description: BAM index file (optional) + pattern: "*.bai" + ontologies: [] + versions_samtools: + - - ${task.process}: + type: string + description: The process the versions were collected from + - samtools: + type: string + description: The tool name + - "samtools version | sed '1!d;s/.* //'": + type: string + description: The command used to generate the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - samtools: + type: string + description: The tool name + - "samtools version | sed '1!d;s/.* //'": + type: string + description: The command used to generate the version of the tool authors: - "@drpatelh" - "@ewels" diff --git a/modules/nf-core/samtools/sort/samtools-sort.diff b/modules/nf-core/samtools/sort/samtools-sort.diff index 817f68c5..a7a10b78 100644 --- a/modules/nf-core/samtools/sort/samtools-sort.diff +++ b/modules/nf-core/samtools/sort/samtools-sort.diff @@ -1,39 +1,37 @@ -Changes in module 'nf-core/samtools/sort' +Changes in component 'nf-core/samtools/sort' 'modules/nf-core/samtools/sort/environment.yml' is unchanged 'modules/nf-core/samtools/sort/meta.yml' is unchanged Changes in 'samtools/sort/main.nf': --- modules/nf-core/samtools/sort/main.nf +++ modules/nf-core/samtools/sort/main.nf @@ -8,8 +8,7 @@ - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: - tuple val(meta) , path(bam) - tuple val(meta2), path(fasta) + tuple val(meta) , path(bam), path(fasta) + val index_format output: - tuple val(meta), path("*.bam"), emit: bam, optional: true - -@@ -28,6 +27,7 @@ - args.contains("--output-fmt cram") ? "cram" : - "bam" +@@ -31,6 +30,7 @@ + args.contains("--output-fmt cram") ? "cram" : + "bam" def reference = fasta ? "--reference ${fasta}" : "" + def sort_memory = (task.memory.mega/task.cpus*0.75).intValue() - if ("$bam" == "${prefix}.bam") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" - - """ -@@ -39,6 +39,7 @@ + output_file = index_format ? "${prefix}.${extension}##idx##${prefix}.${extension}.${index_format} --write-index" : "${prefix}.${extension}" + if (index_format) { + if (!index_format.matches('bai|csi|crai')) { +@@ -50,6 +50,7 @@ -T ${prefix} \\ --threads $task.cpus \\ ${reference} \\ + -m ${sort_memory}M \\ - -o ${prefix}.${extension} \\ + -o ${output_file} \\ - 'modules/nf-core/samtools/sort/tests/main.nf.test.snap' is unchanged -'modules/nf-core/samtools/sort/tests/tags.yml' is unchanged 'modules/nf-core/samtools/sort/tests/nextflow_cram.config' is unchanged 'modules/nf-core/samtools/sort/tests/nextflow.config' is unchanged 'modules/nf-core/samtools/sort/tests/main.nf.test' is unchanged diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test index b05e6691..df47bb25 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test +++ b/modules/nf-core/samtools/sort/tests/main.nf.test @@ -8,7 +8,7 @@ nextflow_process { tag "samtools" tag "samtools/sort" - test("bam") { + test("bam_no_index") { config "./nextflow.config" @@ -23,6 +23,7 @@ nextflow_process { [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ]) + input[2] = '' """ } } @@ -32,8 +33,72 @@ nextflow_process { { assert process.success }, { assert snapshot( process.out.bam, - process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.versions + process.out.bai, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match()} + ) + } + } + + test("bam_bai_index") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = 'bai' + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + process.out.bam, + process.out.bai, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match()} + ) + } + } + + test("bam_csi_index") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = 'csi' + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + process.out.bam, + process.out.csi, + process.out.findAll { key, val -> key.startsWith("versions") } ).match()} ) } @@ -57,6 +122,77 @@ nextflow_process { [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ]) + input[2] = '' + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + process.out.bam, + process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match()} + ) + } + } + + test("multiple bam bai index") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ] + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = 'bai' + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + process.out.bam, + process.out.bai.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match()} + ) + } + } + + test("multiple bam csi index") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ] + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = 'csi' """ } } @@ -67,7 +203,7 @@ nextflow_process { { assert snapshot( process.out.bam, process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.versions + process.out.findAll { key, val -> key.startsWith("versions") } ).match()} ) } @@ -88,6 +224,7 @@ nextflow_process { [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ]) + input[2] = '' """ } } @@ -98,7 +235,7 @@ nextflow_process { { assert snapshot( process.out.cram.collect { it.collect { it instanceof Map ? it : file(it).name } }, process.out.crai.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.versions + process.out.findAll { key, val -> key.startsWith("versions") } ).match()} ) } @@ -120,6 +257,7 @@ nextflow_process { [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ]) + input[2] = '' """ } } @@ -127,7 +265,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(process.out.findAll { key, val -> key.startsWith("versions") }).match() } ) } } @@ -150,6 +288,7 @@ nextflow_process { [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ]) + input[2] = '' """ } } @@ -157,7 +296,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(process.out.findAll { key, val -> key.startsWith("versions") }).match() } ) } } @@ -178,6 +317,7 @@ nextflow_process { [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ]) + input[2] = '' """ } } @@ -185,7 +325,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(process.out.findAll { key, val -> key.startsWith("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 index 469891fe..4e618fa3 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap @@ -19,147 +19,77 @@ "test.sorted.cram.crai" ] ], - [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ] + { + "versions_samtools": [ + [ + "SAMTOOLS_SORT", + "samtools", + "1.22.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-09-16T08:49:58.207549273" + "timestamp": "2025-10-29T12:47:01.171084" }, - "bam - stub": { + "bam_csi_index": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,72ca1dff5344a5e5e6b892fe5f6b134d" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi:md5,01394e702c729cb478df914ffaf9f7f8" + ] + ], { - "0": [ + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + "SAMTOOLS_SORT", + "samtools", + "1.22.1" ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "4": [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ], - "bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "crai": [ - - ], - "cram": [ - - ], - "csi": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-09-16T08:50:08.630951018" + "timestamp": "2025-10-29T12:46:00.961675" }, - "cram - stub": { + "bam - stub": { "content": [ { - "0": [ - - ], - "1": [ + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.sorted.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + "SAMTOOLS_SORT", + "samtools", + "1.22.1" ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - - ], - "4": [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ], - "bam": [ - - ], - "crai": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "cram": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.cram:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-09-16T08:50:19.061912443" + "timestamp": "2025-10-29T12:47:12.154354" }, - "multiple bam": { + "multiple bam bai index": { "content": [ [ [ @@ -167,7 +97,7 @@ "id": "test", "single_end": false }, - "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12" + "test.sorted.bam:md5,3ffa2affc29f0aa6e7b36dded84625fe" ] ], [ @@ -176,85 +106,122 @@ "id": "test", "single_end": false }, - "test.sorted.bam.csi" + "test.sorted.bam.bai" ] ], - [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ] + { + "versions_samtools": [ + [ + "SAMTOOLS_SORT", + "samtools", + "1.22.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.09.0" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-10-08T11:59:55.479443" + "timestamp": "2025-10-29T12:46:25.488622" }, - "multiple bam - stub": { + "cram - stub": { "content": [ { - "0": [ + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12" + "SAMTOOLS_SORT", + "samtools", + "1.22.1" ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2025-10-29T12:47:28.485045" + }, + "multiple bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,cd4eb0077f25e9cff395366b8883dd1f" + ] + ], + [ + + ], + { + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,d185916eaff9afeb4d0aeab3310371f9" + "SAMTOOLS_SORT", + "samtools", + "1.22.1" ] - ], - "4": [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ], - "bam": [ + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2025-10-29T12:46:13.168476" + }, + "multiple bam - stub": { + "content": [ + { + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12" + "SAMTOOLS_SORT", + "samtools", + "1.22.1" ] - ], - "crai": [ - - ], - "cram": [ - - ], - "csi": [ + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2025-10-29T12:47:21.628088" + }, + "bam_no_index": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,26b27d1f9bcb61c25da21b562349784e" + ] + ], + [ + + ], + { + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,d185916eaff9afeb4d0aeab3310371f9" + "SAMTOOLS_SORT", + "samtools", + "1.22.1" ] - ], - "versions": [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.09.0" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-10-08T11:36:13.781404" + "timestamp": "2025-10-29T12:45:47.139418" }, - "bam": { + "multiple bam csi index": { "content": [ [ [ @@ -262,7 +229,7 @@ "id": "test", "single_end": false }, - "test.sorted.bam:md5,34aa85e86abefe637f7a4a9887f016fc" + "test.sorted.bam:md5,295503ba5342531a3310c33ad0efbc22" ] ], [ @@ -274,14 +241,56 @@ "test.sorted.bam.csi" ] ], + { + "versions_samtools": [ + [ + "SAMTOOLS_SORT", + "samtools", + "1.22.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2025-10-29T12:46:51.5531" + }, + "bam_bai_index": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,cae7564cb83bb4a5911205bf94124b54" + ] + ], [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ] + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.bai:md5,50dd467c169545a4d5d1f709f7e986e0" + ] + ], + { + "versions_samtools": [ + [ + "SAMTOOLS_SORT", + "samtools", + "1.22.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.09.0" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-10-08T11:59:46.372244" + "timestamp": "2025-10-29T12:45:52.796936" } } \ 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 index f642771f..723f62b2 100644 --- a/modules/nf-core/samtools/sort/tests/nextflow.config +++ b/modules/nf-core/samtools/sort/tests/nextflow.config @@ -2,7 +2,6 @@ process { withName: SAMTOOLS_SORT { ext.prefix = { "${meta.id}.sorted" } - ext.args = "--write-index" } } 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 cd63ea20..00000000 --- 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 index 62054fc9..89e12a64 100644 --- a/modules/nf-core/samtools/stats/environment.yml +++ b/modules/nf-core/samtools/stats/environment.yml @@ -4,5 +4,7 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/stats/main.nf b/modules/nf-core/samtools/stats/main.nf index 1e32e8a0..7b070ac3 100644 --- a/modules/nf-core/samtools/stats/main.nf +++ b/modules/nf-core/samtools/stats/main.nf @@ -4,15 +4,15 @@ process SAMTOOLS_STATS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta), path(input), path(input_index), path(fasta) output: tuple val(meta), path("*.stats"), emit: stats - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('samtools'), eval('samtools version | sed "1!d;s/.* //"'), emit: versions_samtools, topic: versions when: task.ext.when == null || task.ext.when @@ -27,21 +27,11 @@ process SAMTOOLS_STATS { ${reference} \\ ${input} \\ > ${prefix}.stats - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.stats - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/samtools/stats/meta.yml b/modules/nf-core/samtools/stats/meta.yml index 77b020f7..a20509ae 100644 --- a/modules/nf-core/samtools/stats/meta.yml +++ b/modules/nf-core/samtools/stats/meta.yml @@ -27,10 +27,12 @@ input: type: file description: BAM/CRAM file from alignment pattern: "*.{bam,cram}" + ontologies: [] - input_index: type: file description: BAI/CRAI file from alignment pattern: "*.{bai,crai}" + ontologies: [] - - meta2: type: map description: | @@ -40,9 +42,10 @@ input: type: file description: Reference file the CRAM was created with (optional) pattern: "*.{fasta,fa}" + ontologies: [] output: - - stats: - - meta: + stats: + - - meta: type: map description: | Groovy Map containing sample information @@ -51,11 +54,29 @@ output: type: file description: File containing samtools stats output pattern: "*.{stats}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_samtools: + - - ${task.process}: + type: string + description: Name of the process + - samtools: + type: string + description: Name of the tool + - samtools version | sed "1!d;s/.* //: + type: string + description: The command used to generate the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - samtools: + type: string + description: The tool name + - samtools version | sed "1!d;s/.* //: + type: string + description: The command used to generate the version of the tool authors: - "@drpatelh" - "@FriederikeHanssen" diff --git a/modules/nf-core/samtools/stats/samtools-stats.diff b/modules/nf-core/samtools/stats/samtools-stats.diff index dc243ad7..1ccaf8fe 100644 --- a/modules/nf-core/samtools/stats/samtools-stats.diff +++ b/modules/nf-core/samtools/stats/samtools-stats.diff @@ -1,11 +1,11 @@ -Changes in module 'nf-core/samtools/stats' +Changes in component 'nf-core/samtools/stats' 'modules/nf-core/samtools/stats/environment.yml' is unchanged 'modules/nf-core/samtools/stats/meta.yml' is unchanged Changes in 'samtools/stats/main.nf': --- modules/nf-core/samtools/stats/main.nf +++ modules/nf-core/samtools/stats/main.nf @@ -8,8 +8,7 @@ - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: - tuple val(meta), path(input), path(input_index) @@ -16,6 +16,5 @@ Changes in 'samtools/stats/main.nf': tuple val(meta), path("*.stats"), emit: stats 'modules/nf-core/samtools/stats/tests/main.nf.test.snap' is unchanged -'modules/nf-core/samtools/stats/tests/tags.yml' is unchanged 'modules/nf-core/samtools/stats/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test.snap b/modules/nf-core/samtools/stats/tests/main.nf.test.snap index df507be7..94d981b2 100644 --- a/modules/nf-core/samtools/stats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/stats/tests/main.nf.test.snap @@ -8,11 +8,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,a27fe55e49a341f92379bb20a65c6a06" + "test.stats:md5,f4aec6c41b73d34ac2fc6b3253aa39ba" ] ], "1": [ - "versions.yml:md5,15b91d8c0e0440332e0fe4df80957043" + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ], "stats": [ [ @@ -20,19 +24,23 @@ "id": "test", "single_end": false }, - "test.stats:md5,a27fe55e49a341f92379bb20a65c6a06" + "test.stats:md5,f4aec6c41b73d34ac2fc6b3253aa39ba" ] ], - "versions": [ - "versions.yml:md5,15b91d8c0e0440332e0fe4df80957043" + "versions_samtools": [ + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-09-16T09:29:16.767396182" + "timestamp": "2025-11-01T02:27:18.460724" }, "bam - stub": { "content": [ @@ -47,7 +55,11 @@ ] ], "1": [ - "versions.yml:md5,15b91d8c0e0440332e0fe4df80957043" + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ], "stats": [ [ @@ -58,16 +70,20 @@ "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,15b91d8c0e0440332e0fe4df80957043" + "versions_samtools": [ + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-09-16T09:29:29.721580274" + "timestamp": "2025-11-01T02:27:30.245839" }, "cram - stub": { "content": [ @@ -82,7 +98,11 @@ ] ], "1": [ - "versions.yml:md5,15b91d8c0e0440332e0fe4df80957043" + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ], "stats": [ [ @@ -93,16 +113,20 @@ "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,15b91d8c0e0440332e0fe4df80957043" + "versions_samtools": [ + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-09-16T09:29:53.567964304" + "timestamp": "2025-11-01T02:27:39.041649" }, "bam": { "content": [ @@ -113,11 +137,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,d53a2584376d78942839e9933a34d11b" + "test.stats:md5,41ba8ad30ddb598dadb177a54c222ab9" ] ], "1": [ - "versions.yml:md5,15b91d8c0e0440332e0fe4df80957043" + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ], "stats": [ [ @@ -125,18 +153,22 @@ "id": "test", "single_end": false }, - "test.stats:md5,d53a2584376d78942839e9933a34d11b" + "test.stats:md5,41ba8ad30ddb598dadb177a54c222ab9" ] ], - "versions": [ - "versions.yml:md5,15b91d8c0e0440332e0fe4df80957043" + "versions_samtools": [ + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-09-16T09:28:50.73610604" + "timestamp": "2025-11-01T02:26:55.988241" } } \ 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 7c28e30f..00000000 --- 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/snapaligner/align/environment.yml b/modules/nf-core/snapaligner/align/environment.yml index c2bd7a6a..5dc75127 100644 --- a/modules/nf-core/snapaligner/align/environment.yml +++ b/modules/nf-core/snapaligner/align/environment.yml @@ -4,4 +4,5 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::snap-aligner=2.0.3 + # renovate: datasource=conda depName=bioconda/snap-aligner + - bioconda::snap-aligner=2.0.5 diff --git a/modules/nf-core/snapaligner/align/main.nf b/modules/nf-core/snapaligner/align/main.nf index 5cf6d6bc..eacf4644 100644 --- a/modules/nf-core/snapaligner/align/main.nf +++ b/modules/nf-core/snapaligner/align/main.nf @@ -4,8 +4,8 @@ process SNAPALIGNER_ALIGN { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/snap-aligner:2.0.3--hd03093a_0': - 'biocontainers/snap-aligner:2.0.3--hd03093a_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/21/21f75cd3d97dfe58e62bea51751b04d33a03a16eae3e9947335d569e22962143/data': + 'community.wave.seqera.io/library/snap-aligner:2.0.5--23601d3a3a2ae452' }" input: tuple val(meta) , path(reads, stageAs: "?/*"), path(index) diff --git a/modules/nf-core/snapaligner/align/meta.yml b/modules/nf-core/snapaligner/align/meta.yml index e0a71c04..66f2fca4 100644 --- a/modules/nf-core/snapaligner/align/meta.yml +++ b/modules/nf-core/snapaligner/align/meta.yml @@ -27,6 +27,8 @@ input: description: List of input fastq files of size 2 for paired fastq or 1 for bam or single fastq pattern: "*.{fastq.gz,fq.gz,fastq,fq,bam}" + ontologies: + - edam: http://edamontology.org/format_1930 # FASTQ - - meta2: type: map description: | @@ -36,9 +38,10 @@ input: type: file description: List of SNAP genome index files pattern: "{Genome,GenomeIndex,GenomeIndexHash,OverflowTable}" + ontologies: [] output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -47,8 +50,9 @@ output: type: file description: Aligned BAM file pattern: "*.{bam}" - - bai: - - meta: + ontologies: [] + bai: + - - meta: type: map description: | Groovy Map containing sample information @@ -57,11 +61,14 @@ output: type: file description: Optional aligned BAM file index pattern: "*.{bai}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@matthdsm" maintainers: diff --git a/modules/nf-core/snapaligner/align/snapaligner-align.diff b/modules/nf-core/snapaligner/align/snapaligner-align.diff index f6f326aa..34d23cd4 100644 --- a/modules/nf-core/snapaligner/align/snapaligner-align.diff +++ b/modules/nf-core/snapaligner/align/snapaligner-align.diff @@ -5,7 +5,7 @@ Changes in 'snapaligner/align/main.nf': --- modules/nf-core/snapaligner/align/main.nf +++ modules/nf-core/snapaligner/align/main.nf @@ -8,8 +8,7 @@ - 'biocontainers/snap-aligner:2.0.3--hd03093a_0' }" + 'community.wave.seqera.io/library/snap-aligner:2.0.5--23601d3a3a2ae452' }" input: - tuple val(meta) , path(reads, stageAs: "?/*") diff --git a/modules/nf-core/snapaligner/align/tests/main.nf.test b/modules/nf-core/snapaligner/align/tests/main.nf.test index 43a6d935..254ea40d 100644 --- a/modules/nf-core/snapaligner/align/tests/main.nf.test +++ b/modules/nf-core/snapaligner/align/tests/main.nf.test @@ -112,7 +112,7 @@ nextflow_process { } } } - + when { params { module_args = "-so" @@ -136,4 +136,4 @@ nextflow_process { ) } } -} \ No newline at end of file +} diff --git a/modules/nf-core/snapaligner/align/tests/main.nf.test.snap b/modules/nf-core/snapaligner/align/tests/main.nf.test.snap index 9b03ecd9..f660cd39 100644 --- a/modules/nf-core/snapaligner/align/tests/main.nf.test.snap +++ b/modules/nf-core/snapaligner/align/tests/main.nf.test.snap @@ -8,7 +8,7 @@ "id": "test", "single_end": true }, - "test.bam:md5,ca1c2472d7fd405edd7d8edebc7a2373" + "test.bam:md5,fc98a93036a3c5f7c674d470f7c5515a" ] ], "1": [ @@ -21,7 +21,7 @@ ] ], "2": [ - "versions.yml:md5,991ee6a1ff9cb59542426a1ecf063188" + "versions.yml:md5,dd98393cd432d8472209fcb8f6be362f" ], "bai": [ [ @@ -38,19 +38,19 @@ "id": "test", "single_end": true }, - "test.bam:md5,ca1c2472d7fd405edd7d8edebc7a2373" + "test.bam:md5,fc98a93036a3c5f7c674d470f7c5515a" ] ], "versions": [ - "versions.yml:md5,991ee6a1ff9cb59542426a1ecf063188" + "versions.yml:md5,dd98393cd432d8472209fcb8f6be362f" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-26T14:27:48.935351249" + "timestamp": "2025-09-23T12:01:44.085165306" }, "test_snapaligner_stub": { "content": [ @@ -74,7 +74,7 @@ ] ], "2": [ - "versions.yml:md5,991ee6a1ff9cb59542426a1ecf063188" + "versions.yml:md5,dd98393cd432d8472209fcb8f6be362f" ], "bai": [ [ @@ -95,15 +95,15 @@ ] ], "versions": [ - "versions.yml:md5,991ee6a1ff9cb59542426a1ecf063188" + "versions.yml:md5,dd98393cd432d8472209fcb8f6be362f" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-26T14:41:41.497793191" + "timestamp": "2025-09-23T12:01:58.930050472" }, "test_snapaligner_paired": { "content": [ @@ -114,7 +114,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,7fef4ace398a5e5060ae54d4466c1503" + "test.bam:md5,d4e6df5e063034da268fa4b97db369d3" ] ], "1": [ @@ -127,7 +127,7 @@ ] ], "2": [ - "versions.yml:md5,991ee6a1ff9cb59542426a1ecf063188" + "versions.yml:md5,dd98393cd432d8472209fcb8f6be362f" ], "bai": [ [ @@ -144,18 +144,18 @@ "id": "test", "single_end": false }, - "test.bam:md5,7fef4ace398a5e5060ae54d4466c1503" + "test.bam:md5,d4e6df5e063034da268fa4b97db369d3" ] ], "versions": [ - "versions.yml:md5,991ee6a1ff9cb59542426a1ecf063188" + "versions.yml:md5,dd98393cd432d8472209fcb8f6be362f" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-26T14:27:59.945692303" + "timestamp": "2025-09-23T12:01:51.606664577" } } \ No newline at end of file diff --git a/modules/nf-core/star/align/star-align.diff b/modules/nf-core/star/align/star-align.diff index 019f65d6..398da009 100644 --- a/modules/nf-core/star/align/star-align.diff +++ b/modules/nf-core/star/align/star-align.diff @@ -1,4 +1,6 @@ Changes in component 'nf-core/star/align' +'modules/nf-core/star/align/environment.yml' is unchanged +'modules/nf-core/star/align/meta.yml' is unchanged Changes in 'star/align/main.nf': --- modules/nf-core/star/align/main.nf +++ modules/nf-core/star/align/main.nf @@ -24,11 +26,9 @@ Changes in 'star/align/main.nf': def seq_center_arg = seq_center ? "'CN:$seq_center'" : "" attrRG = args.contains("--outSAMattrRGline") ? "" : "--outSAMattrRGline 'ID:$prefix' $seq_center_arg 'SM:$prefix' $seq_platform_arg" -'modules/nf-core/star/align/environment.yml' is unchanged -'modules/nf-core/star/align/meta.yml' is unchanged -'modules/nf-core/star/align/tests/nextflow.starfusion.config' is unchanged -'modules/nf-core/star/align/tests/main.nf.test' is unchanged -'modules/nf-core/star/align/tests/nextflow.arriba.config' is unchanged 'modules/nf-core/star/align/tests/main.nf.test.snap' is unchanged +'modules/nf-core/star/align/tests/nextflow.arriba.config' is unchanged +'modules/nf-core/star/align/tests/nextflow.starfusion.config' is unchanged 'modules/nf-core/star/align/tests/nextflow.config' is unchanged +'modules/nf-core/star/align/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/strobealign/environment.yml b/modules/nf-core/strobealign/environment.yml new file mode 100644 index 00000000..fc1f89b8 --- /dev/null +++ b/modules/nf-core/strobealign/environment.yml @@ -0,0 +1,9 @@ +channels: + - conda-forge + - bioconda + +dependencies: + - bioconda::htslib=1.22.1 + - bioconda::samtools=1.22.1 + - bioconda::strobealign=0.16.1 + - conda-forge::pigz=2.8 diff --git a/modules/nf-core/strobealign/main.nf b/modules/nf-core/strobealign/main.nf new file mode 100644 index 00000000..26ab2489 --- /dev/null +++ b/modules/nf-core/strobealign/main.nf @@ -0,0 +1,108 @@ +process STROBEALIGN { + tag "${meta.id}" + label 'process_high' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/59/59cce6872df48a1e5cc9ccee89f066210694c6ec9f62d9c931cc6925ca0f6a5f/data' : + 'community.wave.seqera.io/library/htslib_samtools_strobealign_pigz:4fa4f439c6bea386' }" + + input: + tuple val(meta) , path(reads), path(fasta), path(index) + val sort_bam + + output: + tuple val(meta), path("*.bam") , emit: bam , optional: true + tuple val(meta), path("*.cram") , emit: cram, optional: true + tuple val(meta), path("*.csi") , emit: csi , optional: true + tuple val(meta), path("*.crai") , emit: crai, optional: true + tuple val(meta), path("*.paf.gz") , emit: paf , optional: true + tuple val(meta), path("*.tsv.gz") , emit: tsv , optional: true + tuple val(meta), path("*.sti") , emit: sti , optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + // Determine output file extension and command + def samtools_command = sort_bam ? 'sort' : 'view' + def extension = args.contains("-x") + ? "paf" + : args.contains("--aemb") + ? "tsv" + : args.contains("--create-index") + ? "sti" + : args2.contains("--output-fmt cram") + ? "cram" + : sort_bam && args2.contains("-O cram") + ? "cram" + : !sort_bam && args2.contains("-C") + ? "cram" + : "bam" + def reference = fasta && extension == "cram" ? "--reference ${fasta}" : "" + if (!fasta && extension == "cram") { + error("Fasta reference is required for CRAM output") + } + def output_cmd = extension == "bam" || extension == "cram" + ? "samtools ${samtools_command} ${args2} ${reference} --threads ${task.cpus} -o ${prefix}.${extension} -" + : extension == "paf" + ? "pigz ${args2} > ${prefix}.paf.gz" + : extension == "tsv" + ? "pigz ${args2} > ${prefix}.tsv.gz" + : extension == "sti" + ? "tee ${prefix}.log > /dev/null" + : error("Unable to determine output command for extension: ${extension}") + + """ + strobealign \\ + ${args} \\ + -t ${task.cpus} \\ + ${fasta} \\ + ${reads} \\ + | ${output_cmd} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + strobealign: \$(echo \$(strobealign --version)) + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args.contains("-x") + ? "paf" + : args.contains("--aemb") + ? "tsv" + : args2.contains("--output-fmt cram") + ? "cram" + : sort_bam && args2.contains("-O cram") + ? "cram" + : !sort_bam && args2.contains("-C") + ? "cram" + : "bam" + + """ + touch ${prefix}.${extension} + touch ${prefix}.csi + touch ${prefix}.crai + echo "" | pigz > ${prefix}.paf.gz + echo "" | pigz > ${prefix}.tsv.gz + touch ${prefix}.sti + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + strobealign: \$(echo \$(strobealign --version)) + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/strobealign/meta.yml b/modules/nf-core/strobealign/meta.yml new file mode 100644 index 00000000..e4ede404 --- /dev/null +++ b/modules/nf-core/strobealign/meta.yml @@ -0,0 +1,142 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "strobealign" +description: "Align short reads using dynamic seed size with strobemers" +keywords: + - strobealign + - strobemers + - alignment + - map + - fastq + - bam + - sam +tools: + - "strobealign": + description: "Align short reads using dynamic seed size with strobemers" + homepage: "https://github.com/ksahlin/strobealign" + documentation: "https://github.com/ksahlin/strobealign?tab=readme-ov-file#usage" + tool_dev_url: "https://github.com/ksahlin/strobealign" + doi: "10.1186/s13059-022-02831-7" + licence: ["MIT"] + identifier: biotools:strobealign + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. + ontologies: + - edam: "http://edamontology.org/data_2044" # Sequence + - edam: "http://edamontology.org/format_1930" # FASTQ + - - meta2: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Reference genome in FASTA format + pattern: "*.{fasta,fa}" + ontologies: + - edam: "http://edamontology.org/data_2044" # Sequence + - edam: "http://edamontology.org/format_1929" # FASTA + - - meta3: + type: map + description: | + Groovy Map containing reference information. + e.g. [ id:'test', single_end:false ] + - index: + type: file + description: Strobealign genome index file + pattern: "*.sti" + ontologies: + - edam: "http://edamontology.org/data_3210" # Genome index + - sort_bam: + type: boolean + description: use samtools sort (true) or samtools view (false) + pattern: "true or false" +output: + bam: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.bam": + type: file + description: Output BAM file containing read alignments + pattern: "*.{bam}" + ontologies: + - edam: "http://edamontology.org/format_2572" # BAM + cram: + - - meta: + type: file + description: Output BAM file containing read alignments + ontologies: [] + - "*.cram": + type: file + description: Output CRAM file containing read alignments + pattern: "*.{cram}" + ontologies: + - edam: "http://edamontology.org/format_3462" # CRAM + csi: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.csi": + type: file + description: Optional index file for BAM file + pattern: "*.{csi}" + ontologies: [] + crai: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.crai": + type: file + description: Optional index file for CRAM file + pattern: "*.{crai}" + ontologies: [] + paf: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.paf.gz": + type: file + description: Output PAF file containing read alignments + pattern: "*.{paf.gz}" + ontologies: [] + tsv: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.tsv.gz": + type: file + description: Output TSV file containing read alignments + pattern: "*.{tsv.gz}" + ontologies: + - edam: "http://edamontology.org/format_3475" # TSV + sti: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.sti": + type: file + description: Optional strobealign index file for fasta reference + pattern: "*.{sti}" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML +authors: + - "@matthdsm" +maintainers: + - "@matthdsm" + - "@nvnieuwk" diff --git a/modules/nf-core/strobealign/strobealign.diff b/modules/nf-core/strobealign/strobealign.diff new file mode 100644 index 00000000..2e5880dd --- /dev/null +++ b/modules/nf-core/strobealign/strobealign.diff @@ -0,0 +1,22 @@ +Changes in component 'nf-core/strobealign' +'modules/nf-core/strobealign/environment.yml' is unchanged +'modules/nf-core/strobealign/meta.yml' is unchanged +Changes in 'strobealign/main.nf': +--- modules/nf-core/strobealign/main.nf ++++ modules/nf-core/strobealign/main.nf +@@ -8,9 +8,7 @@ + 'community.wave.seqera.io/library/htslib_samtools_strobealign_pigz:4fa4f439c6bea386' }" + + input: +- tuple val(meta) , path(reads) +- tuple val(meta2), path(fasta) +- tuple val(meta3), path(index) ++ tuple val(meta) , path(reads), path(fasta), path(index) + val sort_bam + + output: + +'modules/nf-core/strobealign/tests/main.nf.test.snap' is unchanged +'modules/nf-core/strobealign/tests/nextflow.config' is unchanged +'modules/nf-core/strobealign/tests/main.nf.test' is unchanged +************************************************************ diff --git a/modules/nf-core/strobealign/tests/main.nf.test b/modules/nf-core/strobealign/tests/main.nf.test new file mode 100644 index 00000000..360637c0 --- /dev/null +++ b/modules/nf-core/strobealign/tests/main.nf.test @@ -0,0 +1,303 @@ +// TODO nf-core: Once you have added the required tests, please run the following command to build this file: +// nf-core modules test strobealign +nextflow_process { + + name "Test Process STROBEALIGN" + script "../main.nf" + config './nextflow.config' + process "STROBEALIGN" + + tag "modules" + tag "modules_nfcore" + tag "strobealign" + + test("fastq - sorted bam") { + when { + params { + module_args = "" + module_args2 = "--output-fmt bam --write-index" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) + ], + ] + input[1] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + ] + input[2] = [[:], []] + input[3] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.bam, + process.out.csi, + process.out.versions + ).match() } + ) + } + } + + test("fastq - unsorted bam") { + when { + params { + module_args = "" + module_args2 = "--output-fmt bam" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) + ], + ] + input[1] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + ] + input[2] = [[:], []] + input[3] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.bam, + process.out.versions + ).match() } + ) + } + } + + test("fastq - sorted cram") { + when { + params { + module_args = "" + module_args2 = "--output-fmt cram,version=3.0 --write-index" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) + ], + ] + input[1] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + ] + input[2] = [[:], []] + input[3] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + cram(process.out.cram[0][1], 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/sarscov2/genome/genome.fasta').getReadsMD5(), + file(process.out.crai[0][1]).exists(), + process.out.versions + ).match() } + ) + } + } + + test("fastq - unsorted cram") { + when { + params { + module_args = "" + module_args2 = "--output-fmt cram,version=3.0" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) + ], + ] + input[1] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + ] + input[2] = [[:], []] + input[3] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + cram(process.out.cram[0][1], 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/sarscov2/genome/genome.fasta').getReadsMD5(), + process.out.versions + ).match() } + ) + } + } + + test("fastq - paf") { + when { + params { + module_args = "-x" + module_args2 = "" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) + ], + ] + input[1] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + ] + input[2] = [[:], []] + input[3] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.paf, + process.out.versions + ).match() } + ) + } + } + + test("fastq - tsv") { + when { + params { + module_args = "--aemb" + module_args2 = "" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) + ], + ] + input[1] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + ] + input[2] = [[:], []] + input[3] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.tsv, + process.out.versions + ).match() } + ) + } + } + + test("fastq - sti") { + when { + params { + module_args = "--create-index" + module_args2 = "" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) + ], + ] + input[1] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + ] + input[2] = [[:], []] + input[3] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.sti, + process.out.versions + ).match() } + ) + } + } + + test("stub") { + options "-stub" + when { + params { + module_args = "" + module_args2 = "" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) + ], + ] + input[1] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + ] + input[2] = [[:], []] + input[3] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/strobealign/tests/main.nf.test.snap b/modules/nf-core/strobealign/tests/main.nf.test.snap new file mode 100644 index 00000000..2b8f54dd --- /dev/null +++ b/modules/nf-core/strobealign/tests/main.nf.test.snap @@ -0,0 +1,274 @@ +{ + "fastq - sorted cram": { + "content": [ + "f3a1593b170cf1e9b9008b3afb77cc53", + true, + [ + "versions.yml:md5,5de873596967072366007d67fe652250" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-16T12:55:51.0954" + }, + "fastq - sti": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "genome.fasta.r150.sti:md5,1fa95f6ba0167a729ddc6a444eb5e8f7" + ] + ], + [ + "versions.yml:md5,5de873596967072366007d67fe652250" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-16T12:31:45.186708" + }, + "fastq - unsorted cram": { + "content": [ + "57aeef88ed701a8ebc8e2f0a381b2a6", + [ + "versions.yml:md5,5de873596967072366007d67fe652250" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-16T12:42:46.49042" + }, + "fastq - tsv": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv.gz:md5,1fcb7444ba029b7f41b3a836fec7ecac" + ] + ], + [ + "versions.yml:md5,5de873596967072366007d67fe652250" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-16T12:31:39.58768" + }, + "stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sti:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + "versions.yml:md5,5de873596967072366007d67fe652250" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "crai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "cram": [ + + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "paf": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sti": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sti:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,5de873596967072366007d67fe652250" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-16T11:56:39.765352" + }, + "fastq - unsorted bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,740d88010349b3cd487a8b6244c64c0d" + ] + ], + [ + "versions.yml:md5,5de873596967072366007d67fe652250" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-16T12:31:18.225205" + }, + "fastq - paf": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.paf.gz:md5,0992a1eb3dff9beca5849b9d1fc66390" + ] + ], + [ + "versions.yml:md5,5de873596967072366007d67fe652250" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-16T12:31:34.790627" + }, + "fastq - sorted bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,c9bf092d8998eac47b6b85afe9aa9038" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.csi:md5,8d53854f92b3f263db0ed27f4bbad054" + ] + ], + [ + "versions.yml:md5,5de873596967072366007d67fe652250" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-16T12:31:12.870782" + } +} \ No newline at end of file diff --git a/modules/nf-core/strobealign/tests/nextflow.config b/modules/nf-core/strobealign/tests/nextflow.config new file mode 100644 index 00000000..7c6b31b6 --- /dev/null +++ b/modules/nf-core/strobealign/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: STROBEALIGN { + ext.args = params.module_args + ext.args2 = params.module_args2 + } +} diff --git a/nextflow.config b/nextflow.config index d9645896..01378b19 100644 --- a/nextflow.config +++ b/nextflow.config @@ -185,6 +185,12 @@ profiles { } test { includeConfig 'conf/test.config' } test_full { includeConfig 'conf/test_full.config' } + s3_ugent { includeConfig 'conf/profiles/s3_ugent.config' } + // analysis profiles + sWGS { includeConfig 'conf/profiles/sWGS.config' } + WGS { includeConfig 'conf/profiles/WGS.config' } + WES { includeConfig 'conf/profiles/WES.config' } + copgt { includeConfig 'conf/profiles/copgt.config' } } // Load nf-core custom profiles from different institutions @@ -280,7 +286,7 @@ manifest { // Nextflow plugins plugins { - id 'nf-schema@2.5.1' // Validation of pipeline parameters and creation of an input channel from a sample sheet + id 'nf-schema@2.6.1' // Validation of pipeline parameters and creation of an input channel from a sample sheet } validation { diff --git a/nextflow_schema.json b/nextflow_schema.json index d6a4828f..1003fc1b 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -55,7 +55,7 @@ "type": "string", "default": "bowtie2", "description": "Which aligner to use", - "enum": ["bowtie2", "bwamem", "bwamem2", "dragmap", "snap", "star"] + "enum": ["bowtie2", "bwamem", "bwamem2", "dragmap", "snap", "strobe", "star"] }, "markdup": { "type": "string", diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index 1bcdab89..632da7c3 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -23,7 +23,7 @@ "@type": "Dataset", "creativeWorkStatus": "InProgress", "datePublished": "2025-11-13T15:11:21+00:00", - "description": "# nf-cmgg/preprocessing\n\n[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new/nf-cmgg/preprocessing)\n[![GitHub Actions CI Status](https://github.com/nf-cmgg/preprocessing/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-cmgg/preprocessing/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-cmgg/preprocessing/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-cmgg/preprocessing/actions/workflows/linting.yml)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.10.0-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.4.1-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.4.1)\n[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-cmgg/preprocessing)\n\n## Introduction\n\n**nf-cmgg/preprocessing** is a bioinformatics pipeline that demultiplexes and aligns raw sequencing data.\nIt also performs basic QC and coverage analysis.\n\nThe pipeline is built using Nextflow, a workflow tool to run tasks across multiple compute infrastructures in a very portable manner. It comes with docker containers making installation trivial and results highly reproducible.\n\nSteps inlcude:\n\n1. Demultiplexing using [`BCLconvert`](https://emea.support.illumina.com/sequencing/sequencing_software/bcl-convert.html)\n2. Read QC and trimming using [`fastp`](https://github.com/OpenGene/fastp)\n3. Alignment using either [`bwa`](https://github.com/lh3/bwa), [`bwa-mem2`](https://github.com/bwa-mem2/bwa-mem2), [`bowtie2`](https://github.com/BenLangmead/bowtie2), [`dragmap`](https://github.com/Illumina/DRAGMAP) or [`snap`](https://github.com/amplab/snap) for DNA-seq and [`STAR`](https://github.com/alexdobin/STAR) for RNA-seq\n4. Duplicate marking using [`bamsormadup`](https://gitlab.com/german.tischler/biobambam2) or [`samtools markdup`](http://www.htslib.org/doc/samtools-markdup.html)\n5. Coverage analysis using [`mosdepth`](https://github.com/brentp/mosdepth) and [`samtools coverage`](http://www.htslib.org/doc/samtools-coverage.html)\n6. Alignment QC using [`samtools flagstat`](http://www.htslib.org/doc/samtools-flagstat.html), [`samtools stats`](http://www.htslib.org/doc/samtools-stats.html), [`samtools idxstats`](http://www.htslib.org/doc/samtools-idxstats.html) and [`picard CollecHsMetrics`](https://broadinstitute.github.io/picard/command-line-overview.html#CollectHsMetrics), [`picard CollectWgsMetrics`](https://broadinstitute.github.io/picard/command-line-overview.html#CollectWgsMetrics), [`picard CollectMultipleMetrics`](https://broadinstitute.github.io/picard/command-line-overview.html#CollectMultipleMetrics)\n7. QC aggregation using [`multiqc`](https://multiqc.info/)\n\n![metro map](docs/images/metro_map.png)\n\n## Usage\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\nThe full documentation can be found [here](docs/README.md)\n\nFirst, prepare a samplesheet with your input data that looks as follows:\n\n`samplesheet.csv` for fastq inputs:\n\n```csv\nid,samplename,organism,library,fastq_1,fastq_2\nsample1,sample1,Homo sapiens,Library_Name,reads1.fq.gz,reads2.fq.gz\n```\n\n`samplesheet.csv` for flowcell inputs:\n\n```csv\nid,samplesheet,lane,flowcell,sample_info\nflowcell_id,/path/to/illumina_samplesheet.csv,1,/path/to/sequencer_uploaddir,/path/to/sampleinfo.csv\n```\n\n`sampleinfo.csv` for use with flowcell inputs:\n\n```csv\nsamplename,library,organism,tag\nfc_sample1,test,Homo sapiens,WES\n```\n\nNow, you can run the pipeline using:\n\n```bash\nnextflow run nf-cmgg/preprocessing \\\n -profile \\\n --igenomes_base /path/to/genomes \\\n --input samplesheet.csv \\\n --outdir \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_;\n> see [docs](https://nf-co.re/usage/configuration#custom-configuration-files).\n\n## Credits\n\nnf-cmgg/preprocessing was originally written by the CMGG ICT team.\n\n## Support\n\nThis pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/master/LICENSE).\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", + "description": "# nf-cmgg/preprocessing\n\n[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new/nf-cmgg/preprocessing)\n[![GitHub Actions CI Status](https://github.com/nf-cmgg/preprocessing/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-cmgg/preprocessing/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-cmgg/preprocessing/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-cmgg/preprocessing/actions/workflows/linting.yml)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.10.0-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.4.1-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.4.1)\n[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-cmgg/preprocessing)\n\n## Introduction\n\n**nf-cmgg/preprocessing** is a bioinformatics pipeline that demultiplexes and aligns raw sequencing data.\nIt also performs basic QC and coverage analysis.\n\nThe pipeline is built using Nextflow, a workflow tool to run tasks across multiple compute infrastructures in a very portable manner. It comes with docker containers making installation trivial and results highly reproducible.\n\nSteps inlcude:\n\n1. Demultiplexing using [`BCLconvert`](https://emea.support.illumina.com/sequencing/sequencing_software/bcl-convert.html)\n2. Read QC and trimming using [`fastp`](https://github.com/OpenGene/fastp)\n3. Alignment using either [`bwa`](https://github.com/lh3/bwa), [`bwa-mem2`](https://github.com/bwa-mem2/bwa-mem2), [`bowtie2`](https://github.com/BenLangmead/bowtie2), [`dragmap`](https://github.com/Illumina/DRAGMAP), [`snap`](https://github.com/amplab/snap) or [`strobe`](https://github.com/ksahlin/strobealign) for DNA-seq and [`STAR`](https://github.com/alexdobin/STAR) for RNA-seq\n4. Duplicate marking using [`bamsormadup`](https://gitlab.com/german.tischler/biobambam2) or [`samtools markdup`](http://www.htslib.org/doc/samtools-markdup.html)\n5. Coverage analysis using [`mosdepth`](https://github.com/brentp/mosdepth) and [`samtools coverage`](http://www.htslib.org/doc/samtools-coverage.html)\n6. Alignment QC using [`samtools flagstat`](http://www.htslib.org/doc/samtools-flagstat.html), [`samtools stats`](http://www.htslib.org/doc/samtools-stats.html), [`samtools idxstats`](http://www.htslib.org/doc/samtools-idxstats.html) and [`picard CollecHsMetrics`](https://broadinstitute.github.io/picard/command-line-overview.html#CollectHsMetrics), [`picard CollectWgsMetrics`](https://broadinstitute.github.io/picard/command-line-overview.html#CollectWgsMetrics), [`picard CollectMultipleMetrics`](https://broadinstitute.github.io/picard/command-line-overview.html#CollectMultipleMetrics)\n7. QC aggregation using [`multiqc`](https://multiqc.info/)\n\n![metro map](docs/images/metro_map.png)\n\n## Usage\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\nThe full documentation can be found [here](docs/README.md)\n\nFirst, prepare a samplesheet with your input data that looks as follows:\n\n`samplesheet.csv` for fastq inputs:\n\n```csv\nid,samplename,organism,library,fastq_1,fastq_2\nsample1,sample1,Homo sapiens,Library_Name,reads1.fq.gz,reads2.fq.gz\n```\n\n`samplesheet.csv` for flowcell inputs:\n\n```csv\nid,samplesheet,lane,flowcell,sample_info\nflowcell_id,/path/to/illumina_samplesheet.csv,1,/path/to/sequencer_uploaddir,/path/to/sampleinfo.csv\n```\n\n`sampleinfo.csv` for use with flowcell inputs:\n\n```csv\nsamplename,library,organism,tag\nfc_sample1,test,Homo sapiens,WES\n```\n\nNow, you can run the pipeline using:\n\n```bash\nnextflow run nf-cmgg/preprocessing \\\n -profile \\\n --igenomes_base /path/to/genomes \\\n --input samplesheet.csv \\\n --outdir \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_;\n> see [docs](https://nf-co.re/usage/configuration#custom-configuration-files).\n\n## Credits\n\nnf-cmgg/preprocessing was originally written by the CMGG ICT team.\n\n## Support\n\nThis pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/master/LICENSE).\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", "hasPart": [ { "@id": "main.nf" diff --git a/subworkflows/local/bam_qc/main.nf b/subworkflows/local/bam_qc/main.nf index bd2cc469..e35555a8 100644 --- a/subworkflows/local/bam_qc/main.nf +++ b/subworkflows/local/bam_qc/main.nf @@ -23,7 +23,6 @@ workflow BAM_QC { .set { ch_bam_bai_fasta } SAMTOOLS_STATS(ch_bam_bai_fasta) - ch_versions = ch_versions.mix(SAMTOOLS_STATS.out.versions.first()) ch_bam_bai_fasta .map { meta, bam, bai, _fasta -> diff --git a/subworkflows/local/bam_qc/meta.yml b/subworkflows/local/bam_qc/meta.yml new file mode 100644 index 00000000..e69de29b diff --git a/subworkflows/local/coverage/meta.yml b/subworkflows/local/coverage/meta.yml new file mode 100644 index 00000000..e69de29b diff --git a/subworkflows/local/fastq_align_rna/meta.yml b/subworkflows/local/fastq_align_rna/meta.yml new file mode 100644 index 00000000..e69de29b diff --git a/subworkflows/local/fastq_to_aligned_cram/main.nf b/subworkflows/local/fastq_to_aligned_cram/main.nf index 76ea8b63..c00f4d75 100644 --- a/subworkflows/local/fastq_to_aligned_cram/main.nf +++ b/subworkflows/local/fastq_to_aligned_cram/main.nf @@ -110,10 +110,9 @@ workflow FASTQ_TO_CRAM { } else if (markdup == "false" || markdup == false) { // Merge bam files and compress - // SAMTOOLS_SORT([meta, [bam, bam], fasta]) - SAMTOOLS_SORT(ch_bam_fasta) + // SAMTOOLS_SORT([meta, [bam, bam], fasta],index_format) + SAMTOOLS_SORT(ch_bam_fasta, "crai") ch_markdup_index = ch_markdup_index.mix(SAMTOOLS_SORT.out.cram.join(SAMTOOLS_SORT.out.crai, failOnMismatch: true, failOnDuplicate: true)) - ch_versions = ch_versions.mix(SAMTOOLS_SORT.out.versions.first()) } else { error("markdup: ${markdup} not supported") diff --git a/subworkflows/local/fastq_to_aligned_cram/meta.yml b/subworkflows/local/fastq_to_aligned_cram/meta.yml new file mode 100644 index 00000000..e69de29b diff --git a/subworkflows/local/fastq_to_unaligned_cram/meta.yml b/subworkflows/local/fastq_to_unaligned_cram/meta.yml new file mode 100644 index 00000000..e69de29b diff --git a/subworkflows/local/utils_nfcore_preprocessing_pipeline/meta.yml b/subworkflows/local/utils_nfcore_preprocessing_pipeline/meta.yml new file mode 100644 index 00000000..e69de29b diff --git a/subworkflows/nf-core/bcl_demultiplex/tests/main.nf.test b/subworkflows/nf-core/bcl_demultiplex/tests/main.nf.test index e1fb00ab..65a158e9 100644 --- a/subworkflows/nf-core/bcl_demultiplex/tests/main.nf.test +++ b/subworkflows/nf-core/bcl_demultiplex/tests/main.nf.test @@ -34,13 +34,13 @@ nextflow_workflow { { assert snapshot( sanitizeOutput(workflow.out, unstableKeys: ["empty_fastq", "logs"]).collectEntries { key, val -> if (key == "interop") { - return [ key, val.collect { meta, files -> - [ + return [ key, val.collect { meta, files -> + [ meta, - files.collect { interop_file -> + files.collect { interop_file -> if (interop_file.endsWith("IndexMetricsOut.bin")) { file(interop_file).name - } else { + } else { interop_file } } @@ -77,13 +77,13 @@ nextflow_workflow { { assert snapshot( sanitizeOutput(workflow.out).collectEntries { key, val -> if (key == "interop") { - return [ key, val.collect { meta, files -> - [ + return [ key, val.collect { meta, files -> + [ meta, - files.collect { interop_file -> + files.collect { interop_file -> if (interop_file.endsWith("IndexMetricsOut.bin")) { file(interop_file).name - } else { + } else { interop_file } } diff --git a/subworkflows/nf-core/fastq_align_dna/fastq_align_dna.diff b/subworkflows/nf-core/fastq_align_dna/fastq_align_dna.diff index 44d24df2..3b39944b 100644 --- a/subworkflows/nf-core/fastq_align_dna/fastq_align_dna.diff +++ b/subworkflows/nf-core/fastq_align_dna/fastq_align_dna.diff @@ -1,8 +1,26 @@ Changes in component 'nf-core/fastq_align_dna' +'subworkflows/nf-core/fastq_align_dna/meta.yml' is unchanged Changes in 'fastq_align_dna/main.nf': --- subworkflows/nf-core/fastq_align_dna/main.nf +++ subworkflows/nf-core/fastq_align_dna/main.nf -@@ -15,51 +15,59 @@ +@@ -5,68 +5,77 @@ + // + + +-include { BOWTIE2_ALIGN } from "../../../modules/nf-core/bowtie2/align/main" +-include { BWA_MEM as BWAMEM1_MEM } from '../../../modules/nf-core/bwa/mem/main' +-include { BWAMEM2_MEM as BWAMEM2_MEM } from '../../../modules/nf-core/bwamem2/mem/main' +-include { DRAGMAP_ALIGN } from "../../../modules/nf-core/dragmap/align/main" +-include { SNAPALIGNER_ALIGN as SNAP_ALIGN } from '../../../modules/nf-core/snapaligner/align/main' +-include { STROBEALIGN } from "../../../modules/nf-core/strobealign/main" ++include { BOWTIE2_ALIGN } from "../../../modules/nf-core/bowtie2/align/main" ++include { BWA_MEM as BWAMEM1_MEM } from '../../../modules/nf-core/bwa/mem/main' ++include { BWAMEM2_MEM } from '../../../modules/nf-core/bwamem2/mem/main' ++include { DRAGMAP_ALIGN } from "../../../modules/nf-core/dragmap/align/main" ++include { SNAPALIGNER_ALIGN } from '../../../modules/nf-core/snapaligner/align/main' ++include { STROBEALIGN } from "../../../modules/nf-core/strobealign/main" + + workflow FASTQ_ALIGN_DNA { take: @@ -36,6 +54,8 @@ Changes in 'fastq_align_dna/main.nf': + return [meta, reads, index, fasta] + snap : aligner == 'snap' + return [meta, reads, index] ++ strobe : aligner == 'strobe' ++ return [meta, reads, fasta, index] + other : true + } + .set{ch_to_align} @@ -48,63 +68,66 @@ Changes in 'fastq_align_dna/main.nf': // Align fastq files to reference genome and (optionally) sort - if (aligner == 'bowtie2') { - BOWTIE2_ALIGN(ch_reads, ch_aligner_index, ch_fasta, false, sort) // if aligner is bowtie2 -- ch_bam = ch_bam.mix(BOWTIE2_ALIGN.out.bam) ++ BOWTIE2_ALIGN(ch_to_align.bowtie2, false, sort) // if aligner is bowtie2 + ch_bam = ch_bam.mix(BOWTIE2_ALIGN.out.bam) - ch_versions = ch_versions.mix(BOWTIE2_ALIGN.out.versions) - } - else if (aligner == 'bwamem'){ - BWAMEM1_MEM (ch_reads, ch_aligner_index, ch_fasta, sort) // If aligner is bwa-mem -- ch_bam = ch_bam.mix(BWAMEM1_MEM.out.bam) -- ch_bam_index = ch_bam_index.mix(BWAMEM1_MEM.out.csi) ++ ch_versions = ch_versions.mix(BOWTIE2_ALIGN.out.versions.first()) ++ ++ BWAMEM1_MEM (ch_to_align.bwamem, sort) // If aligner is bwa-mem + ch_bam = ch_bam.mix(BWAMEM1_MEM.out.bam) + ch_bam_index = ch_bam_index.mix(BWAMEM1_MEM.out.csi) - ch_versions = ch_versions.mix(BWAMEM1_MEM.out.versions) - } - else if (aligner == 'bwamem2'){ - BWAMEM2_MEM (ch_reads, ch_aligner_index, ch_fasta, sort) // If aligner is bwa-mem2 -- ch_bam = ch_bam.mix(BWAMEM2_MEM.out.bam) ++ ch_versions = ch_versions.mix(BWAMEM1_MEM.out.versions.first()) ++ ++ BWAMEM2_MEM (ch_to_align.bwamem2, sort) // If aligner is bwa-mem2 + ch_bam = ch_bam.mix(BWAMEM2_MEM.out.bam) - ch_versions = ch_versions.mix(BWAMEM2_MEM.out.versions) - } - else if (aligner == 'dragmap'){ - DRAGMAP_ALIGN(ch_reads, ch_aligner_index, ch_fasta, sort) // If aligner is dragmap -- ch_bam = ch_bam.mix(DRAGMAP_ALIGN.out.bam) -- ch_reports = ch_reports.mix(DRAGMAP_ALIGN.out.log) ++ ch_versions = ch_versions.mix(BWAMEM2_MEM.out.versions.first()) ++ ++ DRAGMAP_ALIGN(ch_to_align.dragmap, sort) // If aligner is dragmap + ch_bam = ch_bam.mix(DRAGMAP_ALIGN.out.bam) + ch_reports = ch_reports.mix(DRAGMAP_ALIGN.out.log) - ch_versions = ch_versions.mix(DRAGMAP_ALIGN.out.versions) - } - else if (aligner == 'snap'){ -- SNAP_ALIGN (ch_reads, ch_aligner_index) // If aligner is snap +- SNAP_ALIGN (ch_reads, ch_aligner_index) // If aligner is snap - ch_bam = ch_bam.mix(SNAP_ALIGN.out.bam) - ch_bam_index.mix(SNAP_ALIGN.out.bai) - ch_versions = ch_versions.mix(SNAP_ALIGN.out.versions) - } +- else if (aligner == 'strobealign'){ +- STROBEALIGN (ch_reads, ch_fasta, ch_aligner_index, sort) // If aligner is strobealign +- ch_bam = ch_bam.mix(STROBEALIGN.out.bam) +- ch_bam_index = ch_bam_index.mix(STROBEALIGN.out.csi) +- ch_versions = ch_versions.mix(STROBEALIGN.out.versions) +- } - else { - error "Unknown aligner: ${aligner}" - } -+ BOWTIE2_ALIGN(ch_to_align.bowtie2, false, sort) // if aligner is bowtie2 -+ ch_bam = ch_bam.mix(BOWTIE2_ALIGN.out.bam) -+ ch_versions = ch_versions.mix(BOWTIE2_ALIGN.out.versions.first()) -+ -+ BWAMEM1_MEM (ch_to_align.bwamem, sort) // If aligner is bwa-mem -+ ch_bam = ch_bam.mix(BWAMEM1_MEM.out.bam) -+ ch_bam_index = ch_bam_index.mix(BWAMEM1_MEM.out.csi) -+ ch_versions = ch_versions.mix(BWAMEM1_MEM.out.versions.first()) -+ -+ BWAMEM2_MEM (ch_to_align.bwamem2, sort) // If aligner is bwa-mem2 -+ ch_bam = ch_bam.mix(BWAMEM2_MEM.out.bam) -+ ch_versions = ch_versions.mix(BWAMEM2_MEM.out.versions.first()) -+ -+ DRAGMAP_ALIGN(ch_to_align.dragmap, sort) // If aligner is dragmap -+ ch_bam = ch_bam.mix(DRAGMAP_ALIGN.out.bam) -+ ch_reports = ch_reports.mix(DRAGMAP_ALIGN.out.log) + ch_versions = ch_versions.mix(DRAGMAP_ALIGN.out.versions.first()) + -+ SNAP_ALIGN(ch_to_align.snap) // If aligner is snap -+ ch_bam = ch_bam.mix(SNAP_ALIGN.out.bam) -+ ch_bam_index.mix(SNAP_ALIGN.out.bai) -+ ch_versions = ch_versions.mix(SNAP_ALIGN.out.versions.first()) ++ SNAPALIGNER_ALIGN(ch_to_align.snap) // If aligner is snap ++ ch_bam = ch_bam.mix(SNAPALIGNER_ALIGN.out.bam) ++ ch_bam_index.mix(SNAPALIGNER_ALIGN.out.bai) ++ ch_versions = ch_versions.mix(SNAPALIGNER_ALIGN.out.versions.first()) ++ ++ STROBEALIGN(ch_to_align.strobe, sort) // If aligner is strobealign ++ ch_bam = ch_bam.mix(STROBEALIGN.out.bam) ++ ch_bam_index = ch_bam_index.mix(STROBEALIGN.out.csi) ++ ch_versions = ch_versions.mix(STROBEALIGN.out.versions.first()) emit: bam = ch_bam // channel: [ [meta], bam ] -'subworkflows/nf-core/fastq_align_dna/meta.yml' is unchanged -'subworkflows/nf-core/fastq_align_dna/tests/main.nf.test' is unchanged 'subworkflows/nf-core/fastq_align_dna/tests/main.nf.test.snap' is unchanged -'subworkflows/nf-core/fastq_align_dna/tests/nextflow.config' is unchanged +'subworkflows/nf-core/fastq_align_dna/tests/main.nf.test' is unchanged ************************************************************ diff --git a/subworkflows/nf-core/fastq_align_dna/main.nf b/subworkflows/nf-core/fastq_align_dna/main.nf index 6239522f..95cdf670 100644 --- a/subworkflows/nf-core/fastq_align_dna/main.nf +++ b/subworkflows/nf-core/fastq_align_dna/main.nf @@ -5,11 +5,12 @@ // -include { BOWTIE2_ALIGN } from "../../../modules/nf-core/bowtie2/align/main" -include { BWA_MEM as BWAMEM1_MEM } from '../../../modules/nf-core/bwa/mem/main' -include { BWAMEM2_MEM as BWAMEM2_MEM } from '../../../modules/nf-core/bwamem2/mem/main' -include { DRAGMAP_ALIGN } from "../../../modules/nf-core/dragmap/align/main" -include { SNAPALIGNER_ALIGN as SNAP_ALIGN } from '../../../modules/nf-core/snapaligner/align/main' +include { BOWTIE2_ALIGN } from "../../../modules/nf-core/bowtie2/align/main" +include { BWA_MEM as BWAMEM1_MEM } from '../../../modules/nf-core/bwa/mem/main' +include { BWAMEM2_MEM } from '../../../modules/nf-core/bwamem2/mem/main' +include { DRAGMAP_ALIGN } from "../../../modules/nf-core/dragmap/align/main" +include { SNAPALIGNER_ALIGN } from '../../../modules/nf-core/snapaligner/align/main' +include { STROBEALIGN } from "../../../modules/nf-core/strobealign/main" @@ -36,6 +37,8 @@ workflow FASTQ_ALIGN_DNA { return [meta, reads, index, fasta] snap : aligner == 'snap' return [meta, reads, index] + strobe : aligner == 'strobe' + return [meta, reads, fasta, index] other : true } .set{ch_to_align} @@ -47,27 +50,32 @@ workflow FASTQ_ALIGN_DNA { // Align fastq files to reference genome and (optionally) sort BOWTIE2_ALIGN(ch_to_align.bowtie2, false, sort) // if aligner is bowtie2 - ch_bam = ch_bam.mix(BOWTIE2_ALIGN.out.bam) + ch_bam = ch_bam.mix(BOWTIE2_ALIGN.out.bam) ch_versions = ch_versions.mix(BOWTIE2_ALIGN.out.versions.first()) BWAMEM1_MEM (ch_to_align.bwamem, sort) // If aligner is bwa-mem - ch_bam = ch_bam.mix(BWAMEM1_MEM.out.bam) - ch_bam_index = ch_bam_index.mix(BWAMEM1_MEM.out.csi) + ch_bam = ch_bam.mix(BWAMEM1_MEM.out.bam) + ch_bam_index = ch_bam_index.mix(BWAMEM1_MEM.out.csi) ch_versions = ch_versions.mix(BWAMEM1_MEM.out.versions.first()) BWAMEM2_MEM (ch_to_align.bwamem2, sort) // If aligner is bwa-mem2 - ch_bam = ch_bam.mix(BWAMEM2_MEM.out.bam) + ch_bam = ch_bam.mix(BWAMEM2_MEM.out.bam) ch_versions = ch_versions.mix(BWAMEM2_MEM.out.versions.first()) DRAGMAP_ALIGN(ch_to_align.dragmap, sort) // If aligner is dragmap - ch_bam = ch_bam.mix(DRAGMAP_ALIGN.out.bam) - ch_reports = ch_reports.mix(DRAGMAP_ALIGN.out.log) + ch_bam = ch_bam.mix(DRAGMAP_ALIGN.out.bam) + ch_reports = ch_reports.mix(DRAGMAP_ALIGN.out.log) ch_versions = ch_versions.mix(DRAGMAP_ALIGN.out.versions.first()) - SNAP_ALIGN(ch_to_align.snap) // If aligner is snap - ch_bam = ch_bam.mix(SNAP_ALIGN.out.bam) - ch_bam_index.mix(SNAP_ALIGN.out.bai) - ch_versions = ch_versions.mix(SNAP_ALIGN.out.versions.first()) + SNAPALIGNER_ALIGN(ch_to_align.snap) // If aligner is snap + ch_bam = ch_bam.mix(SNAPALIGNER_ALIGN.out.bam) + ch_bam_index.mix(SNAPALIGNER_ALIGN.out.bai) + ch_versions = ch_versions.mix(SNAPALIGNER_ALIGN.out.versions.first()) + + STROBEALIGN(ch_to_align.strobe, sort) // If aligner is strobealign + ch_bam = ch_bam.mix(STROBEALIGN.out.bam) + ch_bam_index = ch_bam_index.mix(STROBEALIGN.out.csi) + ch_versions = ch_versions.mix(STROBEALIGN.out.versions.first()) emit: bam = ch_bam // channel: [ [meta], bam ] diff --git a/subworkflows/nf-core/fastq_align_dna/meta.yml b/subworkflows/nf-core/fastq_align_dna/meta.yml index cd452612..26c3e237 100644 --- a/subworkflows/nf-core/fastq_align_dna/meta.yml +++ b/subworkflows/nf-core/fastq_align_dna/meta.yml @@ -9,12 +9,14 @@ keywords: - bwamem2 - dragmap - snapaligner + - strobealign components: - bowtie2/align - bwa/mem - bwamem2/mem - dragmap/align - snapaligner/align + - strobealign input: - meta: type: map @@ -53,6 +55,7 @@ input: - bwamem2 - dragmap - snap + - strobealign - sort_bam: type: boolean description: sort output diff --git a/subworkflows/nf-core/fastq_align_dna/tests/main.nf.test b/subworkflows/nf-core/fastq_align_dna/tests/main.nf.test index 48988102..b65eec69 100644 --- a/subworkflows/nf-core/fastq_align_dna/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_align_dna/tests/main.nf.test @@ -22,6 +22,7 @@ nextflow_workflow { tag "snapaligner" tag "snapaligner/index" tag "snapaligner/align" + tag "strobealign" test("test_fastq_align_bowtie2_SE") { setup { @@ -355,6 +356,46 @@ nextflow_workflow { } } + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match()} + ) + } + } + test ("test_fastq_align_strobealign_SE"){ + when { + workflow { + """ + input[0] = Channel.of([[ id:'test', single_end:true ], [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true)]]) + input[1] = [[:],[]] + input[2] = Channel.of([ [ id:'genome' ],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]) + input[3] = "strobealign" + input[4] = true + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match()} + ) + } + } + test ("test_fastq_align_strobealign_PE"){ + when { + workflow { + """ + input[0] = Channel.of([[ id:'test', single_end:false ], [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)]]) + input[1] = [[:],[]] + input[2] = Channel.of([ [ id:'genome' ],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]) + input[3] = "strobealign" + input[4] = true + """ + } + } + then { assertAll( { assert workflow.success}, diff --git a/subworkflows/nf-core/fastq_align_dna/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_align_dna/tests/main.nf.test.snap index a4fd38bc..9e34d924 100644 --- a/subworkflows/nf-core/fastq_align_dna/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_align_dna/tests/main.nf.test.snap @@ -9,14 +9,14 @@ ], [ - "versions.yml:md5,0e1a9cd2ce7baf650bec3dd365fbced7" + "versions.yml:md5,792091aac50160e3fbc865eba482e0c4" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T08:57:56.74202649" + "timestamp": "2025-09-23T11:46:20.36265064" }, "test_fastq_align_dragmap_PE": { "content": [ @@ -37,6 +37,53 @@ }, "timestamp": "2024-03-14T08:28:25.283436546" }, + "test_fastq_align_strobealign_PE": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,1d8fb5dce75cbfb87955c7ee03c17a5f" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,9d1991417e63455f5e7fe9d67e5985a4" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,1d8fb5dce75cbfb87955c7ee03c17a5f" + ] + ], + "bam_index": [ + + ], + "reports": [ + + ], + "versions": [ + "versions.yml:md5,9d1991417e63455f5e7fe9d67e5985a4" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-23T14:32:08.743821" + }, "test_fastq_align_bwa_mem_SE": { "content": [ "test.bam", @@ -47,14 +94,14 @@ ], [ - "versions.yml:md5,83f7314fe48e4c905a39e47723c78039" + "versions.yml:md5,315f4ae70b5322c025925d84c887da18" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T08:56:27.900928171" + "timestamp": "2025-09-23T11:20:12.631487104" }, "test_fastq_align_bwamem2_SE": { "content": [ @@ -66,14 +113,14 @@ ], [ - "versions.yml:md5,0e1a9cd2ce7baf650bec3dd365fbced7" + "versions.yml:md5,792091aac50160e3fbc865eba482e0c4" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T08:57:28.080810832" + "timestamp": "2025-09-23T11:46:07.813351063" }, "test_fastq_align_bwa_mem_PE": { "content": [ @@ -85,14 +132,14 @@ ], [ - "versions.yml:md5,83f7314fe48e4c905a39e47723c78039" + "versions.yml:md5,315f4ae70b5322c025925d84c887da18" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-27T08:56:55.897418514" + "timestamp": "2025-09-23T11:20:21.322039351" }, "test_fastq_align_bowtie2_SE": { "content": [ @@ -144,7 +191,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,1f4f6c38e40ddd5da7f644bb0f794aa8" + "test.bam:md5,504bcc1ac7f8d8e1e728276a4ce4f4d4" ] ], "1": [ @@ -154,7 +201,7 @@ ], "3": [ - "versions.yml:md5,ef9883fd373e293fbf6a98985d3c0308" + "versions.yml:md5,e98be7da5d37b69852090365352c3534" ], "bam": [ [ @@ -162,7 +209,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,1f4f6c38e40ddd5da7f644bb0f794aa8" + "test.bam:md5,504bcc1ac7f8d8e1e728276a4ce4f4d4" ] ], "bam_index": [ @@ -172,15 +219,62 @@ ], "versions": [ - "versions.yml:md5,ef9883fd373e293fbf6a98985d3c0308" + "versions.yml:md5,e98be7da5d37b69852090365352c3534" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-23T12:03:34.617919741" + }, + "test_fastq_align_strobealign_SE": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,30a9339ac99b881844cf8514f719f204" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,9d1991417e63455f5e7fe9d67e5985a4" + ], + "bam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,30a9339ac99b881844cf8514f719f204" + ] + ], + "bam_index": [ + + ], + "reports": [ + + ], + "versions": [ + "versions.yml:md5,9d1991417e63455f5e7fe9d67e5985a4" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" }, - "timestamp": "2024-03-14T08:19:36.298315938" + "timestamp": "2025-09-23T14:32:01.424171" }, "test_fastq_align_snapaligner_SE": { "content": [ @@ -191,7 +285,7 @@ "id": "test", "single_end": true }, - "test.bam:md5,6b3188b8e48ec5c155cfe02b9a24d37a" + "test.bam:md5,9de00a20df23dc66ddf0d9bba2e486c3" ] ], "1": [ @@ -201,7 +295,7 @@ ], "3": [ - "versions.yml:md5,ef9883fd373e293fbf6a98985d3c0308" + "versions.yml:md5,e98be7da5d37b69852090365352c3534" ], "bam": [ [ @@ -209,7 +303,7 @@ "id": "test", "single_end": true }, - "test.bam:md5,6b3188b8e48ec5c155cfe02b9a24d37a" + "test.bam:md5,9de00a20df23dc66ddf0d9bba2e486c3" ] ], "bam_index": [ @@ -219,14 +313,14 @@ ], "versions": [ - "versions.yml:md5,ef9883fd373e293fbf6a98985d3c0308" + "versions.yml:md5,e98be7da5d37b69852090365352c3534" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.04.7" }, - "timestamp": "2025-03-25T08:46:43.073714962" + "timestamp": "2025-09-23T12:03:25.88186957" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_align_dna/tests/nextflow.config b/subworkflows/nf-core/fastq_align_dna/tests/nextflow.config deleted file mode 100644 index 87892757..00000000 --- a/subworkflows/nf-core/fastq_align_dna/tests/nextflow.config +++ /dev/null @@ -1,12 +0,0 @@ -process { - withName: BOWTIE2_BUILD { - } - withName: BWA_INDEX { - } - withName: BWAMEM2_INDEX { - } - withName: DRAGMAP_HASHTABLE { - } - withName: SNAPALIGNER_INDEX { - } -} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index 2f30e9a4..bfd25876 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -98,7 +98,7 @@ def workflowVersionToYAML() { // Get channel of software versions used in pipeline in YAML format // def softwareVersionsToYAML(ch_versions) { - return ch_versions.unique().map { version -> processVersionsFromYAML(version) }.unique().mix(channel.of(workflowVersionToYAML())) + return ch_versions.unique().map { version -> processVersionsFromYAML(version) }.unique().mix(Channel.of(workflowVersionToYAML())) } // diff --git a/tests/subworkflows/local/bam_qc/main.nf.test.snap b/tests/subworkflows/local/bam_qc/main.nf.test.snap index daa07dff..2403cda0 100644 --- a/tests/subworkflows/local/bam_qc/main.nf.test.snap +++ b/tests/subworkflows/local/bam_qc/main.nf.test.snap @@ -68,23 +68,22 @@ "id": "test", "single_end": false }, - "test.stats:md5,18292ec37f6ff9eff458683e3abf638b" + "test.stats:md5,3535d8d302e61ca0d77ac718db8309f1" ] ], "versions": [ - "versions.yml:md5,1e3d06d4435935cb6c01c1d94dad41c3", - "versions.yml:md5,25efd393aac661d8cb2aa8669127abac", - "versions.yml:md5,28cad528cb128dd7bdad050758f1801c", - "versions.yml:md5,ebcad29c0749995f2306fbcf31b03c8c", - "versions.yml:md5,ff0b9222ca016f9d2a7fa1d24010eccf" + "versions.yml:md5,15389a9f97668f320b9628da1903a93b", + "versions.yml:md5,3fa45af2ff85005c0421d10e0b686bb5", + "versions.yml:md5,593804078c060457d011f7f6b650e500", + "versions.yml:md5,f5507938ec419f55239e3faa9f99376f" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-04T14:17:45.293786329" + "timestamp": "2025-12-02T12:48:55.096074" }, "Bam QC - Samtools": { "content": [ @@ -125,21 +124,20 @@ "id": "test", "single_end": false }, - "test.stats:md5,18292ec37f6ff9eff458683e3abf638b" + "test.stats:md5,3535d8d302e61ca0d77ac718db8309f1" ] ], "versions": [ - "versions.yml:md5,1e3d06d4435935cb6c01c1d94dad41c3", - "versions.yml:md5,28cad528cb128dd7bdad050758f1801c", - "versions.yml:md5,ff0b9222ca016f9d2a7fa1d24010eccf" + "versions.yml:md5,15389a9f97668f320b9628da1903a93b", + "versions.yml:md5,3fa45af2ff85005c0421d10e0b686bb5" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-04T14:19:09.897986912" + "timestamp": "2025-12-02T12:50:04.027873" }, "Bam QC - WGSmetrics": { "content": [ @@ -210,22 +208,21 @@ "id": "test", "single_end": false }, - "test.stats:md5,18292ec37f6ff9eff458683e3abf638b" + "test.stats:md5,3535d8d302e61ca0d77ac718db8309f1" ] ], "versions": [ - "versions.yml:md5,1e3d06d4435935cb6c01c1d94dad41c3", - "versions.yml:md5,25efd393aac661d8cb2aa8669127abac", - "versions.yml:md5,28cad528cb128dd7bdad050758f1801c", - "versions.yml:md5,5da695471744af2707c6864e2773aa27", - "versions.yml:md5,ff0b9222ca016f9d2a7fa1d24010eccf" + "versions.yml:md5,15389a9f97668f320b9628da1903a93b", + "versions.yml:md5,3d2d9acb75406ea94b547be23a45601b", + "versions.yml:md5,3fa45af2ff85005c0421d10e0b686bb5", + "versions.yml:md5,f5507938ec419f55239e3faa9f99376f" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-04T14:18:47.271352687" + "timestamp": "2025-12-02T12:49:52.298773" } } \ No newline at end of file diff --git a/tests/subworkflows/local/coverage/main.nf.test.snap b/tests/subworkflows/local/coverage/main.nf.test.snap index 7c779621..2891b942 100644 --- a/tests/subworkflows/local/coverage/main.nf.test.snap +++ b/tests/subworkflows/local/coverage/main.nf.test.snap @@ -49,9 +49,9 @@ ] ], "14": [ - "versions.yml:md5,2d22ebfca674911d28ac60f352a98b1b", + "versions.yml:md5,67ac37f5eff6c19b8c605a2258aa721c", "versions.yml:md5,731a006ffa265ac74ad677b4e5a68640", - "versions.yml:md5,d7c2bc4717e6518d6ce017a70a3f1df0" + "versions.yml:md5,8d8a3cea555f0b04692395a47351d7ef" ], "2": [ [ @@ -123,7 +123,7 @@ "single_end": false, "tag": "WES" }, - "test.quantized.bed.gz.csi:md5,39f0a425a3f11134e247141c0890fa89" + "test.quantized.bed.gz.csi:md5,22e9d1096b7afd3d628526c831b26397" ] ], "mosdepth_global": [ @@ -176,7 +176,7 @@ "single_end": false, "tag": "WES" }, - "test.quantized.bed.gz.csi:md5,39f0a425a3f11134e247141c0890fa89" + "test.quantized.bed.gz.csi:md5,22e9d1096b7afd3d628526c831b26397" ] ], "mosdepth_regions": [ @@ -246,17 +246,17 @@ ] ], "versions": [ - "versions.yml:md5,2d22ebfca674911d28ac60f352a98b1b", + "versions.yml:md5,67ac37f5eff6c19b8c605a2258aa721c", "versions.yml:md5,731a006ffa265ac74ad677b4e5a68640", - "versions.yml:md5,d7c2bc4717e6518d6ce017a70a3f1df0" + "versions.yml:md5,8d8a3cea555f0b04692395a47351d7ef" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-04T14:20:02.213734734" + "timestamp": "2025-12-02T12:34:24.897893" }, "Coverage - seqcap": { "content": [ @@ -301,8 +301,8 @@ ], "14": [ - "versions.yml:md5,2d22ebfca674911d28ac60f352a98b1b", - "versions.yml:md5,d7c2bc4717e6518d6ce017a70a3f1df0" + "versions.yml:md5,67ac37f5eff6c19b8c605a2258aa721c", + "versions.yml:md5,8d8a3cea555f0b04692395a47351d7ef" ], "2": [ [ @@ -374,7 +374,7 @@ "single_end": false, "tag": "seqcap" }, - "test.quantized.bed.gz.csi:md5,39f0a425a3f11134e247141c0890fa89" + "test.quantized.bed.gz.csi:md5,22e9d1096b7afd3d628526c831b26397" ] ], "mosdepth_global": [ @@ -427,7 +427,7 @@ "single_end": false, "tag": "seqcap" }, - "test.quantized.bed.gz.csi:md5,39f0a425a3f11134e247141c0890fa89" + "test.quantized.bed.gz.csi:md5,22e9d1096b7afd3d628526c831b26397" ] ], "mosdepth_regions": [ @@ -490,15 +490,15 @@ ] ], "versions": [ - "versions.yml:md5,2d22ebfca674911d28ac60f352a98b1b", - "versions.yml:md5,d7c2bc4717e6518d6ce017a70a3f1df0" + "versions.yml:md5,67ac37f5eff6c19b8c605a2258aa721c", + "versions.yml:md5,8d8a3cea555f0b04692395a47351d7ef" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-04T14:19:32.672589279" + "timestamp": "2025-12-02T12:34:05.200571" } } \ No newline at end of file diff --git a/tests/subworkflows/local/fastq_to_aligned_cram/main.nf.test.snap b/tests/subworkflows/local/fastq_to_aligned_cram/main.nf.test.snap index bcaa1414..d1459def 100644 --- a/tests/subworkflows/local/fastq_to_aligned_cram/main.nf.test.snap +++ b/tests/subworkflows/local/fastq_to_aligned_cram/main.nf.test.snap @@ -28,17 +28,16 @@ ], "versions": [ - "versions.yml:md5,a7ccfeb53d42f57673ea59012c30e897", - "versions.yml:md5,d92f130d879deee51a23917c6e272233", - "versions.yml:md5,d92f130d879deee51a23917c6e272233" + "versions.yml:md5,5f142fd2dfa129d6b28f1368516bca75", + "versions.yml:md5,5f142fd2dfa129d6b28f1368516bca75" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-04T14:30:29.475396941" + "timestamp": "2025-12-02T13:40:29.319628" }, "fastq to cram - bwa - bamsormadup": { "content": [ @@ -84,18 +83,18 @@ ] ], "versions": [ - "versions.yml:md5,7e9be834e78aaf958ee23618377d8da5", - "versions.yml:md5,d8544811f6b511ef45e9c3547430a30d", - "versions.yml:md5,d92f130d879deee51a23917c6e272233", - "versions.yml:md5,d92f130d879deee51a23917c6e272233" + "versions.yml:md5,5f142fd2dfa129d6b28f1368516bca75", + "versions.yml:md5,5f142fd2dfa129d6b28f1368516bca75", + "versions.yml:md5,9598e8236a8fbab0f6745715fa0de9d3", + "versions.yml:md5,d8544811f6b511ef45e9c3547430a30d" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-04T14:24:09.28415088" + "timestamp": "2025-12-02T12:52:20.737608" }, "fastq to cram - bwa - samtools sormadup": { "content": [ @@ -137,21 +136,21 @@ } } }, - "test.merged.metrics:md5,6e4d03a56877997e0e035d267550e381" + "test.merged.metrics:md5,a4129081c3f2f10e6f6ecdf8b1c44852" ] ], "versions": [ - "versions.yml:md5,7d966b1716b0f134534741313257f0ec", - "versions.yml:md5,d92f130d879deee51a23917c6e272233", - "versions.yml:md5,d92f130d879deee51a23917c6e272233" + "versions.yml:md5,53fb2eac4cab0b817e852418eb0ba719", + "versions.yml:md5,5f142fd2dfa129d6b28f1368516bca75", + "versions.yml:md5,5f142fd2dfa129d6b28f1368516bca75" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-04T14:28:32.155644934" + "timestamp": "2025-12-02T13:04:47.356008" }, "fastq to cram - star - bamsormadup": { "content": [ @@ -197,16 +196,16 @@ ] ], "versions": [ - "versions.yml:md5,7e9be834e78aaf958ee23618377d8da5", + "versions.yml:md5,9598e8236a8fbab0f6745715fa0de9d3", "versions.yml:md5,d8544811f6b511ef45e9c3547430a30d" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-04T14:27:31.44516813" + "timestamp": "2025-12-02T13:04:21.082358" }, "fastq to cram - bwa - samtools sort": { "content": [ @@ -237,16 +236,15 @@ ], "versions": [ - "versions.yml:md5,a7ccfeb53d42f57673ea59012c30e897", - "versions.yml:md5,d92f130d879deee51a23917c6e272233", - "versions.yml:md5,d92f130d879deee51a23917c6e272233" + "versions.yml:md5,5f142fd2dfa129d6b28f1368516bca75", + "versions.yml:md5,5f142fd2dfa129d6b28f1368516bca75" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-04T14:29:30.443653387" + "timestamp": "2025-12-02T13:40:06.599667" } } \ No newline at end of file diff --git a/tests/subworkflows/local/fastq_to_unaligned_cram/main.nf.test.snap b/tests/subworkflows/local/fastq_to_unaligned_cram/main.nf.test.snap index 3dfdcb8b..39fd0d73 100644 --- a/tests/subworkflows/local/fastq_to_unaligned_cram/main.nf.test.snap +++ b/tests/subworkflows/local/fastq_to_unaligned_cram/main.nf.test.snap @@ -16,15 +16,15 @@ ] ], "versions": [ - "versions.yml:md5,422c9b3605121c3528ee755bbdb12a85", - "versions.yml:md5,f494e9f15ef064e11d31abca2f2ba51c" + "versions.yml:md5,7d0123b33defe52fceb94bd95f802978", + "versions.yml:md5,f253e859e7aa43e34481f5493c4e847b" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-04T14:30:55.301756415" + "timestamp": "2025-12-02T13:05:20.48603" } } \ No newline at end of file diff --git a/tests/workflows/preprocessing.nf.test.snap b/tests/workflows/preprocessing.nf.test.snap index 36fadad2..348c1fd2 100644 --- a/tests/workflows/preprocessing.nf.test.snap +++ b/tests/workflows/preprocessing.nf.test.snap @@ -102,7 +102,7 @@ "roi": "/nf-cmgg/test-datasets/raw/preprocessing/data/genomics/homo_sapiens/illumina/regions/roi_chr21.bed", "count": 1 }, - "sample1.fastp.json:md5,543fb8fe4512975ce7dafd5287cae601" + "sample1.fastp.json:md5,caf903cc79784ceaa71d6ef743c02ff3" ] ], "md5sums": [ @@ -261,7 +261,7 @@ "id": "sample1" } }, - "sample1.quantized.bed.gz.csi:md5,ac24f9c737b984091364b3c5b1f45567" + "sample1.quantized.bed.gz.csi:md5,efa0455ec39b49b96fd44c1efcbef8ab" ] ], "mosdepth_regions": [ @@ -580,7 +580,7 @@ "id": "sample1" } }, - "sample1.stats:md5,0653e8f1834d58c557ad463c36ae6b61" + "sample1.stats:md5,33a10d02ce404301e012f07841815f59" ] ], "sormadup_metrics": [ @@ -613,27 +613,26 @@ ], "versions": [ - "versions.yml:md5,321e55c8f19102dc87a10e981635edda", - "versions.yml:md5,3e9382a1dc62d4f405bcfb58fe6b7768", - "versions.yml:md5,4445e842758f99d74d032eab0af01ff6", - "versions.yml:md5,4445e842758f99d74d032eab0af01ff6", - "versions.yml:md5,67e17554941666c3f3da7ab6e3b1ac5d", - "versions.yml:md5,84a41fdb642c270c5f36846cd7d8f033", - "versions.yml:md5,8ede2c6189fe1f73ef7e36b42528473c", - "versions.yml:md5,a18197a27823760677276bdf9a17c0b6", - "versions.yml:md5,bfc234edc6fd6d67600cac71c66ecd10", + "versions.yml:md5,02acae00818ba01a01e2bdb03b574343", + "versions.yml:md5,23b060bcc18a02fc8f981102ef3a3006", + "versions.yml:md5,31df076e5d21d61db772cb39643350e2", + "versions.yml:md5,b702df83d9ece54caa0e765a6286cdd2", + "versions.yml:md5,c4fcc95fcd514eab38e980cacf0d4e8c", + "versions.yml:md5,c4fcc95fcd514eab38e980cacf0d4e8c", "versions.yml:md5,c7a35abdd7b3bdda729b3e782bf5f73d", + "versions.yml:md5,cdce7da7ce14e29fbd9fd72e88505ffa", + "versions.yml:md5,d00b52835d019d68e58aafd218429a75", "versions.yml:md5,d11c133ecb39ba9f6d7e081a8a6ff868", - "versions.yml:md5,ebdd9fe0c553612c66238375b920f178", - "versions.yml:md5,fecf2763ae04725fa0ca7c995018dcea" + "versions.yml:md5,f567cdcfb384cc7a2d9ff4dc850f3bad", + "versions.yml:md5,fe9b8b3a8dc895efcf8f7c0b3248ff2d" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-21T14:24:42.558578431" + "timestamp": "2025-12-02T13:07:39.314799" }, "preprocessing - fastq - bwa - bamsormadup - roi - no coverage/no picard": { "content": [ @@ -738,7 +737,7 @@ "roi": "/nf-cmgg/test-datasets/raw/preprocessing/data/genomics/homo_sapiens/illumina/regions/roi_chr21.bed", "count": 1 }, - "sample1.fastp.json:md5,543fb8fe4512975ce7dafd5287cae601" + "sample1.fastp.json:md5,caf903cc79784ceaa71d6ef743c02ff3" ] ], "md5sums": [ @@ -907,7 +906,7 @@ "id": "sample1" } }, - "sample1.stats:md5,0653e8f1834d58c557ad463c36ae6b61" + "sample1.stats:md5,33a10d02ce404301e012f07841815f59" ] ], "sormadup_metrics": [ @@ -940,23 +939,22 @@ ], "versions": [ - "versions.yml:md5,321e55c8f19102dc87a10e981635edda", - "versions.yml:md5,4445e842758f99d74d032eab0af01ff6", - "versions.yml:md5,4445e842758f99d74d032eab0af01ff6", - "versions.yml:md5,67e17554941666c3f3da7ab6e3b1ac5d", - "versions.yml:md5,8ede2c6189fe1f73ef7e36b42528473c", - "versions.yml:md5,a18197a27823760677276bdf9a17c0b6", - "versions.yml:md5,bfc234edc6fd6d67600cac71c66ecd10", + "versions.yml:md5,c4fcc95fcd514eab38e980cacf0d4e8c", + "versions.yml:md5,c4fcc95fcd514eab38e980cacf0d4e8c", "versions.yml:md5,c7a35abdd7b3bdda729b3e782bf5f73d", - "versions.yml:md5,d11c133ecb39ba9f6d7e081a8a6ff868" + "versions.yml:md5,cdce7da7ce14e29fbd9fd72e88505ffa", + "versions.yml:md5,d00b52835d019d68e58aafd218429a75", + "versions.yml:md5,d11c133ecb39ba9f6d7e081a8a6ff868", + "versions.yml:md5,f567cdcfb384cc7a2d9ff4dc850f3bad", + "versions.yml:md5,fe9b8b3a8dc895efcf8f7c0b3248ff2d" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-21T14:29:48.196853611" + "timestamp": "2025-12-02T13:12:08.110112" }, "preprocessing - fastq - bwa - bamsormadup - no roi": { "content": [ @@ -1058,7 +1056,7 @@ "aligner": "bwamem", "count": 1 }, - "sample1.fastp.json:md5,543fb8fe4512975ce7dafd5287cae601" + "sample1.fastp.json:md5,caf903cc79784ceaa71d6ef743c02ff3" ] ], "md5sums": [ @@ -1211,7 +1209,7 @@ "id": "sample1" } }, - "sample1.quantized.bed.gz.csi:md5,ac24f9c737b984091364b3c5b1f45567" + "sample1.quantized.bed.gz.csi:md5,efa0455ec39b49b96fd44c1efcbef8ab" ] ], "mosdepth_regions": [ @@ -1453,7 +1451,7 @@ "id": "sample1" } }, - "sample1.stats:md5,0653e8f1834d58c557ad463c36ae6b61" + "sample1.stats:md5,33a10d02ce404301e012f07841815f59" ] ], "sormadup_metrics": [ @@ -1485,26 +1483,25 @@ ], "versions": [ - "versions.yml:md5,2dbfdf50978986550dbe621f1d49fea7", - "versions.yml:md5,321e55c8f19102dc87a10e981635edda", - "versions.yml:md5,3e9382a1dc62d4f405bcfb58fe6b7768", - "versions.yml:md5,4445e842758f99d74d032eab0af01ff6", - "versions.yml:md5,4445e842758f99d74d032eab0af01ff6", - "versions.yml:md5,67e17554941666c3f3da7ab6e3b1ac5d", - "versions.yml:md5,84a41fdb642c270c5f36846cd7d8f033", - "versions.yml:md5,8ede2c6189fe1f73ef7e36b42528473c", - "versions.yml:md5,a18197a27823760677276bdf9a17c0b6", - "versions.yml:md5,bfc234edc6fd6d67600cac71c66ecd10", + "versions.yml:md5,1d2a9b13790c70a69a1f62facc9b3a6c", + "versions.yml:md5,23b060bcc18a02fc8f981102ef3a3006", + "versions.yml:md5,31df076e5d21d61db772cb39643350e2", + "versions.yml:md5,b702df83d9ece54caa0e765a6286cdd2", + "versions.yml:md5,c4fcc95fcd514eab38e980cacf0d4e8c", + "versions.yml:md5,c4fcc95fcd514eab38e980cacf0d4e8c", "versions.yml:md5,c7a35abdd7b3bdda729b3e782bf5f73d", + "versions.yml:md5,cdce7da7ce14e29fbd9fd72e88505ffa", + "versions.yml:md5,d00b52835d019d68e58aafd218429a75", "versions.yml:md5,d11c133ecb39ba9f6d7e081a8a6ff868", - "versions.yml:md5,fecf2763ae04725fa0ca7c995018dcea" + "versions.yml:md5,f567cdcfb384cc7a2d9ff4dc850f3bad", + "versions.yml:md5,fe9b8b3a8dc895efcf8f7c0b3248ff2d" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-21T14:28:06.35129428" + "timestamp": "2025-12-02T13:10:35.894317" } } \ No newline at end of file diff --git a/workflows/preprocessing.nf b/workflows/preprocessing.nf index 68e017b1..f90dd2eb 100644 --- a/workflows/preprocessing.nf +++ b/workflows/preprocessing.nf @@ -205,7 +205,7 @@ workflow PREPROCESSING { // MODULE: fastp // Run QC, trimming and adapter removal // FASTP([meta, fastq], adapter_fasta, save_trimmed, save_merged) - FASTP(ch_fastq_per_sample, [], false, false, false) + FASTP(ch_fastq_per_sample.map{ meta, fastq -> return [meta, fastq, []] }, false, false, false) ch_multiqc_files = ch_multiqc_files.mix( FASTP.out.json.map { _meta, json -> return json @@ -446,6 +446,32 @@ workflow PREPROCESSING { // // Collate and save software versions // + def topic_versions = Channel.topic("versions") + .distinct() + .branch { entry -> + versions_file: entry instanceof Path + versions_tuple: true + } + + def topic_versions_string = topic_versions.versions_tuple + .map { process, tool, version -> + [ process[process.lastIndexOf(':')+1..-1], " ${tool}: ${version}" ] + } + .groupTuple(by:0) + .map { process, tool_versions -> + tool_versions.unique().sort() + "${process}:\n${tool_versions.join('\n')}" + } + + softwareVersionsToYAML(ch_versions.mix(topic_versions.versions_file)) + .mix(topic_versions_string) + .collectFile( + storeDir: "${params.outdir}/pipeline_info", + name: 'nf_cmgg_preprocessing_software_mqc_versions.yml', + sort: true, + newLine: true + ).set { ch_collated_versions } + softwareVersionsToYAML(ch_versions) .collectFile(storeDir: "${params.outdir}/pipeline_info", name: 'preprocessing_software_mqc_versions.yml', sort: true, newLine: true) .set { ch_collated_versions }