diff --git a/modules/nf-core/parsesdrf/convert/environment.yml b/modules/nf-core/parsesdrf/convert/environment.yml new file mode 100644 index 00000000000..1cdf974745a --- /dev/null +++ b/modules/nf-core/parsesdrf/convert/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::sdrf-pipelines=0.1.4" diff --git a/modules/nf-core/parsesdrf/convert/main.nf b/modules/nf-core/parsesdrf/convert/main.nf new file mode 100644 index 00000000000..d3329218a1f --- /dev/null +++ b/modules/nf-core/parsesdrf/convert/main.nf @@ -0,0 +1,81 @@ +process PARSESDRF_CONVERT { + tag "${meta.id}" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/sdrf-pipelines:0.1.4--pyhdfd78af_0': + 'quay.io/biocontainers/sdrf-pipelines:0.1.4--pyhdfd78af_0' }" + + input: + tuple val(meta), path(sdrf) + val format + + output: + tuple val(meta), path("${prefix}_samplesheet.tsv"), path("${prefix}_presets.tsv"), emit: mhcquant, optional: true + tuple val(meta), path("${prefix}_samplesheet.tsv"), path("${prefix}_experimental_design.tsv"), emit: openms, optional: true + tuple val(meta), path("${prefix}.xml"), path("${prefix}_design.txt"), emit: maxquant, optional: true + tuple val(meta), path("${prefix}.csv"), emit: msstats, optional: true + tuple val(meta), path("${prefix}_design.csv"), path("${prefix}_comparisons.csv"), emit: normalyzerde, optional: true + tuple val(meta), path("${prefix}.cfg"), path("${prefix}_design.tsv"), emit: diann, optional: true + tuple val("${task.process}"), val('sdrf-pipelines'), eval("parse_sdrf --version | cut -d ' ' -f 2"), topic: versions, emit: versions_sdrfpipelines + + when: + task.ext.when == null || task.ext.when + + script: + prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: '' + def output_args = '' + def post = '' + + if (format == 'mhcquant') { + output_args = "-os ${prefix}_samplesheet.tsv -op ${prefix}_presets.tsv" + } else if (format == 'openms') { + // convert-openms writes openms.tsv + (optionally) experimental_design.tsv + post = "mv openms.tsv ${prefix}_samplesheet.tsv ; [ -f experimental_design.tsv ] && mv experimental_design.tsv ${prefix}_experimental_design.tsv || true" + } else if (format == 'maxquant') { + // --fastafilepath and --raw_folder must be supplied via task.ext.args + output_args = "-o1 ${prefix}.xml -o2 ${prefix}_design.txt" + } else if (format == 'msstats') { + output_args = "-o ${prefix}.csv" + } else if (format == 'normalyzerde') { + output_args = "-o ${prefix}_design.csv -oc ${prefix}_comparisons.csv" + } else if (format == 'diann') { + // convert-diann writes diann_config.cfg + diann_design.tsv with fixed names + post = "mv diann_config.cfg ${prefix}.cfg && mv diann_design.tsv ${prefix}_design.tsv" + } else { + error "PARSESDRF_CONVERT: unsupported format '${format}' (expected one of: mhcquant, openms, maxquant, msstats, normalyzerde, diann)" + } + + """ + parse_sdrf convert-${format} \\ + -s ${sdrf} \\ + ${output_args} \\ + ${args} + ${post} + """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + def stub_files + if (format == 'mhcquant') { + stub_files = ["${prefix}_samplesheet.tsv", "${prefix}_presets.tsv"] + } else if (format == 'openms') { + stub_files = ["${prefix}_samplesheet.tsv", "${prefix}_experimental_design.tsv"] + } else if (format == 'maxquant') { + stub_files = ["${prefix}.xml", "${prefix}_design.txt"] + } else if (format == 'msstats') { + stub_files = ["${prefix}.csv"] + } else if (format == 'normalyzerde') { + stub_files = ["${prefix}_design.csv", "${prefix}_comparisons.csv"] + } else if (format == 'diann') { + stub_files = ["${prefix}.cfg", "${prefix}_design.tsv"] + } else { + error "PARSESDRF_CONVERT: unsupported format '${format}'" + } + def touches = stub_files.collect { f -> "touch ${f}" }.join('\n ') + """ + ${touches} + """ +} diff --git a/modules/nf-core/parsesdrf/convert/meta.yml b/modules/nf-core/parsesdrf/convert/meta.yml new file mode 100644 index 00000000000..7a4c2e2dbe3 --- /dev/null +++ b/modules/nf-core/parsesdrf/convert/meta.yml @@ -0,0 +1,168 @@ +name: "parsesdrf_convert" +description: | + Convert an SDRF (Sample and Data Relationship Format) file into a + pipeline-specific samplesheet/configuration using the `parse_sdrf + convert-` subcommands of the sdrf-pipelines package. The chosen + `format` selects the subcommand; the module owns the output filenames and + emits one tuple per supported format (mhcquant, openms, maxquant, msstats, + normalyzerde, diann). +keywords: + - sdrf + - sdrf-pipelines + - samplesheet + - proteomics + - immunopeptidomics + - mhcquant + - openms + - maxquant + - msstats + - normalyzerde + - diann + - metadata +tools: + - "sdrf-pipelines": + description: "A set of tools to validate and convert SDRF files for proteomics + pipelines." + homepage: "https://github.com/bigbio/sdrf-pipelines" + documentation: "https://github.com/bigbio/sdrf-pipelines" + tool_dev_url: "https://github.com/bigbio/sdrf-pipelines" + doi: "10.1021/acs.jproteome.1c00505" + licence: + - "Apache-2.0" + identifier: "biotools:sdrf-pipelines" +input: + - - meta: + type: map + description: | + Groovy Map containing sample/run information + e.g. `[ id:'PXD009752' ]` + - sdrf: + type: file + description: SDRF file describing the experimental design and sample metadata. + pattern: "*.{tsv,sdrf.tsv}" + ontologies: + - edam: http://edamontology.org/format_3475 + - format: + type: string + description: | + Target converter. One of: `mhcquant`, `openms`, `maxquant`, + `msstats`, `normalyzerde`, `diann`. Selects the + `parse_sdrf convert-` subcommand. For `maxquant`, the + required `--fastafilepath` and `--raw_folder` arguments must be + passed via `task.ext.args`. +output: + mhcquant: + - - meta: + type: map + description: Groovy Map containing sample/run information + - "${prefix}_samplesheet.tsv": + type: file + description: MHCquant samplesheet TSV (`-os`). + pattern: "*_samplesheet.tsv" + ontologies: + - edam: http://edamontology.org/format_3475 + - "${prefix}_presets.tsv": + type: file + description: MHCquant search-preset TSV (`-op`). + pattern: "*_presets.tsv" + ontologies: + - edam: http://edamontology.org/format_3475 + openms: + - - meta: + type: map + description: Groovy Map containing sample/run information + - "${prefix}_samplesheet.tsv": + type: file + description: OpenMS samplesheet TSV (renamed from `openms.tsv`). + pattern: "*_samplesheet.tsv" + ontologies: + - edam: http://edamontology.org/format_3475 + - "${prefix}_experimental_design.tsv": + type: file + description: OpenMS experimental design TSV. + pattern: "*_experimental_design.tsv" + ontologies: + - edam: http://edamontology.org/format_3475 + maxquant: + - - meta: + type: map + description: Groovy Map containing sample/run information + - "${prefix}.xml": + type: file + description: MaxQuant `mqpar.xml` (`-o1`). Requires `aux=[fasta, raw_folder]`. + pattern: "*.xml" + ontologies: + - edam: http://edamontology.org/format_2332 + - "${prefix}_design.txt": + type: file + description: MaxQuant experimental design TXT (`-o2`). + pattern: "*_design.txt" + ontologies: + - edam: http://edamontology.org/format_3475 + msstats: + - - meta: + type: map + description: Groovy Map containing sample/run information + - "${prefix}.csv": + type: file + description: MSstats annotation CSV (`-o`). + pattern: "*.csv" + ontologies: + - edam: http://edamontology.org/format_3752 + normalyzerde: + - - meta: + type: map + description: Groovy Map containing sample/run information + - "${prefix}_design.csv": + type: file + description: NormalyzerDE design CSV (`-o`). + pattern: "*_design.csv" + ontologies: + - edam: http://edamontology.org/format_3752 + - "${prefix}_comparisons.csv": + type: file + description: NormalyzerDE comparisons CSV (`-oc`). + pattern: "*_comparisons.csv" + ontologies: + - edam: http://edamontology.org/format_3752 + diann: + - - meta: + type: map + description: Groovy Map containing sample/run information + - "${prefix}.cfg": + type: file + description: DIA-NN config (renamed from `diann_config.cfg`). + pattern: "*.cfg" + ontologies: + - edam: http://edamontology.org/format_2330 + - "${prefix}_design.tsv": + type: file + description: DIA-NN experimental design TSV (renamed from `diann_design.tsv`). + pattern: "*_design.tsv" + ontologies: + - edam: http://edamontology.org/format_3475 + versions_sdrfpipelines: + - - "${task.process}": + type: string + description: The name of the process + - "sdrf-pipelines": + type: string + description: The name of the tool + - "parse_sdrf --version | cut -d ' ' -f 2": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - "${task.process}": + type: string + description: The name of the process + - "sdrf-pipelines": + type: string + description: The name of the tool + - "parse_sdrf --version | cut -d ' ' -f 2": + type: eval + description: The expression to obtain the version of the tool +authors: + - "@jonasscheid" +maintainers: + - "@jonasscheid" diff --git a/modules/nf-core/parsesdrf/convert/tests/main.nf.test b/modules/nf-core/parsesdrf/convert/tests/main.nf.test new file mode 100644 index 00000000000..b7a51fa0420 --- /dev/null +++ b/modules/nf-core/parsesdrf/convert/tests/main.nf.test @@ -0,0 +1,337 @@ +nextflow_process { + + name "Test Process PARSESDRF_CONVERT" + script "../main.nf" + process "PARSESDRF_CONVERT" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "parsesdrf" + tag "parsesdrf/convert" + + test("sdrf - mhcquant - PXD009752") { + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id: 'PXD009752' ], + file('https://raw.githubusercontent.com/nf-core/test-datasets/mhcquant/testdata/PXD009752.sdrf.tsv', checkIfExists: true) + ] + input[1] = 'mhcquant' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sdrf - openms - PXD009752") { + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id: 'PXD009752' ], + file('https://raw.githubusercontent.com/nf-core/test-datasets/mhcquant/testdata/PXD009752.sdrf.tsv', checkIfExists: true) + ] + input[1] = 'openms' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sdrf - maxquant - PXD009752") { + + when { + params { + module_args = '-f PXD009752.sdrf.tsv -r .' + } + process { + """ + input[0] = [ + [ id: 'PXD009752' ], + file('https://raw.githubusercontent.com/nf-core/test-datasets/mhcquant/testdata/PXD009752.sdrf.tsv', checkIfExists: true) + ] + input[1] = 'maxquant' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sdrf - msstats - PXD009752") { + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id: 'PXD009752' ], + file('https://raw.githubusercontent.com/nf-core/test-datasets/mhcquant/testdata/PXD009752.sdrf.tsv', checkIfExists: true) + ] + input[1] = 'msstats' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sdrf - normalyzerde - PXD009752") { + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id: 'PXD009752' ], + file('https://raw.githubusercontent.com/nf-core/test-datasets/mhcquant/testdata/PXD009752.sdrf.tsv', checkIfExists: true) + ] + input[1] = 'normalyzerde' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sdrf - diann - PXD009752") { + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id: 'PXD009752' ], + file('https://raw.githubusercontent.com/nf-core/test-datasets/mhcquant/testdata/PXD009752.sdrf.tsv', checkIfExists: true) + ] + input[1] = 'diann' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sdrf - mhcquant - PXD009752 - stub") { + + options "-stub" + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id: 'PXD009752' ], + file('https://raw.githubusercontent.com/nf-core/test-datasets/mhcquant/testdata/PXD009752.sdrf.tsv', checkIfExists: true) + ] + input[1] = 'mhcquant' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sdrf - openms - PXD009752 - stub") { + + options "-stub" + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id: 'PXD009752' ], + file('https://raw.githubusercontent.com/nf-core/test-datasets/mhcquant/testdata/PXD009752.sdrf.tsv', checkIfExists: true) + ] + input[1] = 'openms' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sdrf - maxquant - PXD009752 - stub") { + + options "-stub" + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id: 'PXD009752' ], + file('https://raw.githubusercontent.com/nf-core/test-datasets/mhcquant/testdata/PXD009752.sdrf.tsv', checkIfExists: true) + ] + input[1] = 'maxquant' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sdrf - msstats - PXD009752 - stub") { + + options "-stub" + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id: 'PXD009752' ], + file('https://raw.githubusercontent.com/nf-core/test-datasets/mhcquant/testdata/PXD009752.sdrf.tsv', checkIfExists: true) + ] + input[1] = 'msstats' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sdrf - normalyzerde - PXD009752 - stub") { + + options "-stub" + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id: 'PXD009752' ], + file('https://raw.githubusercontent.com/nf-core/test-datasets/mhcquant/testdata/PXD009752.sdrf.tsv', checkIfExists: true) + ] + input[1] = 'normalyzerde' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sdrf - diann - PXD009752 - stub") { + + options "-stub" + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id: 'PXD009752' ], + file('https://raw.githubusercontent.com/nf-core/test-datasets/mhcquant/testdata/PXD009752.sdrf.tsv', checkIfExists: true) + ] + input[1] = 'diann' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/parsesdrf/convert/tests/main.nf.test.snap b/modules/nf-core/parsesdrf/convert/tests/main.nf.test.snap new file mode 100644 index 00000000000..ffd291c9d89 --- /dev/null +++ b/modules/nf-core/parsesdrf/convert/tests/main.nf.test.snap @@ -0,0 +1,874 @@ +{ + "sdrf - maxquant - PXD009752": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "PXD009752" + }, + "PXD009752.xml:md5,ee3a10d622512141d5d6ae436b0f7e73", + "PXD009752_design.txt:md5,ecf10e81663869db3eb6facb0b36c6be" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ], + "diann": [ + + ], + "maxquant": [ + [ + { + "id": "PXD009752" + }, + "PXD009752.xml:md5,ee3a10d622512141d5d6ae436b0f7e73", + "PXD009752_design.txt:md5,ecf10e81663869db3eb6facb0b36c6be" + ] + ], + "mhcquant": [ + + ], + "msstats": [ + + ], + "normalyzerde": [ + + ], + "openms": [ + + ], + "versions_sdrfpipelines": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ] + } + ], + "timestamp": "2026-05-08T13:59:16.790788273", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } + }, + "sdrf - diann - PXD009752 - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + [ + { + "id": "PXD009752" + }, + "PXD009752.cfg:md5,d41d8cd98f00b204e9800998ecf8427e", + "PXD009752_design.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ], + "diann": [ + [ + { + "id": "PXD009752" + }, + "PXD009752.cfg:md5,d41d8cd98f00b204e9800998ecf8427e", + "PXD009752_design.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "maxquant": [ + + ], + "mhcquant": [ + + ], + "msstats": [ + + ], + "normalyzerde": [ + + ], + "openms": [ + + ], + "versions_sdrfpipelines": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ] + } + ], + "timestamp": "2026-05-08T14:01:49.460372258", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } + }, + "sdrf - mhcquant - PXD009752 - stub": { + "content": [ + { + "0": [ + [ + { + "id": "PXD009752" + }, + "PXD009752_samplesheet.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "PXD009752_presets.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ], + "diann": [ + + ], + "maxquant": [ + + ], + "mhcquant": [ + [ + { + "id": "PXD009752" + }, + "PXD009752_samplesheet.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "PXD009752_presets.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "msstats": [ + + ], + "normalyzerde": [ + + ], + "openms": [ + + ], + "versions_sdrfpipelines": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ] + } + ], + "timestamp": "2026-05-08T14:00:37.542772217", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } + }, + "sdrf - normalyzerde - PXD009752": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + [ + { + "id": "PXD009752" + }, + "PXD009752_design.csv:md5,7a59adfe619191555051105b9c1feacc", + "PXD009752_comparisons.csv:md5,81051bcc2cf1bedf378224b0a93e2877" + ] + ], + "5": [ + + ], + "6": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ], + "diann": [ + + ], + "maxquant": [ + + ], + "mhcquant": [ + + ], + "msstats": [ + + ], + "normalyzerde": [ + [ + { + "id": "PXD009752" + }, + "PXD009752_design.csv:md5,7a59adfe619191555051105b9c1feacc", + "PXD009752_comparisons.csv:md5,81051bcc2cf1bedf378224b0a93e2877" + ] + ], + "openms": [ + + ], + "versions_sdrfpipelines": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ] + } + ], + "timestamp": "2026-05-08T13:59:52.106015133", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } + }, + "sdrf - msstats - PXD009752 - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + [ + { + "id": "PXD009752" + }, + "PXD009752.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ], + "diann": [ + + ], + "maxquant": [ + + ], + "mhcquant": [ + + ], + "msstats": [ + [ + { + "id": "PXD009752" + }, + "PXD009752.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "normalyzerde": [ + + ], + "openms": [ + + ], + "versions_sdrfpipelines": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ] + } + ], + "timestamp": "2026-05-08T14:01:23.496048333", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } + }, + "sdrf - diann - PXD009752": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + [ + { + "id": "PXD009752" + }, + "PXD009752.cfg:md5,bf4bc46a652861a436efeb22e0d1b746", + "PXD009752_design.tsv:md5,6e4348aeaecaf5d05521f5d67d1df9aa" + ] + ], + "6": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ], + "diann": [ + [ + { + "id": "PXD009752" + }, + "PXD009752.cfg:md5,bf4bc46a652861a436efeb22e0d1b746", + "PXD009752_design.tsv:md5,6e4348aeaecaf5d05521f5d67d1df9aa" + ] + ], + "maxquant": [ + + ], + "mhcquant": [ + + ], + "msstats": [ + + ], + "normalyzerde": [ + + ], + "openms": [ + + ], + "versions_sdrfpipelines": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ] + } + ], + "timestamp": "2026-05-08T14:00:14.00436251", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } + }, + "sdrf - normalyzerde - PXD009752 - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + [ + { + "id": "PXD009752" + }, + "PXD009752_design.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "PXD009752_comparisons.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + + ], + "6": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ], + "diann": [ + + ], + "maxquant": [ + + ], + "mhcquant": [ + + ], + "msstats": [ + + ], + "normalyzerde": [ + [ + { + "id": "PXD009752" + }, + "PXD009752_design.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "PXD009752_comparisons.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "openms": [ + + ], + "versions_sdrfpipelines": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ] + } + ], + "timestamp": "2026-05-08T14:01:36.889994981", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } + }, + "sdrf - openms - PXD009752": { + "content": [ + { + "0": [ + + ], + "1": [ + [ + { + "id": "PXD009752" + }, + "PXD009752_samplesheet.tsv:md5,9216c3ad7db89fedede8f65fdb27c3fc", + "PXD009752_experimental_design.tsv:md5,86dc1f997ac2eb733ef4b3082063f5cf" + ] + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ], + "diann": [ + + ], + "maxquant": [ + + ], + "mhcquant": [ + + ], + "msstats": [ + + ], + "normalyzerde": [ + + ], + "openms": [ + [ + { + "id": "PXD009752" + }, + "PXD009752_samplesheet.tsv:md5,9216c3ad7db89fedede8f65fdb27c3fc", + "PXD009752_experimental_design.tsv:md5,86dc1f997ac2eb733ef4b3082063f5cf" + ] + ], + "versions_sdrfpipelines": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ] + } + ], + "timestamp": "2026-05-08T13:58:57.723903315", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } + }, + "sdrf - openms - PXD009752 - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + [ + { + "id": "PXD009752" + }, + "PXD009752_samplesheet.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "PXD009752_experimental_design.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ], + "diann": [ + + ], + "maxquant": [ + + ], + "mhcquant": [ + + ], + "msstats": [ + + ], + "normalyzerde": [ + + ], + "openms": [ + [ + { + "id": "PXD009752" + }, + "PXD009752_samplesheet.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "PXD009752_experimental_design.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_sdrfpipelines": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ] + } + ], + "timestamp": "2026-05-08T14:00:56.986489703", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } + }, + "sdrf - maxquant - PXD009752 - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "PXD009752" + }, + "PXD009752.xml:md5,d41d8cd98f00b204e9800998ecf8427e", + "PXD009752_design.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ], + "diann": [ + + ], + "maxquant": [ + [ + { + "id": "PXD009752" + }, + "PXD009752.xml:md5,d41d8cd98f00b204e9800998ecf8427e", + "PXD009752_design.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "mhcquant": [ + + ], + "msstats": [ + + ], + "normalyzerde": [ + + ], + "openms": [ + + ], + "versions_sdrfpipelines": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ] + } + ], + "timestamp": "2026-05-08T14:01:10.645922747", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } + }, + "sdrf - msstats - PXD009752": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + [ + { + "id": "PXD009752" + }, + "PXD009752.csv:md5,0619e7ce6d4b44534825e86b24534e4a" + ] + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ], + "diann": [ + + ], + "maxquant": [ + + ], + "mhcquant": [ + + ], + "msstats": [ + [ + { + "id": "PXD009752" + }, + "PXD009752.csv:md5,0619e7ce6d4b44534825e86b24534e4a" + ] + ], + "normalyzerde": [ + + ], + "openms": [ + + ], + "versions_sdrfpipelines": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ] + } + ], + "timestamp": "2026-05-08T13:59:36.44255072", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } + }, + "sdrf - mhcquant - PXD009752": { + "content": [ + { + "0": [ + [ + { + "id": "PXD009752" + }, + "PXD009752_samplesheet.tsv:md5,4d7d2f1ca8d3def75b05ae8c01c481d8", + "PXD009752_presets.tsv:md5,3ba3b5c24f71025bfc1799ea87cd0a12" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ], + "diann": [ + + ], + "maxquant": [ + + ], + "mhcquant": [ + [ + { + "id": "PXD009752" + }, + "PXD009752_samplesheet.tsv:md5,4d7d2f1ca8d3def75b05ae8c01c481d8", + "PXD009752_presets.tsv:md5,3ba3b5c24f71025bfc1799ea87cd0a12" + ] + ], + "msstats": [ + + ], + "normalyzerde": [ + + ], + "openms": [ + + ], + "versions_sdrfpipelines": [ + [ + "PARSESDRF_CONVERT", + "sdrf-pipelines", + "0.1.4" + ] + ] + } + ], + "timestamp": "2026-05-08T13:58:43.293259632", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } + } +} \ No newline at end of file diff --git a/modules/nf-core/parsesdrf/convert/tests/nextflow.config b/modules/nf-core/parsesdrf/convert/tests/nextflow.config new file mode 100644 index 00000000000..16c6a16e114 --- /dev/null +++ b/modules/nf-core/parsesdrf/convert/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'PARSESDRF_CONVERT' { + ext.args = params.module_args + } +}