From 77b6bd90a00f3d946a03dbdc7deda1140fad30a4 Mon Sep 17 00:00:00 2001 From: piplus2 Date: Fri, 17 Jul 2026 19:14:44 +0200 Subject: [PATCH 1/3] sync with master --- modules/nf-core/suppa/psiperevent/main.nf | 43 ++ modules/nf-core/suppa/psiperevent/meta.yml | 81 +++ .../suppa/psiperevent/tests/main.nf.test | 496 ++++++++++++++++++ .../suppa/psiperevent/tests/main.nf.test.snap | 262 +++++++++ 4 files changed, 882 insertions(+) create mode 100644 modules/nf-core/suppa/psiperevent/main.nf create mode 100644 modules/nf-core/suppa/psiperevent/meta.yml create mode 100644 modules/nf-core/suppa/psiperevent/tests/main.nf.test create mode 100644 modules/nf-core/suppa/psiperevent/tests/main.nf.test.snap diff --git a/modules/nf-core/suppa/psiperevent/main.nf b/modules/nf-core/suppa/psiperevent/main.nf new file mode 100644 index 000000000000..82b27fdc7f54 --- /dev/null +++ b/modules/nf-core/suppa/psiperevent/main.nf @@ -0,0 +1,43 @@ +process SUPPA_PSIPEREVENT { + tag "${meta.id}" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/d8/d887a6a05dec2a1f64fdff0eac40581f9a1ec30301b2c267bde7f564b0f14270/data' : + 'community.wave.seqera.io/library/suppa:2.4--2612fcca3884f6bc' }" + + input: + tuple val(meta), path(expression) + tuple val(meta2), path(ioe) + val total_filter + + output: + tuple val(meta), path("*.psi"), emit: psi + tuple val("${task.process}"), val('suppa'), eval("suppa.py -v | sed '1!d;s/.* //'"), topic: versions, emit: versions_suppa + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + suppa.py \\ + psiPerEvent \\ + --ioe-file ${ioe} \\ + --expression-file ${expression} \\ + --total-filter ${total_filter} \\ + --output-file ${prefix} \\ + ${args} + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo ${args} + + touch ${prefix}.psi + """ +} diff --git a/modules/nf-core/suppa/psiperevent/meta.yml b/modules/nf-core/suppa/psiperevent/meta.yml new file mode 100644 index 000000000000..51b38954a027 --- /dev/null +++ b/modules/nf-core/suppa/psiperevent/meta.yml @@ -0,0 +1,81 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "suppa_psiperevent" +description: "Calculate PSI values for alternative splicing events using SUPPA" +keywords: + - alternative splicing + - suppa + - psi + - genomics +tools: + - "suppa": + description: "Fast, accurate, and uncertainty-aware differential splicing analysis across multiple conditions." + homepage: "https://github.com/comprna/SUPPA" + documentation: "https://github.com/comprna/SUPPA" + tool_dev_url: "https://github.com/comprna/SUPPA" + doi: "10.1186/s13059-018-1417-1" + licence: ["MIT"] + identifier: biotools:suppa + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - expression: + type: file + description: Expression matrix file in TPM units + pattern: "*.txt" + ontologies: [] + - - meta2: + type: map + description: | + Groovy Map containing genome information + e.g. `[ id:'genome1' ]` + - expression: + type: file + description: Events file in ioe format + pattern: "*.ioe" + ontologies: [] + - total_filter: + type: integer + description: Minimum total expression of the transcripts involved in the event to be considered for PSI calculation (default = 0) + +output: + psi: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - "*.psi": + type: file + description: PSI values file + pattern: "*.psi" + versions_suppa: + - - ${task.process}: + type: string + description: The name of the process + - suppa: + type: string + description: The name of the tool + - "suppa.py -v | sed '1!d;s/.* //'": + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - suppa: + type: string + description: The name of the tool + - suppa.py -v | sed '1!d;s/.* //': + type: eval + description: The expression to obtain the version of the tool +authors: + - "@lathikaa" + - "@piplus2" +maintainers: + - "@piplus2" diff --git a/modules/nf-core/suppa/psiperevent/tests/main.nf.test b/modules/nf-core/suppa/psiperevent/tests/main.nf.test new file mode 100644 index 000000000000..01b5cdb8f341 --- /dev/null +++ b/modules/nf-core/suppa/psiperevent/tests/main.nf.test @@ -0,0 +1,496 @@ +// nf-core modules test suppa/psiperevent +nextflow_process { + + name "Test Process SUPPA_PSIPEREVENT" + script "../main.nf" + process "SUPPA_PSIPEREVENT" + + tag "modules" + tag "modules_nfcore" + tag "suppa" + tag "suppa/psiperevent" + + test("human - skipping exon - ioe") { + + setup { + run("SUPPA_GENERATEEVENTS") { + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'SE' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") + dummy_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + + when { + process { + """ + input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events + input[2] = 0 + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + sanitizeOutput(process.out), + ).match() } + ) + } + } + + test("human - alternative splice site - ioe") { + + setup { + run("SUPPA_GENERATEEVENTS") { + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'SS' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") + dummy_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + + when { + process { + """ + input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.collect { meta, events -> [ meta, events[0] ] } + input[2] = 0 + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + sanitizeOutput(process.out), + ).match() } + ) + } + } + + test("human - mutually exclusive exons - ioe") { + + setup { + run("SUPPA_GENERATEEVENTS") { + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'MX' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") + dummy_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + + when { + process { + """ + input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events + input[2] = 0 + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + sanitizeOutput(process.out), + ).match() } + ) + } + } + + test("human - retained intron - ioe") { + + setup { + run("SUPPA_GENERATEEVENTS") { + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'RI' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") + dummy_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + + when { + process { + """ + input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events + input[2] = 0 + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + sanitizeOutput(process.out), + ).match() } + ) + } + } + + test("human - alternative first/last exons - ioe") { + + setup { + run("SUPPA_GENERATEEVENTS") { + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'FL' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") + dummy_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + + when { + process { + """ + input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, events -> [ meta, events[0] ] } + input[2] = 0 + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + sanitizeOutput(process.out), + ).match() } + ) + } + } + + // + // Stub tests + // + + test("human - skipping exon - ioe - stub") { + + options "-stub" + + setup { + run("SUPPA_GENERATEEVENTS") { + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'SE' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") + dummy_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + + when { + process { + """ + input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events + input[2] = 0 + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + sanitizeOutput(process.out), + ).match() } + ) + } + } + + test("human - alternative splice site - ioe - stub") { + + options "-stub" + + setup { + run("SUPPA_GENERATEEVENTS") { + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'SS' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") + dummy_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + + when { + process { + """ + input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, events -> [ meta, events[0] ] } + input[2] = 0 + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + sanitizeOutput(process.out), + ).match() } + ) + } + } + + test("human - mutually exclusive exons - ioe - stub") { + + options "-stub" + + setup { + run("SUPPA_GENERATEEVENTS") { + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'MX' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") + dummy_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + + when { + process { + """ + input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events + input[2] = 0 + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + sanitizeOutput(process.out), + ).match() } + ) + } + } + + test("human - retained intron - ioe - stub") { + + options "-stub" + + setup { + run("SUPPA_GENERATEEVENTS") { + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'RI' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") + dummy_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + + when { + process { + """ + input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events + input[2] = 0 + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + sanitizeOutput(process.out), + ).match() } + ) + } + } + + test("human - alternative first/last exons - ioe - stub") { + + options "-stub" + + setup { + run("SUPPA_GENERATEEVENTS") { + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'FL' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") + dummy_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + + when { + process { + """ + input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, events -> [ meta, events[0] ] } + input[2] = 0 + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + sanitizeOutput(process.out), + ).match() } + ) + } + } +} diff --git a/modules/nf-core/suppa/psiperevent/tests/main.nf.test.snap b/modules/nf-core/suppa/psiperevent/tests/main.nf.test.snap new file mode 100644 index 000000000000..a9ebbd0a0cdf --- /dev/null +++ b/modules/nf-core/suppa/psiperevent/tests/main.nf.test.snap @@ -0,0 +1,262 @@ +{ + "human - skipping exon - ioe": { + "content": [ + { + "psi": [ + [ + { + "id": "sample1" + }, + "sample1.psi:md5,eebc549dee0797dd5bf62d65d1296dae" + ] + ], + "versions_suppa": [ + [ + "SUPPA_PSIPEREVENT", + "suppa", + "2.4" + ] + ] + } + ], + "timestamp": "2026-07-17T16:37:11.49923868", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } + }, + "human - alternative splice site - ioe": { + "content": [ + { + "psi": [ + [ + { + "id": "sample1" + }, + "sample1.psi:md5,04daef324165f4f77f872124844ff657" + ] + ], + "versions_suppa": [ + [ + "SUPPA_PSIPEREVENT", + "suppa", + "2.4" + ] + ] + } + ], + "timestamp": "2026-07-17T16:37:18.08789184", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } + }, + "human - skipping exon - ioe - stub": { + "content": [ + { + "psi": [ + [ + { + "id": "sample1" + }, + "sample1.psi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_suppa": [ + [ + "SUPPA_PSIPEREVENT", + "suppa", + "2.4" + ] + ] + } + ], + "timestamp": "2026-07-17T16:37:42.746984247", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } + }, + "human - alternative splice site - ioe - stub": { + "content": [ + { + "psi": [ + [ + { + "id": "sample1" + }, + "sample1.psi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_suppa": [ + [ + "SUPPA_PSIPEREVENT", + "suppa", + "2.4" + ] + ] + } + ], + "timestamp": "2026-07-17T16:37:47.787235776", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } + }, + "human - alternative first/last exons - ioe - stub": { + "content": [ + { + "psi": [ + [ + { + "id": "sample1" + }, + "sample1.psi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_suppa": [ + [ + "SUPPA_PSIPEREVENT", + "suppa", + "2.4" + ] + ] + } + ], + "timestamp": "2026-07-17T16:38:03.218646269", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } + }, + "human - retained intron - ioe": { + "content": [ + { + "psi": [ + [ + { + "id": "sample1" + }, + "sample1.psi:md5,85917088c83d53c6c578bfdee28539e6" + ] + ], + "versions_suppa": [ + [ + "SUPPA_PSIPEREVENT", + "suppa", + "2.4" + ] + ] + } + ], + "timestamp": "2026-07-17T16:37:31.198277918", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } + }, + "human - mutually exclusive exons - ioe": { + "content": [ + { + "psi": [ + [ + { + "id": "sample1" + }, + "sample1.psi:md5,9fb5a764439d9b907bf50944248bb8cd" + ] + ], + "versions_suppa": [ + [ + "SUPPA_PSIPEREVENT", + "suppa", + "2.4" + ] + ] + } + ], + "timestamp": "2026-07-17T16:37:24.726279232", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } + }, + "human - alternative first/last exons - ioe": { + "content": [ + { + "psi": [ + [ + { + "id": "sample1" + }, + "sample1.psi:md5,40a096c2d820965a912ec3907f94bb0c" + ] + ], + "versions_suppa": [ + [ + "SUPPA_PSIPEREVENT", + "suppa", + "2.4" + ] + ] + } + ], + "timestamp": "2026-07-17T16:37:37.802799201", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } + }, + "human - mutually exclusive exons - ioe - stub": { + "content": [ + { + "psi": [ + [ + { + "id": "sample1" + }, + "sample1.psi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_suppa": [ + [ + "SUPPA_PSIPEREVENT", + "suppa", + "2.4" + ] + ] + } + ], + "timestamp": "2026-07-17T16:37:52.843896425", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } + }, + "human - retained intron - ioe - stub": { + "content": [ + { + "psi": [ + [ + { + "id": "sample1" + }, + "sample1.psi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_suppa": [ + [ + "SUPPA_PSIPEREVENT", + "suppa", + "2.4" + ] + ] + } + ], + "timestamp": "2026-07-17T16:37:57.956257608", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } + } +} \ No newline at end of file From 494e674eaa82eedfaf4b386ec5dabaa376fabda5 Mon Sep 17 00:00:00 2001 From: piplus2 Date: Fri, 17 Jul 2026 20:05:09 +0200 Subject: [PATCH 2/3] fix meta and tags --- .../nf-core/suppa/psiperevent/environment.yml | 7 + modules/nf-core/suppa/psiperevent/meta.yml | 18 +- .../suppa/psiperevent/tests/main.nf.test | 264 ++---------------- 3 files changed, 35 insertions(+), 254 deletions(-) create mode 100644 modules/nf-core/suppa/psiperevent/environment.yml diff --git a/modules/nf-core/suppa/psiperevent/environment.yml b/modules/nf-core/suppa/psiperevent/environment.yml new file mode 100644 index 000000000000..1fd8fd9825fd --- /dev/null +++ b/modules/nf-core/suppa/psiperevent/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - bioconda + - conda-forge +dependencies: + - bioconda::suppa=2.4 diff --git a/modules/nf-core/suppa/psiperevent/meta.yml b/modules/nf-core/suppa/psiperevent/meta.yml index 51b38954a027..08efd64c35e2 100644 --- a/modules/nf-core/suppa/psiperevent/meta.yml +++ b/modules/nf-core/suppa/psiperevent/meta.yml @@ -1,4 +1,3 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json name: "suppa_psiperevent" description: "Calculate PSI values for alternative splicing events using SUPPA" keywords: @@ -8,14 +7,15 @@ keywords: - genomics tools: - "suppa": - description: "Fast, accurate, and uncertainty-aware differential splicing analysis across multiple conditions." + description: "Fast, accurate, and uncertainty-aware differential splicing analysis + across multiple conditions." homepage: "https://github.com/comprna/SUPPA" documentation: "https://github.com/comprna/SUPPA" tool_dev_url: "https://github.com/comprna/SUPPA" doi: "10.1186/s13059-018-1417-1" - licence: ["MIT"] + licence: + - "MIT" identifier: biotools:suppa - input: - - meta: type: map @@ -32,15 +32,15 @@ input: description: | Groovy Map containing genome information e.g. `[ id:'genome1' ]` - - expression: + - ioe: type: file description: Events file in ioe format pattern: "*.ioe" ontologies: [] - total_filter: type: integer - description: Minimum total expression of the transcripts involved in the event to be considered for PSI calculation (default = 0) - + description: Minimum total expression of the transcripts involved in the + event to be considered for PSI calculation (default = 0) output: psi: - - meta: @@ -52,6 +52,7 @@ output: type: file description: PSI values file pattern: "*.psi" + ontologies: [] versions_suppa: - - ${task.process}: type: string @@ -62,7 +63,6 @@ output: - "suppa.py -v | sed '1!d;s/.* //'": type: eval description: The expression to obtain the version of the tool - topics: versions: - - ${task.process}: @@ -71,7 +71,7 @@ topics: - suppa: type: string description: The name of the tool - - suppa.py -v | sed '1!d;s/.* //': + - "suppa.py -v | sed '1!d;s/.* //'": type: eval description: The expression to obtain the version of the tool authors: diff --git a/modules/nf-core/suppa/psiperevent/tests/main.nf.test b/modules/nf-core/suppa/psiperevent/tests/main.nf.test index 01b5cdb8f341..05fd0eda2f38 100644 --- a/modules/nf-core/suppa/psiperevent/tests/main.nf.test +++ b/modules/nf-core/suppa/psiperevent/tests/main.nf.test @@ -10,24 +10,24 @@ nextflow_process { tag "suppa" tag "suppa/psiperevent" - test("human - skipping exon - ioe") { - - setup { - run("SUPPA_GENERATEEVENTS") { - script "../../generateevents/main.nf" - process { - """ - input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] - input[1] = 'ioe' - input[2] = false - input[3] = 'SE' - input[4] = 'S' - input[5] = [] - input[6] = [] - """ - } + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'SE' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ } + } + run("GENERATE_DUMMY_EXPRESSION") { def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") dummy_expression.text = """ sample1 @@ -36,7 +36,10 @@ nextflow_process { ENSE00003754925.1\t0.0 """.stripIndent().trim() } + } + + test("human - skipping exon - ioe") { when { process { """ @@ -58,32 +61,6 @@ nextflow_process { } test("human - alternative splice site - ioe") { - - setup { - run("SUPPA_GENERATEEVENTS") { - script "../../generateevents/main.nf" - process { - """ - input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] - input[1] = 'ioe' - input[2] = false - input[3] = 'SS' - input[4] = 'S' - input[5] = [] - input[6] = [] - """ - } - } - - def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") - dummy_expression.text = """ - sample1 - ENST00000625012.1\t10.5 - ENSE00003760353.1\t95.1 - ENSE00003754925.1\t0.0 - """.stripIndent().trim() - } - when { process { """ @@ -105,32 +82,6 @@ nextflow_process { } test("human - mutually exclusive exons - ioe") { - - setup { - run("SUPPA_GENERATEEVENTS") { - script "../../generateevents/main.nf" - process { - """ - input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] - input[1] = 'ioe' - input[2] = false - input[3] = 'MX' - input[4] = 'S' - input[5] = [] - input[6] = [] - """ - } - } - - def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") - dummy_expression.text = """ - sample1 - ENST00000625012.1\t10.5 - ENSE00003760353.1\t95.1 - ENSE00003754925.1\t0.0 - """.stripIndent().trim() - } - when { process { """ @@ -152,32 +103,6 @@ nextflow_process { } test("human - retained intron - ioe") { - - setup { - run("SUPPA_GENERATEEVENTS") { - script "../../generateevents/main.nf" - process { - """ - input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] - input[1] = 'ioe' - input[2] = false - input[3] = 'RI' - input[4] = 'S' - input[5] = [] - input[6] = [] - """ - } - } - - def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") - dummy_expression.text = """ - sample1 - ENST00000625012.1\t10.5 - ENSE00003760353.1\t95.1 - ENSE00003754925.1\t0.0 - """.stripIndent().trim() - } - when { process { """ @@ -199,32 +124,6 @@ nextflow_process { } test("human - alternative first/last exons - ioe") { - - setup { - run("SUPPA_GENERATEEVENTS") { - script "../../generateevents/main.nf" - process { - """ - input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] - input[1] = 'ioe' - input[2] = false - input[3] = 'FL' - input[4] = 'S' - input[5] = [] - input[6] = [] - """ - } - } - - def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") - dummy_expression.text = """ - sample1 - ENST00000625012.1\t10.5 - ENSE00003760353.1\t95.1 - ENSE00003754925.1\t0.0 - """.stripIndent().trim() - } - when { process { """ @@ -253,31 +152,6 @@ nextflow_process { options "-stub" - setup { - run("SUPPA_GENERATEEVENTS") { - script "../../generateevents/main.nf" - process { - """ - input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] - input[1] = 'ioe' - input[2] = false - input[3] = 'SE' - input[4] = 'S' - input[5] = [] - input[6] = [] - """ - } - } - - def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") - dummy_expression.text = """ - sample1 - ENST00000625012.1\t10.5 - ENSE00003760353.1\t95.1 - ENSE00003754925.1\t0.0 - """.stripIndent().trim() - } - when { process { """ @@ -302,31 +176,6 @@ nextflow_process { options "-stub" - setup { - run("SUPPA_GENERATEEVENTS") { - script "../../generateevents/main.nf" - process { - """ - input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] - input[1] = 'ioe' - input[2] = false - input[3] = 'SS' - input[4] = 'S' - input[5] = [] - input[6] = [] - """ - } - } - - def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") - dummy_expression.text = """ - sample1 - ENST00000625012.1\t10.5 - ENSE00003760353.1\t95.1 - ENSE00003754925.1\t0.0 - """.stripIndent().trim() - } - when { process { """ @@ -351,31 +200,6 @@ nextflow_process { options "-stub" - setup { - run("SUPPA_GENERATEEVENTS") { - script "../../generateevents/main.nf" - process { - """ - input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] - input[1] = 'ioe' - input[2] = false - input[3] = 'MX' - input[4] = 'S' - input[5] = [] - input[6] = [] - """ - } - } - - def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") - dummy_expression.text = """ - sample1 - ENST00000625012.1\t10.5 - ENSE00003760353.1\t95.1 - ENSE00003754925.1\t0.0 - """.stripIndent().trim() - } - when { process { """ @@ -400,31 +224,6 @@ nextflow_process { options "-stub" - setup { - run("SUPPA_GENERATEEVENTS") { - script "../../generateevents/main.nf" - process { - """ - input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] - input[1] = 'ioe' - input[2] = false - input[3] = 'RI' - input[4] = 'S' - input[5] = [] - input[6] = [] - """ - } - } - - def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") - dummy_expression.text = """ - sample1 - ENST00000625012.1\t10.5 - ENSE00003760353.1\t95.1 - ENSE00003754925.1\t0.0 - """.stripIndent().trim() - } - when { process { """ @@ -449,31 +248,6 @@ nextflow_process { options "-stub" - setup { - run("SUPPA_GENERATEEVENTS") { - script "../../generateevents/main.nf" - process { - """ - input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] - input[1] = 'ioe' - input[2] = false - input[3] = 'FL' - input[4] = 'S' - input[5] = [] - input[6] = [] - """ - } - } - - def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") - dummy_expression.text = """ - sample1 - ENST00000625012.1\t10.5 - ENSE00003760353.1\t95.1 - ENSE00003754925.1\t0.0 - """.stripIndent().trim() - } - when { process { """ From 38e23b3a2f7db88be958b774848195d9ad6cfa04 Mon Sep 17 00:00:00 2001 From: piplus2 Date: Fri, 17 Jul 2026 21:04:18 +0200 Subject: [PATCH 3/3] fix test --- .../suppa/psiperevent/tests/main.nf.test | 507 ++++++++++++++++-- .../suppa/psiperevent/tests/main.nf.test.snap | 158 +++++- 2 files changed, 597 insertions(+), 68 deletions(-) diff --git a/modules/nf-core/suppa/psiperevent/tests/main.nf.test b/modules/nf-core/suppa/psiperevent/tests/main.nf.test index 05fd0eda2f38..94e76a5a124e 100644 --- a/modules/nf-core/suppa/psiperevent/tests/main.nf.test +++ b/modules/nf-core/suppa/psiperevent/tests/main.nf.test @@ -10,41 +10,85 @@ nextflow_process { tag "suppa" tag "suppa/psiperevent" - setup { - run("SUPPA_GENERATEEVENTS") { - tag "suppa/generateevents" - script "../../generateevents/main.nf" + test("human - skipping exon - ioe") { + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'SE' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def mock_expression = file("${outputDir}/mock_expression_matrix.txt") + mock_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + + when { process { """ - input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] - input[1] = 'ioe' - input[2] = false - input[3] = 'SE' - input[4] = 'S' - input[5] = [] - input[6] = [] + input[0] = [ [id: 'sample1'], file("${outputDir}/mock_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.collect{ meta, ioe -> [[ id: 'test_SE' ], ioe]} + input[2] = 0 """ } } - run("GENERATE_DUMMY_EXPRESSION") { - def dummy_expression = file("${outputDir}/dummy_expression_matrix.txt") - dummy_expression.text = """ + then { + assert process.success + assertAll( + { assert snapshot( + sanitizeOutput(process.out), + ).match() } + ) + } + } + + test("human - alternative splice site A5 - ioe") { + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'SS' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def mock_expression = file("${outputDir}/mock_expression_matrix.txt") + mock_expression.text = """ sample1 ENST00000625012.1\t10.5 ENSE00003760353.1\t95.1 ENSE00003754925.1\t0.0 """.stripIndent().trim() } - } - - test("human - skipping exon - ioe") { when { process { """ - input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] - input[1] = SUPPA_GENERATEEVENTS.out.events + input[0] = [ [id: 'sample1'], file("${outputDir}/mock_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.collect { meta, ioe -> [ [ id: 'test_A5' ], ioe[0] ] } input[2] = 0 """ } @@ -60,12 +104,38 @@ nextflow_process { } } - test("human - alternative splice site - ioe") { + test("human - alternative splice site A3 - ioe") { + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'SS' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def mock_expression = file("${outputDir}/mock_expression_matrix.txt") + mock_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + when { process { """ - input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] - input[1] = SUPPA_GENERATEEVENTS.out.events.collect { meta, events -> [ meta, events[0] ] } + input[0] = [ [id: 'sample1'], file("${outputDir}/mock_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.collect { meta, ioe -> [ [ id: 'test_A3' ], ioe[1] ] } input[2] = 0 """ } @@ -82,11 +152,37 @@ nextflow_process { } test("human - mutually exclusive exons - ioe") { + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'MX' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def mock_expression = file("${outputDir}/mock_expression_matrix.txt") + mock_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + when { process { """ - input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] - input[1] = SUPPA_GENERATEEVENTS.out.events + input[0] = [ [id: 'sample1'], file("${outputDir}/mock_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.collect { meta, ioe -> [ [ id: 'test_MX' ], ioe ] } input[2] = 0 """ } @@ -103,11 +199,37 @@ nextflow_process { } test("human - retained intron - ioe") { + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'RI' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def mock_expression = file("${outputDir}/mock_expression_matrix.txt") + mock_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + when { process { """ - input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] - input[1] = SUPPA_GENERATEEVENTS.out.events + input[0] = [ [id: 'sample1'], file("${outputDir}/mock_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.collect { meta, ioe -> [ [ id: 'test_RI' ], ioe ] } input[2] = 0 """ } @@ -123,12 +245,85 @@ nextflow_process { } } - test("human - alternative first/last exons - ioe") { + test("human - alternative first exon - ioe") { + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'FL' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def mock_expression = file("${outputDir}/mock_expression_matrix.txt") + mock_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + when { process { """ - input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] - input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, events -> [ meta, events[0] ] } + input[0] = [ [id: 'sample1'], file("${outputDir}/mock_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, ioe -> [ [ id: 'test_AF' ], ioe[0] ] } + input[2] = 0 + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + sanitizeOutput(process.out), + ).match() } + ) + } + } + + test("human - alternative last exons - ioe") { + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'FL' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def mock_expression = file("${outputDir}/mock_expression_matrix.txt") + mock_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + + when { + process { + """ + input[0] = [ [id: 'sample1'], file("${outputDir}/mock_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, ioe -> [ [ id: 'test_AL' ], ioe[1] ] } input[2] = 0 """ } @@ -152,11 +347,37 @@ nextflow_process { options "-stub" + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'SE' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def mock_expression = file("${outputDir}/mock_expression_matrix.txt") + mock_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + when { process { """ - input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] - input[1] = SUPPA_GENERATEEVENTS.out.events + input[0] = [ [id: 'sample1'], file("${outputDir}/mock_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, ioe -> [ [ id: 'test_SE' ], ioe[0] ] } input[2] = 0 """ } @@ -172,15 +393,91 @@ nextflow_process { } } - test("human - alternative splice site - ioe - stub") { + test("human - alternative splice site A5 - ioe - stub") { options "-stub" + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'SS' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def mock_expression = file("${outputDir}/mock_expression_matrix.txt") + mock_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + when { process { """ - input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] - input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, events -> [ meta, events[0] ] } + input[0] = [ [id: 'sample1'], file("${outputDir}/mock_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, ioe -> [ [ id: 'test_A5' ], ioe[0] ] } + input[2] = 0 + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + sanitizeOutput(process.out), + ).match() } + ) + } + } + + test("human - alternative splice site A3 - ioe - stub") { + + options "-stub" + + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'SS' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def mock_expression = file("${outputDir}/mock_expression_matrix.txt") + mock_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + + when { + process { + """ + input[0] = [ [id: 'sample1'], file("${outputDir}/mock_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, ioe -> [ [ id: 'test_A3' ], ioe[1] ] } input[2] = 0 """ } @@ -200,11 +497,37 @@ nextflow_process { options "-stub" + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'MX' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def mock_expression = file("${outputDir}/mock_expression_matrix.txt") + mock_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + when { process { """ - input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] - input[1] = SUPPA_GENERATEEVENTS.out.events + input[0] = [ [id: 'sample1'], file("${outputDir}/mock_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, ioe -> [ [id: 'test_MX'], ioe[0] ] } input[2] = 0 """ } @@ -224,11 +547,87 @@ nextflow_process { options "-stub" + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'RI' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def mock_expression = file("${outputDir}/mock_expression_matrix.txt") + mock_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + + when { + process { + """ + input[0] = [ [id: 'sample1'], file("${outputDir}/mock_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, ioe -> [ [id: 'test_RI'], ioe[0] ] } + input[2] = 0 + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + sanitizeOutput(process.out), + ).match() } + ) + } + } + + test("human - alternative first exon - ioe - stub") { + + options "-stub" + + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'FL' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def mock_expression = file("${outputDir}/mock_expression_matrix.txt") + mock_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + when { process { """ - input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] - input[1] = SUPPA_GENERATEEVENTS.out.events + input[0] = [ [id: 'sample1'], file("${outputDir}/mock_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, events -> [ [id: 'test_AF'], events[0] ] } input[2] = 0 """ } @@ -244,15 +643,41 @@ nextflow_process { } } - test("human - alternative first/last exons - ioe - stub") { + test("human - alternative last exon - ioe - stub") { options "-stub" + setup { + run("SUPPA_GENERATEEVENTS") { + tag "suppa/generateevents" + script "../../generateevents/main.nf" + process { + """ + input[0] = [ [ id: 'human' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/chr21_gencode.gtf', checkIfExists: true) ] + input[1] = 'ioe' + input[2] = false + input[3] = 'FL' + input[4] = 'S' + input[5] = [] + input[6] = [] + """ + } + } + + def mock_expression = file("${outputDir}/mock_expression_matrix.txt") + mock_expression.text = """ + sample1 + ENST00000625012.1\t10.5 + ENSE00003760353.1\t95.1 + ENSE00003754925.1\t0.0 + """.stripIndent().trim() + } + when { process { """ - input[0] = [ [id: 'sample1'], file("${outputDir}/dummy_expression_matrix.txt") ] - input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, events -> [ meta, events[0] ] } + input[0] = [ [id: 'sample1'], file("${outputDir}/mock_expression_matrix.txt") ] + input[1] = SUPPA_GENERATEEVENTS.out.events.map { meta, events -> [ [id: 'test_AL'], events[1] ] } input[2] = 0 """ } diff --git a/modules/nf-core/suppa/psiperevent/tests/main.nf.test.snap b/modules/nf-core/suppa/psiperevent/tests/main.nf.test.snap index a9ebbd0a0cdf..f8538e86bad1 100644 --- a/modules/nf-core/suppa/psiperevent/tests/main.nf.test.snap +++ b/modules/nf-core/suppa/psiperevent/tests/main.nf.test.snap @@ -1,4 +1,30 @@ { + "human - alternative last exon - ioe - stub": { + "content": [ + { + "psi": [ + [ + { + "id": "sample1" + }, + "sample1.psi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_suppa": [ + [ + "SUPPA_PSIPEREVENT", + "suppa", + "2.4" + ] + ] + } + ], + "timestamp": "2026-07-17T21:03:58.585294965", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } + }, "human - skipping exon - ioe": { "content": [ { @@ -19,13 +45,13 @@ ] } ], - "timestamp": "2026-07-17T16:37:11.49923868", + "timestamp": "2026-07-17T21:02:34.362456313", "meta": { "nf-test": "0.9.5", - "nextflow": "26.04.3" + "nextflow": "26.04.4" } }, - "human - alternative splice site - ioe": { + "human - alternative splice site A3 - ioe": { "content": [ { "psi": [ @@ -33,7 +59,7 @@ { "id": "sample1" }, - "sample1.psi:md5,04daef324165f4f77f872124844ff657" + "sample1.psi:md5,237d9e5dc3fb79e8149a5527ed51a3c1" ] ], "versions_suppa": [ @@ -45,10 +71,10 @@ ] } ], - "timestamp": "2026-07-17T16:37:18.08789184", + "timestamp": "2026-07-17T21:02:48.622825822", "meta": { "nf-test": "0.9.5", - "nextflow": "26.04.3" + "nextflow": "26.04.4" } }, "human - skipping exon - ioe - stub": { @@ -71,13 +97,13 @@ ] } ], - "timestamp": "2026-07-17T16:37:42.746984247", + "timestamp": "2026-07-17T21:03:23.111520154", "meta": { "nf-test": "0.9.5", - "nextflow": "26.04.3" + "nextflow": "26.04.4" } }, - "human - alternative splice site - ioe - stub": { + "human - alternative first exon - ioe": { "content": [ { "psi": [ @@ -85,7 +111,33 @@ { "id": "sample1" }, - "sample1.psi:md5,d41d8cd98f00b204e9800998ecf8427e" + "sample1.psi:md5,40a096c2d820965a912ec3907f94bb0c" + ] + ], + "versions_suppa": [ + [ + "SUPPA_PSIPEREVENT", + "suppa", + "2.4" + ] + ] + } + ], + "timestamp": "2026-07-17T21:03:10.603815889", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } + }, + "human - alternative last exons - ioe": { + "content": [ + { + "psi": [ + [ + { + "id": "sample1" + }, + "sample1.psi:md5,9f665c73ab259b5d475bc10a5e5f467b" ] ], "versions_suppa": [ @@ -97,13 +149,13 @@ ] } ], - "timestamp": "2026-07-17T16:37:47.787235776", + "timestamp": "2026-07-17T21:03:17.529864418", "meta": { "nf-test": "0.9.5", - "nextflow": "26.04.3" + "nextflow": "26.04.4" } }, - "human - alternative first/last exons - ioe - stub": { + "human - alternative first exon - ioe - stub": { "content": [ { "psi": [ @@ -123,10 +175,36 @@ ] } ], - "timestamp": "2026-07-17T16:38:03.218646269", + "timestamp": "2026-07-17T21:03:52.977685983", "meta": { "nf-test": "0.9.5", - "nextflow": "26.04.3" + "nextflow": "26.04.4" + } + }, + "human - alternative splice site A5 - ioe": { + "content": [ + { + "psi": [ + [ + { + "id": "sample1" + }, + "sample1.psi:md5,04daef324165f4f77f872124844ff657" + ] + ], + "versions_suppa": [ + [ + "SUPPA_PSIPEREVENT", + "suppa", + "2.4" + ] + ] + } + ], + "timestamp": "2026-07-17T21:02:41.488913298", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.4" } }, "human - retained intron - ioe": { @@ -149,10 +227,10 @@ ] } ], - "timestamp": "2026-07-17T16:37:31.198277918", + "timestamp": "2026-07-17T21:03:03.811619463", "meta": { "nf-test": "0.9.5", - "nextflow": "26.04.3" + "nextflow": "26.04.4" } }, "human - mutually exclusive exons - ioe": { @@ -175,13 +253,13 @@ ] } ], - "timestamp": "2026-07-17T16:37:24.726279232", + "timestamp": "2026-07-17T21:02:57.226438282", "meta": { "nf-test": "0.9.5", - "nextflow": "26.04.3" + "nextflow": "26.04.4" } }, - "human - alternative first/last exons - ioe": { + "human - alternative splice site A3 - ioe - stub": { "content": [ { "psi": [ @@ -189,7 +267,33 @@ { "id": "sample1" }, - "sample1.psi:md5,40a096c2d820965a912ec3907f94bb0c" + "sample1.psi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_suppa": [ + [ + "SUPPA_PSIPEREVENT", + "suppa", + "2.4" + ] + ] + } + ], + "timestamp": "2026-07-17T21:03:36.063507166", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.4" + } + }, + "human - alternative splice site A5 - ioe - stub": { + "content": [ + { + "psi": [ + [ + { + "id": "sample1" + }, + "sample1.psi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions_suppa": [ @@ -201,10 +305,10 @@ ] } ], - "timestamp": "2026-07-17T16:37:37.802799201", + "timestamp": "2026-07-17T21:03:30.360640178", "meta": { "nf-test": "0.9.5", - "nextflow": "26.04.3" + "nextflow": "26.04.4" } }, "human - mutually exclusive exons - ioe - stub": { @@ -227,10 +331,10 @@ ] } ], - "timestamp": "2026-07-17T16:37:52.843896425", + "timestamp": "2026-07-17T21:03:41.645300259", "meta": { "nf-test": "0.9.5", - "nextflow": "26.04.3" + "nextflow": "26.04.4" } }, "human - retained intron - ioe - stub": { @@ -253,10 +357,10 @@ ] } ], - "timestamp": "2026-07-17T16:37:57.956257608", + "timestamp": "2026-07-17T21:03:47.425342187", "meta": { "nf-test": "0.9.5", - "nextflow": "26.04.3" + "nextflow": "26.04.4" } } } \ No newline at end of file