diff --git a/modules.json b/modules.json index c3acc93..bc5dd00 100644 --- a/modules.json +++ b/modules.json @@ -7,12 +7,12 @@ "nf-core": { "atlasgeneannotationmanipulation/gtf2featureannotation": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "04bc484c987b523ea5420ed6bbc1fdc6d8aef751", "installed_by": ["modules"] }, "bedtools/getfasta": { "branch": "master", - "git_sha": "3b248b84694d1939ac4bb33df84bf6233a34d668", + "git_sha": "cdcdd5e3d806f0ff3983c40c69e0b07bb44ec299", "installed_by": ["modules"] }, "bedtools/merge": { @@ -37,12 +37,12 @@ }, "deseq2/differential": { "branch": "master", - "git_sha": "9326d73af3fbe2ee90d9ce0a737461a727c5118e", + "git_sha": "4699a675cfc36b3c3f53926afd5dc1cf2e6a780e", "installed_by": ["modules"] }, "gawk": { "branch": "master", - "git_sha": "dc3527855e7358c6d8400828754c0caa5f11698f", + "git_sha": "cf3ed075695639b0a0924eb0901146df1996dc08", "installed_by": ["modules"] }, "gunzip": { @@ -52,17 +52,17 @@ }, "samtools/faidx": { "branch": "master", - "git_sha": "aeb02a39d4c463598bfdcb2d964dbb7acbcf1298", + "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", "installed_by": ["modules"] }, "samtools/reheader": { "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", "installed_by": ["modules"] }, "ucsc/gtftogenepred": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "acb0880789a6ebc2168d3b2d3d42b5bce6a62431", "installed_by": ["modules"] } } diff --git a/modules/local/fimo/run_fimo/main.nf b/modules/local/fimo/run_fimo/main.nf index eaf3d02..3f8bd63 100644 --- a/modules/local/fimo/run_fimo/main.nf +++ b/modules/local/fimo/run_fimo/main.nf @@ -7,8 +7,8 @@ process RUN_FIMO { 'biocontainers/meme:5.5.5--pl5321hda358d9_0' }" input: - tuple val(meta), path(motif_file) - path sequence_file + tuple val(meta), path(motif_file) + tuple val(meta2), path(sequence_file) output: tuple val(meta), path("fimo_${meta.motif}"), emit: results diff --git a/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/environment.yml b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/environment.yml index 67d88a4..3a613e6 100644 --- a/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/environment.yml +++ b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::atlas-gene-annotation-manipulation=1.1.0 + - bioconda::atlas-gene-annotation-manipulation=1.1.1 diff --git a/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/main.nf b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/main.nf index c8abbc5..12208f8 100644 --- a/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/main.nf +++ b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/main.nf @@ -4,8 +4,8 @@ process ATLASGENEANNOTATIONMANIPULATION_GTF2FEATUREANNOTATION { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/atlas-gene-annotation-manipulation%3A1.1.0--hdfd78af_0': - 'biocontainers/atlas-gene-annotation-manipulation:1.1.0--hdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/atlas-gene-annotation-manipulation%3A1.1.1--hdfd78af_0': + 'biocontainers/atlas-gene-annotation-manipulation:1.1.1--hdfd78af_0' }" input: tuple val(meta), path(gtf) @@ -23,6 +23,7 @@ process ATLASGENEANNOTATIONMANIPULATION_GTF2FEATUREANNOTATION { def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: meta.id def reference_cdna = fasta ? "--parse-cdnas $fasta" : "" + def VERSION = '1.1.1' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ gtf2featureAnnotation.R \\ @@ -33,8 +34,22 @@ process ATLASGENEANNOTATIONMANIPULATION_GTF2FEATUREANNOTATION { cat <<-END_VERSIONS > versions.yml "${task.process}": - r-base: \$(echo \$(R --version 2>&1) | sed 's/^.*R version //; s/ .*\$//') - atlas-gene-annotation-manipulation: 1.1.0 + atlas-gene-annotation-manipulation: ${VERSION} END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: meta.id + def reference_cdna = fasta ? "--parse-cdnas $fasta" : "" + def VERSION = '1.1.1' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + touch ${meta.id}.anno.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + atlas-gene-annotation-manipulation: ${VERSION} + END_VERSIONS + """ + } diff --git a/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/meta.yml b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/meta.yml index 10aa536..3e34244 100644 --- a/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/meta.yml +++ b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/meta.yml @@ -2,6 +2,7 @@ name: "atlasgeneannotationmanipulation_gtf2featureannotation" description: Generate tables of feature metadata from GTF files keywords: - gtf + - gene - annotation tools: - "atlasgeneannotationmanipulation": @@ -9,7 +10,7 @@ tools: homepage: "https://github.com/ebi-gene-expression-group/atlas-gene-annotation-manipulation" documentation: "https://github.com/ebi-gene-expression-group/atlas-gene-annotation-manipulation" tool_dev_url: "https://github.com/ebi-gene-expression-group/atlas-gene-annotation-manipulation" - licence: "['Apache-2.0']" + licence: ["Apache-2.0"] input: - meta: type: map diff --git a/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/tests/main.nf.test b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/tests/main.nf.test new file mode 100644 index 0000000..74c0c31 --- /dev/null +++ b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/tests/main.nf.test @@ -0,0 +1,86 @@ +nextflow_process { + + name "Test Process ATLASGENEANNOTATIONMANIPULATION_GTF2FEATUREANNOTATION" + script "../main.nf" + process "ATLASGENEANNOTATIONMANIPULATION_GTF2FEATUREANNOTATION" + + tag "modules" + tag "modules_nfcore" + tag "atlasgeneannotationmanipulation" + tag "atlasgeneannotationmanipulation/gtf2featureannotation" + + test("human - gtf") { + when { + process { + """ + input[0] = [ + [ "id":"homo_sapiens" ], + file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.gtf") + ] + input[1] = [[ "id":"homo_sapiens" ], []] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("human - gtf - fasta") { + + config './nextflow.config' + + when { + process { + """ + input[0] = [ + [ "id":"homo_sapiens" ], + file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.gtf") + ] + input[1] = [ + [ "id":"homo_sapiens" ], + file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta") + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("human - gtf - stub") { + + options '-stub' + + when { + process { + """ + input[0] = [ + [ "id":"homo_sapiens" ], + file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.gtf") + ] + input[1] = [[ "id":"homo_sapiens" ], []] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } +} diff --git a/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/tests/main.nf.test.snap b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/tests/main.nf.test.snap new file mode 100644 index 0000000..e7ff6b3 --- /dev/null +++ b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/tests/main.nf.test.snap @@ -0,0 +1,129 @@ +{ + "human - gtf": { + "content": [ + { + "0": [ + [ + { + "id": "homo_sapiens" + }, + "homo_sapiens.anno.tsv:md5,9e4373ab72f445f948621a29d834f8a7" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,ffeb476b1b43d9b8cef553283769f9f3" + ], + "feature_annotation": [ + [ + { + "id": "homo_sapiens" + }, + "homo_sapiens.anno.tsv:md5,9e4373ab72f445f948621a29d834f8a7" + ] + ], + "filtered_cdna": [ + + ], + "versions": [ + "versions.yml:md5,ffeb476b1b43d9b8cef553283769f9f3" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-09T15:23:36.094888" + }, + "human - gtf - stub": { + "content": [ + { + "0": [ + [ + { + "id": "homo_sapiens" + }, + "homo_sapiens.anno.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,ffeb476b1b43d9b8cef553283769f9f3" + ], + "feature_annotation": [ + [ + { + "id": "homo_sapiens" + }, + "homo_sapiens.anno.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "filtered_cdna": [ + + ], + "versions": [ + "versions.yml:md5,ffeb476b1b43d9b8cef553283769f9f3" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-09T15:24:00.881453" + }, + "human - gtf - fasta": { + "content": [ + { + "0": [ + [ + { + "id": "homo_sapiens" + }, + "homo_sapiens_test.anno.tsv:md5,5159cc9ee2b3646b0e633b739aad97ff" + ] + ], + "1": [ + [ + { + "id": "homo_sapiens" + }, + "homo_sapiens_test.filtered.fa.gz:md5,10c60e38188d7bbb697e703941652f04" + ] + ], + "2": [ + "versions.yml:md5,ffeb476b1b43d9b8cef553283769f9f3" + ], + "feature_annotation": [ + [ + { + "id": "homo_sapiens" + }, + "homo_sapiens_test.anno.tsv:md5,5159cc9ee2b3646b0e633b739aad97ff" + ] + ], + "filtered_cdna": [ + [ + { + "id": "homo_sapiens" + }, + "homo_sapiens_test.filtered.fa.gz:md5,10c60e38188d7bbb697e703941652f04" + ] + ], + "versions": [ + "versions.yml:md5,ffeb476b1b43d9b8cef553283769f9f3" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-09T15:23:51.480243" + } +} \ No newline at end of file diff --git a/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/tests/nextflow.config b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/tests/nextflow.config new file mode 100644 index 0000000..0226e85 --- /dev/null +++ b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: 'ATLASGENEANNOTATIONMANIPULATION_GTF2FEATUREANNOTATION' { + ext.prefix = { "${meta.id}_test" } + ext.args = { "--feature-type transcript --filter-cdnas-output ${meta.id}_test.filtered.fa.gz" } + } +} diff --git a/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/tests/tags.yml b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/tests/tags.yml new file mode 100644 index 0000000..fa4a100 --- /dev/null +++ b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/tests/tags.yml @@ -0,0 +1,2 @@ +atlasgeneannotationmanipulation/gtf2featureannotation: + - "modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/**" diff --git a/modules/nf-core/bedtools/getfasta/main.nf b/modules/nf-core/bedtools/getfasta/main.nf index 50549c7..b316117 100644 --- a/modules/nf-core/bedtools/getfasta/main.nf +++ b/modules/nf-core/bedtools/getfasta/main.nf @@ -1,5 +1,5 @@ process BEDTOOLS_GETFASTA { - tag "$bed" + tag "$meta.id" label 'process_single' conda "${moduleDir}/environment.yml" @@ -8,19 +8,20 @@ process BEDTOOLS_GETFASTA { 'biocontainers/bedtools:2.31.1--hf5e1c6e_0' }" input: - path bed + tuple val(meta), path(bed) path fasta output: - path "*.fa" , emit: fasta - path "versions.yml" , emit: versions + tuple val(meta), path("*.fa"), emit: fasta + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${bed.baseName}" + def prefix = task.ext.prefix ?: "${meta.id}" + if ("$fasta" == "${prefix}.fa") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ bedtools \\ getfasta \\ @@ -34,4 +35,16 @@ process BEDTOOLS_GETFASTA { bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + if ("$fasta" == "${prefix}.fa") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + """ + touch ${prefix}.fa + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") + END_VERSIONS + """ } diff --git a/modules/nf-core/bedtools/getfasta/meta.yml b/modules/nf-core/bedtools/getfasta/meta.yml index 25fb19a..41917fe 100644 --- a/modules/nf-core/bedtools/getfasta/meta.yml +++ b/modules/nf-core/bedtools/getfasta/meta.yml @@ -8,9 +8,14 @@ tools: - bedtools: description: | A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. - documentation: https://bedtools.readthedocs.io/en/latest/content/tools/intersect.html + documentation: https://bedtools.readthedocs.io/en/latest/content/tools/getfasta.html licence: ["MIT"] input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - bed: type: file description: Bed feature file @@ -20,6 +25,11 @@ input: description: Input fasta file pattern: "*.{fa,fasta}" output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - fasta: type: file description: Output fasta file with extracted sequences diff --git a/modules/nf-core/bedtools/getfasta/tests/main.nf.test b/modules/nf-core/bedtools/getfasta/tests/main.nf.test new file mode 100644 index 0000000..4da7552 --- /dev/null +++ b/modules/nf-core/bedtools/getfasta/tests/main.nf.test @@ -0,0 +1,62 @@ +nextflow_process { + + name "Test Process BEDTOOLS_GETFASTA" + script "../main.nf" + process "BEDTOOLS_GETFASTA" + + tag "modules" + tag "modules_nfcore" + tag "bedtools" + tag "bedtools/getfasta" + + test("sarscov2 - bed - fasta") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false], + file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true), + ] + + input[1] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - bed - fasta - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false], + file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true), + ] + + input[1] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/bedtools/getfasta/tests/main.nf.test.snap b/modules/nf-core/bedtools/getfasta/tests/main.nf.test.snap new file mode 100644 index 0000000..69bf33f --- /dev/null +++ b/modules/nf-core/bedtools/getfasta/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "sarscov2 - bed - fasta": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa:md5,41c3a45a57a16c04f828d8f8bb52df70" + ] + ], + "1": [ + "versions.yml:md5,427b4f64b2f05f28f0beef96c9f0d310" + ], + "fasta": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa:md5,41c3a45a57a16c04f828d8f8bb52df70" + ] + ], + "versions": [ + "versions.yml:md5,427b4f64b2f05f28f0beef96c9f0d310" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-03T14:16:19.383758985" + }, + "sarscov2 - bed - fasta - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,427b4f64b2f05f28f0beef96c9f0d310" + ], + "fasta": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,427b4f64b2f05f28f0beef96c9f0d310" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-03T14:16:47.47010536" + } +} \ No newline at end of file diff --git a/modules/nf-core/bedtools/getfasta/tests/tags.yml b/modules/nf-core/bedtools/getfasta/tests/tags.yml new file mode 100644 index 0000000..42ec302 --- /dev/null +++ b/modules/nf-core/bedtools/getfasta/tests/tags.yml @@ -0,0 +1,2 @@ +bedtools/getfasta: + - "modules/nf-core/bedtools/getfasta/**" diff --git a/modules/nf-core/deseq2/differential/main.nf b/modules/nf-core/deseq2/differential/main.nf index ab7bc06..4d25602 100644 --- a/modules/nf-core/deseq2/differential/main.nf +++ b/modules/nf-core/deseq2/differential/main.nf @@ -30,4 +30,21 @@ process DESEQ2_DIFFERENTIAL { script: template 'deseq_de.R' + + stub: + """ + touch ${meta.id}.deseq2.results.tsv + touch ${meta.id}.deseq2.dispersion.png + touch ${meta.id}.dds.rld.rds + touch ${meta.id}.deseq2.sizefactors.tsv + touch ${meta.id}.normalised_counts.tsv + touch ${meta.id}.rlog.tsv + touch ${meta.id}.deseq2.model.txt + touch ${meta.id}.R_sessionInfo.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bioconductor-deseq2: \$(Rscript -e "library(DESeq2); cat(as.character(packageVersion('DESeq2')))") + END_VERSIONS + """ } diff --git a/modules/nf-core/deseq2/differential/meta.yml b/modules/nf-core/deseq2/differential/meta.yml index 2b3e33b..41fcc01 100644 --- a/modules/nf-core/deseq2/differential/meta.yml +++ b/modules/nf-core/deseq2/differential/meta.yml @@ -83,7 +83,7 @@ output: type: file description: Serialised DESeq2 object pattern: "dds.rld.rds" - - sizefactors: + - size_factors: type: file description: Size factors pattern: "deseq2.sizefactors.tsv" @@ -91,14 +91,26 @@ output: type: file description: TSV-format counts matrix, normalised to size factors pattern: "normalised_counts.tsv" - - variance_stabilised_counts: + - rlog_counts: type: file - description: TSV-format counts matrix, normalised to size factors, with variance stabilisation applied - pattern: "variance_stabilised_counts.tsv" + description: | + Optional, TSV-format counts matrix, normalised to size factors, with + variance stabilisation applied via `rlog()`. + pattern: "rlog.tsv" + - vst_counts: + type: file + description: | + Optional, TSV-format counts matrix, normalised to size factors, with + variance stabilisation applied via `vst()`. + pattern: "vst_counts.tsv" - model: type: file description: TXT-format DESeq2 model pattern: "deseq2.model.tsv" + - session_info: + type: file + description: dump of R SessionInfo + pattern: "*.log" - versions: type: file description: File containing software versions diff --git a/modules/nf-core/deseq2/differential/templates/deseq_de.R b/modules/nf-core/deseq2/differential/templates/deseq_de.R index a1b3abc..532d707 100755 --- a/modules/nf-core/deseq2/differential/templates/deseq_de.R +++ b/modules/nf-core/deseq2/differential/templates/deseq_de.R @@ -68,34 +68,6 @@ read_delim_flexible <- function(file, header = TRUE, row.names = NULL, check.nam ) } -#' Round numeric dataframe columns to fixed decimal places by applying -#' formatting and converting back to numerics -#' -#' @param dataframe A data frame -#' @param columns Which columns to round (assumes all of them by default) -#' @param digits How many decimal places to round to? -#' -#' @return output Data frame - -round_dataframe_columns <- function(df, columns = NULL, digits = 8){ - if (is.null(columns)){ - columns <- colnames(df) - } - - df[,columns] <- format( - data.frame(df[, columns], check.names = FALSE), - nsmall = digits - ) - - # Convert columns back to numeric - - for (c in columns) { - df[[c]][grep("^ *NA\$", df[[c]])] <- NA - df[[c]] <- as.numeric(df[[c]]) - } - df -} - ################################################ ################################################ ## PARSE PARAMETERS FROM NEXTFLOW ## @@ -139,7 +111,8 @@ opt <- list( shrink_lfc = TRUE, cores = 1, vs_blind = TRUE, - vst_nsub = 1000 + vst_nsub = 1000, + round_digits = NULL ) opt_types <- lapply(opt, class) @@ -158,6 +131,9 @@ for ( ao in names(args_opt)){ opt[[ao]] <- args_opt[[ao]] } } +if ( ! is.null(opt\$round_digits)){ + opt\$round_digits <- as.numeric(opt\$round_digits) +} # Check if required parameters have been provided @@ -418,14 +394,20 @@ cat("Saving results for ", contrast.name, " ...\n", sep = "") # Differential expression table- note very limited rounding for consistency of # results -out_df <- cbind( - setNames(data.frame(rownames(comp.results)), opt\$gene_id_col), - round_dataframe_columns( - data.frame(comp.results[, !(colnames(comp.results) %in% opt\$gene_id_col)], check.names = FALSE) - ) +if (! is.null(opt\$round_digits)){ + comp.results <- apply(data.frame(comp.results), 2, function(x) round(x, opt\$round_digits)) +} +comp.results <- `colnames<-`( + data.frame( + gene_id = rownames(comp.results), + comp.results, + check.names = FALSE + ), + c(opt\$gene_id_col, colnames(comp.results)) # Setting all column names ) + write.table( - out_df, + comp.results, file = paste(opt\$output_prefix, 'deseq2.results.tsv', sep = '.'), col.names = TRUE, row.names = FALSE, @@ -466,12 +448,21 @@ write.table( # Write specified matrices -out_df <- cbind( - setNames(data.frame(rownames(counts(dds))), opt\$gene_id_col), - data.frame(counts(dds, normalized = TRUE)[, !(colnames(counts(dds, normalized = TRUE)) %in% opt\$gene_id_col)], check.names = FALSE) +normalised_matrix <- counts(dds, normalized = TRUE) +if (! is.null(opt\$round_digits)){ + normalised_matrix <- apply(normalised_matrix, 2, function(x) round(x, opt\$round_digits)) +} +normalised_matrix <- `colnames<-`( + data.frame( + gene_id = rownames(counts(dds)), # First column with row names from counts(dds) + normalised_matrix, # Other columns + check.names = FALSE + ), + c(opt\$gene_id_col, colnames(normalised_matrix)) # Setting all column names ) + write.table( - out_df, + normalised_matrix, file = paste(opt\$output_prefix, 'normalised_counts.tsv', sep = '.'), col.names = TRUE, row.names = FALSE, @@ -483,21 +474,26 @@ write.table( for (vs_method_name in strsplit(opt\$vs_method, ',')){ if (vs_method_name == 'vst'){ - vs_mat <- vst(dds, blind = opt\$vs_blind, nsub = opt\$vst_nsub) + vs_mat <- assay(vst(dds, blind = opt\$vs_blind, nsub = opt\$vst_nsub)) }else if (vs_method_name == 'rlog'){ - vs_mat <- rlog(dds, blind = opt\$vs_blind, fitType = opt\$fit_type) + vs_mat <- assay(rlog(dds, blind = opt\$vs_blind, fitType = opt\$fit_type)) } - # Again apply the slight rounding and then restore numeric + if (! is.null(opt\$round_digits)){ + vs_mat <- apply(vs_mat, 2, function(x) round(x, opt\$round_digits)) + } - out_df <- cbind( - setNames(data.frame(rownames(counts(dds))), opt\$gene_id_col), - round_dataframe_columns( - data.frame(assay(vs_mat)[, !(colnames(assay(vs_mat)) %in% opt\$gene_id_col)], check.names = FALSE) - ) + vs_mat <- `colnames<-`( + data.frame( + gene_id = rownames(counts(dds)), # First column with row names from counts(dds) + vs_mat, # Other columns from vs_mat + check.names = FALSE + ), + c(opt\$gene_id_col, colnames(vs_mat)) # Setting all column names ) + write.table( - out_df, + vs_mat, file = paste(opt\$output_prefix, vs_method_name, 'tsv', sep = '.'), col.names = TRUE, row.names = FALSE, diff --git a/modules/nf-core/deseq2/differential/tests/contrasts_matrix.config b/modules/nf-core/deseq2/differential/tests/contrasts_matrix.config new file mode 100644 index 0000000..0e4e63a --- /dev/null +++ b/modules/nf-core/deseq2/differential/tests/contrasts_matrix.config @@ -0,0 +1,5 @@ +process { + withName: 'DESEQ2_DIFFERENTIAL' { + ext.args = { "--round_digits 5 --blocking_variables $meta.blocking --vs_method rlog" } + } +} diff --git a/modules/nf-core/deseq2/differential/tests/contrasts_matrix_exclude_samples.config b/modules/nf-core/deseq2/differential/tests/contrasts_matrix_exclude_samples.config new file mode 100644 index 0000000..bd62f1d --- /dev/null +++ b/modules/nf-core/deseq2/differential/tests/contrasts_matrix_exclude_samples.config @@ -0,0 +1,5 @@ +process { + withName: 'DESEQ2_DIFFERENTIAL' { + ext.args = { "--round_digits 4 --blocking_variables $meta.blocking --vs_method rlog --exclude_samples_col sample_number --exclude_samples_values sample1" } + } +} diff --git a/modules/nf-core/deseq2/differential/tests/contrasts_matrix_noblocking.config b/modules/nf-core/deseq2/differential/tests/contrasts_matrix_noblocking.config new file mode 100644 index 0000000..77565bc --- /dev/null +++ b/modules/nf-core/deseq2/differential/tests/contrasts_matrix_noblocking.config @@ -0,0 +1,10 @@ +process { + withName: 'DESEQ2_DIFFERENTIAL' { + ext.args = { + [ + ((meta.blocking == null) ? '' : "--blocking_variables $meta.blocking"), + "--vs_method rlog --round_digits 5" + ].join(' ').trim() + } + } +} diff --git a/modules/nf-core/deseq2/differential/tests/contrasts_matrix_spikes.config b/modules/nf-core/deseq2/differential/tests/contrasts_matrix_spikes.config new file mode 100644 index 0000000..5ecf98b --- /dev/null +++ b/modules/nf-core/deseq2/differential/tests/contrasts_matrix_spikes.config @@ -0,0 +1,5 @@ +process { + withName: 'DESEQ2_DIFFERENTIAL' { + ext.args = { "--round_digits 5 --sizefactors_from_controls TRUE --blocking_variables $meta.blocking --vs_method rlog" } + } +} diff --git a/modules/nf-core/deseq2/differential/tests/contrasts_matrix_subset_to_contrast.config b/modules/nf-core/deseq2/differential/tests/contrasts_matrix_subset_to_contrast.config new file mode 100644 index 0000000..183b37c --- /dev/null +++ b/modules/nf-core/deseq2/differential/tests/contrasts_matrix_subset_to_contrast.config @@ -0,0 +1,5 @@ +process { + withName: 'DESEQ2_DIFFERENTIAL' { + ext.args = { "--round_digits 5 --blocking_variables $meta.blocking --vs_method rlog --subset_to_contrast_samples TRUE" } + } +} diff --git a/modules/nf-core/deseq2/differential/tests/contrasts_matrix_vst_nsub.config b/modules/nf-core/deseq2/differential/tests/contrasts_matrix_vst_nsub.config new file mode 100644 index 0000000..eb7010d --- /dev/null +++ b/modules/nf-core/deseq2/differential/tests/contrasts_matrix_vst_nsub.config @@ -0,0 +1,5 @@ +process { + withName: 'DESEQ2_DIFFERENTIAL' { + ext.args = { "--round_digits 5 --blocking_variables $meta.blocking --vs_method vst --vst_nsub 500" } + } +} diff --git a/modules/nf-core/deseq2/differential/tests/main.nf.test b/modules/nf-core/deseq2/differential/tests/main.nf.test new file mode 100644 index 0000000..370f05d --- /dev/null +++ b/modules/nf-core/deseq2/differential/tests/main.nf.test @@ -0,0 +1,499 @@ +nextflow_process { + + name "Test Process DESEQ2_DIFFERENTIAL" + script "../main.nf" + process "DESEQ2_DIFFERENTIAL" + + tag "modules" + tag "modules_nfcore" + tag "deseq2" + tag "deseq2/differential" + + test("mouse - contrasts - matrix") { + + config './contrasts_matrix.config' + + when { + process { + """ + expression_test_data_dir = params.modules_testdata_base_path + 'genomics/mus_musculus/rnaseq_expression/' + + ch_contrasts = Channel.fromPath(file(expression_test_data_dir + 'SRP254919.contrasts.csv', checkIfExists: true)) + .splitCsv ( header:true, sep:',' ) + .map{ + tuple(it, it.variable, it.reference, it.target) + } + ch_matrix = [ + [id: 'test'], + file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), + file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) + ] + ch_spikes = [[],[]] + ch_lengths = [[],[]] + + input[0] = ch_contrasts + input[1] = ch_matrix + input[2] = ch_spikes + input[3] = ch_lengths + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.results, + process.out.size_factors, + process.out.normalised_counts, + process.out.rlog_counts, + process.out.vst_counts, + process.out.model, + process.out.versions, + file(process.out.dispersion_plot[0][1]).name, + file(process.out.rdata[0][1]).name + ).match() }, + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + ) + } + } + + test("mouse - contrasts - matrix - lengths") { + + config './contrasts_matrix.config' + + when { + process { + """ + expression_test_data_dir = params.modules_testdata_base_path + 'genomics/mus_musculus/rnaseq_expression/' + + ch_contrasts = Channel.fromPath(file(expression_test_data_dir + 'SRP254919.contrasts.csv', checkIfExists: true)) + .splitCsv ( header:true, sep:',' ) + .map{ + tuple(it, it.variable, it.reference, it.target) + } + ch_matrix = [ + [id: 'test'], + file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), + file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) + ] + ch_lengths = [ + [id: 'test'], + file(expression_test_data_dir + 'SRP254919.spoofed_lengths.tsv', checkIfExists: true) + ] + + ch_spikes = [[],[]] + + input[0] = ch_contrasts + input[1] = ch_matrix + input[2] = ch_spikes + input[3] = ch_lengths + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.results, + process.out.size_factors, + process.out.normalised_counts, + process.out.rlog_counts, + process.out.vst_counts, + process.out.model, + process.out.versions, + file(process.out.dispersion_plot[0][1]).name, + file(process.out.rdata[0][1]).name + ).match() }, + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + ) + } + + } + + test("mouse - contrasts - matrix - no blocking") { + + config './contrasts_matrix_noblocking.config' + + when { + process { + """ + expression_test_data_dir = params.modules_testdata_base_path + 'genomics/mus_musculus/rnaseq_expression/' + + ch_contrasts = Channel.fromPath(file(expression_test_data_dir + 'SRP254919.contrasts.csv', checkIfExists: true)) + .splitCsv ( header:true, sep:',' ) + .map{ + tuple(it, it.variable, it.reference, it.target) + } + ch_matrix = [ + [id: 'test'], + file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), + file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) + ] + ch_spikes = [[],[]] + ch_lengths = [[],[]] + + input[0] = ch_contrasts + input[1] = ch_matrix + input[2] = ch_spikes + input[3] = ch_lengths + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.results, + process.out.size_factors, + process.out.normalised_counts, + process.out.rlog_counts, + process.out.vst_counts, + process.out.model, + process.out.versions, + file(process.out.dispersion_plot[0][1]).name, + file(process.out.rdata[0][1]).name + ).match() }, + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + ) + } + } + + test("mouse - contrasts - matrix - spikes") { + + config './contrasts_matrix_spikes.config' + + when { + process { + """ + expression_test_data_dir = params.modules_testdata_base_path + 'genomics/mus_musculus/rnaseq_expression/' + + ch_contrasts = Channel.fromPath(file(expression_test_data_dir + 'SRP254919.contrasts.csv', checkIfExists: true)) + .splitCsv ( header:true, sep:',' ) + .map{ + tuple(it, it.variable, it.reference, it.target) + } + ch_matrix = [ + [id: 'test'], + file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), + file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) + ] + ch_spikes = [ + ['id':'ERCC'], + file(expression_test_data_dir + 'SRP254919.spikes.tsv', checkIfExists: true) + ] + ch_lengths = [[],[]] + + input[0] = ch_contrasts + input[1] = ch_matrix + input[2] = ch_spikes + input[3] = ch_lengths + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.results, + process.out.size_factors, + process.out.normalised_counts, + process.out.rlog_counts, + process.out.vst_counts, + process.out.model, + process.out.versions, + file(process.out.dispersion_plot[0][1]).name, + file(process.out.rdata[0][1]).name + ).match() }, + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + ) + } + } + + test("mouse - contrasts - matrix - strip spikes") { + + config './contrasts_matrix.config' + + when { + process { + """ + expression_test_data_dir = params.modules_testdata_base_path + 'genomics/mus_musculus/rnaseq_expression/' + + ch_contrasts = Channel.fromPath(file(expression_test_data_dir + 'SRP254919.contrasts.csv', checkIfExists: true)) + .splitCsv ( header:true, sep:',' ) + .map{ + tuple(it, it.variable, it.reference, it.target) + } + ch_matrix = [ + [id: 'test'], + file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), + file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) + ] + ch_spikes = [ + ['id':'ERCC'], + file(expression_test_data_dir + 'SRP254919.spikes.tsv', checkIfExists: true) + ] + ch_lengths = [[],[]] + + input[0] = ch_contrasts + input[1] = ch_matrix + input[2] = ch_spikes + input[3] = ch_lengths + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.results, + process.out.size_factors, + process.out.normalised_counts, + process.out.rlog_counts, + process.out.vst_counts, + process.out.model, + process.out.versions, + file(process.out.dispersion_plot[0][1]).name, + file(process.out.rdata[0][1]).name + ).match() }, + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + ) + } + } + + test("mouse - contrasts - matrix - csv") { + + config './contrasts_matrix.config' + + when { + process { + """ + expression_test_data_dir = params.modules_testdata_base_path + 'genomics/mus_musculus/rnaseq_expression/' + + ch_contrasts = Channel.fromPath(file(expression_test_data_dir + 'SRP254919.contrasts.csv', checkIfExists: true)) + .splitCsv ( header:true, sep:',' ) + .map{ + tuple(it, it.variable, it.reference, it.target) + } + + // Convert the matrix to a CSV first + ch_matrix = Channel.fromPath(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv') + .splitCsv(header: false) + .map{ + it.join('\t') + } + .collectFile(name: 'test.tsv', newLine: true, sort: false) + .map{ + [ [ id:'test'], file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), it] + } + ch_spikes = [[],[]] + ch_lengths = [[],[]] + + input[0] = ch_contrasts + input[1] = ch_matrix + input[2] = ch_spikes + input[3] = ch_lengths + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.results, + process.out.size_factors, + process.out.normalised_counts, + process.out.rlog_counts, + process.out.vst_counts, + process.out.model, + process.out.versions, + file(process.out.dispersion_plot[0][1]).name, + file(process.out.rdata[0][1]).name + ).match() }, + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + ) + } + } + + test("mouse - contrasts - matrix - vst nsub") { + + config './contrasts_matrix_vst_nsub.config' + + when { + process { + """ + expression_test_data_dir = params.modules_testdata_base_path + 'genomics/mus_musculus/rnaseq_expression/' + + ch_contrasts = Channel.fromPath(file(expression_test_data_dir + 'SRP254919.contrasts.csv', checkIfExists: true)) + .splitCsv ( header:true, sep:',' ) + .map{ + tuple(it, it.variable, it.reference, it.target) + } + ch_matrix = [ + [id: 'test'], + file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), + file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) + ] + ch_spikes = [[],[]] + ch_lengths = [[],[]] + + input[0] = ch_contrasts + input[1] = ch_matrix + input[2] = ch_spikes + input[3] = ch_lengths + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.results, + process.out.size_factors, + process.out.normalised_counts, + process.out.rlog_counts, + process.out.vst_counts, + process.out.model, + process.out.versions, + file(process.out.dispersion_plot[0][1]).name, + file(process.out.rdata[0][1]).name + ).match() }, + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + ) + } + } + + test("mouse - contrasts - matrix - subset to contrast") { + + config './contrasts_matrix_subset_to_contrast.config' + + when { + process { + """ + expression_test_data_dir = params.modules_testdata_base_path + 'genomics/mus_musculus/rnaseq_expression/' + + ch_contrasts = Channel.fromPath(file(expression_test_data_dir + 'SRP254919.contrasts.csv', checkIfExists: true)) + .splitCsv ( header:true, sep:',' ) + .map{ + tuple(it, it.variable, it.reference, it.target) + } + ch_matrix = [ + [id: 'test'], + file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), + file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) + ] + ch_spikes = [[],[]] + ch_lengths = [[],[]] + + input[0] = ch_contrasts + input[1] = ch_matrix + input[2] = ch_spikes + input[3] = ch_lengths + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.results, + process.out.size_factors, + process.out.normalised_counts, + process.out.rlog_counts, + process.out.vst_counts, + process.out.model, + process.out.versions, + file(process.out.dispersion_plot[0][1]).name, + file(process.out.rdata[0][1]).name + ).match() }, + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + ) + } + } + + test("mouse - contrasts - matrix - exclude samples") { + + config './contrasts_matrix_exclude_samples.config' + + when { + process { + """ + expression_test_data_dir = params.modules_testdata_base_path + 'genomics/mus_musculus/rnaseq_expression/' + + ch_contrasts = Channel.fromPath(file(expression_test_data_dir + 'SRP254919.contrasts.csv', checkIfExists: true)) + .splitCsv ( header:true, sep:',' ) + .map{ + tuple(it, it.variable, it.reference, it.target) + } + ch_matrix = [ + [id: 'test'], + file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), + file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) + ] + ch_spikes = [[],[]] + ch_lengths = [[],[]] + + input[0] = ch_contrasts + input[1] = ch_matrix + input[2] = ch_spikes + input[3] = ch_lengths + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.results, + process.out.size_factors, + process.out.normalised_counts, + process.out.rlog_counts, + process.out.vst_counts, + process.out.model, + process.out.versions, + file(process.out.dispersion_plot[0][1]).name, + file(process.out.rdata[0][1]).name + ).match() }, + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + ) + } + } + test("mouse - contrasts - matrix - stub") { + + config './contrasts_matrix.config' + + options "-stub" + + when { + process { + """ + expression_test_data_dir = params.modules_testdata_base_path + 'genomics/mus_musculus/rnaseq_expression/' + + ch_contrasts = Channel.fromPath(file(expression_test_data_dir + 'SRP254919.contrasts.csv', checkIfExists: true)) + .splitCsv ( header:true, sep:',' ) + .map{ + tuple(it, it.variable, it.reference, it.target) + } + ch_matrix = [ + [id: 'test'], + file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), + file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) + ] + ch_spikes = [[],[]] + ch_lengths = [[],[]] + + input[0] = ch_contrasts + input[1] = ch_matrix + input[2] = ch_spikes + input[3] = ch_lengths + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/deseq2/differential/tests/main.nf.test.snap b/modules/nf-core/deseq2/differential/tests/main.nf.test.snap new file mode 100644 index 0000000..84f14f2 --- /dev/null +++ b/modules/nf-core/deseq2/differential/tests/main.nf.test.snap @@ -0,0 +1,1480 @@ +{ + "mouse - contrasts - matrix - no blocking": { + "content": [ + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.results.tsv:md5,791cdba2615a445cded13cae95df73ef" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.results.tsv:md5,2438053a4bdc869f467a12d3c22c7ba7" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.sizefactors.tsv:md5,6332f21889ecac387bb12eeb04f23849" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.sizefactors.tsv:md5,6332f21889ecac387bb12eeb04f23849" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.normalised_counts.tsv:md5,46ab7200c626649ab6256ed797ef5071" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.normalised_counts.tsv:md5,46ab7200c626649ab6256ed797ef5071" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.rlog.tsv:md5,b1adc1fba6bd0c8b55973608f4b97030" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.rlog.tsv:md5,b1adc1fba6bd0c8b55973608f4b97030" + ] + ], + [ + + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.model.txt:md5,d2113d82b76046c319e6602da2ad74d6" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.model.txt:md5,fa05126a58cb67c107d45426b0bdea83" + ] + ], + [ + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e", + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e" + ], + "treatment_mCherry_hND6_.deseq2.dispersion.png", + "treatment_mCherry_hND6_.dds.rld.rds" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-18T15:52:40.049829142" + }, + "mouse - contrasts - matrix": { + "content": [ + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.results.tsv:md5,791cdba2615a445cded13cae95df73ef" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.results.tsv:md5,2438053a4bdc869f467a12d3c22c7ba7" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.sizefactors.tsv:md5,6332f21889ecac387bb12eeb04f23849" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.sizefactors.tsv:md5,6332f21889ecac387bb12eeb04f23849" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.normalised_counts.tsv:md5,46ab7200c626649ab6256ed797ef5071" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.normalised_counts.tsv:md5,46ab7200c626649ab6256ed797ef5071" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.rlog.tsv:md5,b1adc1fba6bd0c8b55973608f4b97030" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.rlog.tsv:md5,b1adc1fba6bd0c8b55973608f4b97030" + ] + ], + [ + + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.model.txt:md5,d2113d82b76046c319e6602da2ad74d6" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.model.txt:md5,fa05126a58cb67c107d45426b0bdea83" + ] + ], + [ + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e", + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e" + ], + "treatment_mCherry_hND6_.deseq2.dispersion.png", + "treatment_mCherry_hND6_.dds.rld.rds" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-18T15:51:18.087544733" + }, + "mouse - contrasts - matrix - exclude samples": { + "content": [ + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.results.tsv:md5,7d28d65b7ab94306c1328027a6531405" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.results.tsv:md5,f509c2de7d6935942eff594a0aca662e" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.sizefactors.tsv:md5,87d6d634ffea2d7a9df9f9bae91b4d90" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.sizefactors.tsv:md5,87d6d634ffea2d7a9df9f9bae91b4d90" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.normalised_counts.tsv:md5,90327e9bfc3bbafb96e11b13b3cd5e19" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.normalised_counts.tsv:md5,90327e9bfc3bbafb96e11b13b3cd5e19" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.rlog.tsv:md5,c500bcad14f845113f85610d1ebf643c" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.rlog.tsv:md5,c500bcad14f845113f85610d1ebf643c" + ] + ], + [ + + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.model.txt:md5,d2113d82b76046c319e6602da2ad74d6" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.model.txt:md5,fa05126a58cb67c107d45426b0bdea83" + ] + ], + [ + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e", + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e" + ], + "treatment_mCherry_hND6_.deseq2.dispersion.png", + "treatment_mCherry_hND6_.dds.rld.rds" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-18T15:55:36.950512426" + }, + "mouse - contrasts - matrix - lengths": { + "content": [ + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.results.tsv:md5,944176b73455aa7c8de3ec32c03edef6" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.results.tsv:md5,6a9bc76c9d54034c90fa159372f97516" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.sizefactors.tsv:md5,69183b94202a806067962d0df0b9875b" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.sizefactors.tsv:md5,69183b94202a806067962d0df0b9875b" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.normalised_counts.tsv:md5,7050f44c460cc13e3f101d048d503527" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.normalised_counts.tsv:md5,7050f44c460cc13e3f101d048d503527" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.rlog.tsv:md5,22a4b117246b2317e0f4daf7919703f2" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.rlog.tsv:md5,22a4b117246b2317e0f4daf7919703f2" + ] + ], + [ + + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.model.txt:md5,d2113d82b76046c319e6602da2ad74d6" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.model.txt:md5,fa05126a58cb67c107d45426b0bdea83" + ] + ], + [ + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e", + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e" + ], + "treatment_mCherry_hND6_.deseq2.dispersion.png", + "treatment_mCherry_hND6_.dds.rld.rds" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-18T15:51:57.709209949" + }, + "mouse - contrasts - matrix - strip spikes": { + "content": [ + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.results.tsv:md5,c4d269cace6dfe42e81e39d13b4b0354" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.results.tsv:md5,e1820951d5d5c40fa7fd6368e8f62e8c" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.sizefactors.tsv:md5,a526a1bb5cb270f5a4a1641fefd289b3" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.sizefactors.tsv:md5,a526a1bb5cb270f5a4a1641fefd289b3" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.normalised_counts.tsv:md5,89c5922a30218a17ab6ee84e031f6a9b" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.normalised_counts.tsv:md5,89c5922a30218a17ab6ee84e031f6a9b" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.rlog.tsv:md5,4b4526ddcca010f5c75f841b2cef269f" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.rlog.tsv:md5,4b4526ddcca010f5c75f841b2cef269f" + ] + ], + [ + + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.model.txt:md5,d2113d82b76046c319e6602da2ad74d6" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.model.txt:md5,fa05126a58cb67c107d45426b0bdea83" + ] + ], + [ + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e", + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e" + ], + "treatment_mCherry_hND6_.deseq2.dispersion.png", + "treatment_mCherry_hND6_.dds.rld.rds" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-18T15:53:41.239674151" + }, + "mouse - contrasts - matrix - subset to contrast": { + "content": [ + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.results.tsv:md5,791cdba2615a445cded13cae95df73ef" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.results.tsv:md5,2438053a4bdc869f467a12d3c22c7ba7" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.sizefactors.tsv:md5,6332f21889ecac387bb12eeb04f23849" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.sizefactors.tsv:md5,6332f21889ecac387bb12eeb04f23849" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.normalised_counts.tsv:md5,46ab7200c626649ab6256ed797ef5071" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.normalised_counts.tsv:md5,46ab7200c626649ab6256ed797ef5071" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.rlog.tsv:md5,b1adc1fba6bd0c8b55973608f4b97030" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.rlog.tsv:md5,b1adc1fba6bd0c8b55973608f4b97030" + ] + ], + [ + + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.model.txt:md5,d2113d82b76046c319e6602da2ad74d6" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.model.txt:md5,fa05126a58cb67c107d45426b0bdea83" + ] + ], + [ + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e", + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e" + ], + "treatment_mCherry_hND6_.deseq2.dispersion.png", + "treatment_mCherry_hND6_.dds.rld.rds" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-18T15:55:08.800966024" + }, + "mouse - contrasts - matrix - spikes": { + "content": [ + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.results.tsv:md5,51ba90cf073d9d5f38ebb043d7e5b220" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.results.tsv:md5,a04e2df3712d5be27e39c50f83319ec4" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.sizefactors.tsv:md5,1708374146b4e8c28fbc78fa292102cd" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.sizefactors.tsv:md5,1708374146b4e8c28fbc78fa292102cd" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.normalised_counts.tsv:md5,6f3af146a6f8fbb8f565dd66e79d2cb1" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.normalised_counts.tsv:md5,6f3af146a6f8fbb8f565dd66e79d2cb1" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.rlog.tsv:md5,39df6fb2969afc009a602261e864238f" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.rlog.tsv:md5,39df6fb2969afc009a602261e864238f" + ] + ], + [ + + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.model.txt:md5,d2113d82b76046c319e6602da2ad74d6" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.model.txt:md5,fa05126a58cb67c107d45426b0bdea83" + ] + ], + [ + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e", + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e" + ], + "treatment_mCherry_hND6_.deseq2.dispersion.png", + "treatment_mCherry_hND6_.dds.rld.rds" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-18T15:53:12.892137198" + }, + "mouse - contrasts - matrix - csv": { + "content": [ + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.results.tsv:md5,791cdba2615a445cded13cae95df73ef" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.sizefactors.tsv:md5,6332f21889ecac387bb12eeb04f23849" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.normalised_counts.tsv:md5,46ab7200c626649ab6256ed797ef5071" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.rlog.tsv:md5,b1adc1fba6bd0c8b55973608f4b97030" + ] + ], + [ + + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.model.txt:md5,d2113d82b76046c319e6602da2ad74d6" + ] + ], + [ + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e" + ], + "treatment_mCherry_hND6_.deseq2.dispersion.png", + "treatment_mCherry_hND6_.dds.rld.rds" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-18T15:54:07.676718521" + }, + "mouse - contrasts - matrix - vst nsub": { + "content": [ + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.results.tsv:md5,791cdba2615a445cded13cae95df73ef" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.results.tsv:md5,2438053a4bdc869f467a12d3c22c7ba7" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.sizefactors.tsv:md5,6332f21889ecac387bb12eeb04f23849" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.sizefactors.tsv:md5,6332f21889ecac387bb12eeb04f23849" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.normalised_counts.tsv:md5,46ab7200c626649ab6256ed797ef5071" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.normalised_counts.tsv:md5,46ab7200c626649ab6256ed797ef5071" + ] + ], + [ + + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.vst.tsv:md5,41c39026998bb5943e19b6012e750d89" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.vst.tsv:md5,41c39026998bb5943e19b6012e750d89" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.model.txt:md5,d2113d82b76046c319e6602da2ad74d6" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.model.txt:md5,fa05126a58cb67c107d45426b0bdea83" + ] + ], + [ + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e", + "versions.yml:md5,62c34d4f3d11c2bdbe2e4f7e6086b35e" + ], + "treatment_mCherry_hND6_.deseq2.dispersion.png", + "treatment_mCherry_hND6_.dds.rld.rds" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-18T15:54:37.008786139" + }, + "mouse - contrasts - matrix - stub": { + "content": [ + { + "0": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.results.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.results.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.normalised_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.normalised_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.rlog.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.rlog.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + + ], + "7": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.model.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.model.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + "versions.yml:md5,2d67217d8adb1fa0d143b4017e6657fe", + "versions.yml:md5,2d67217d8adb1fa0d143b4017e6657fe" + ], + "dispersion_plot": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.dispersion.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "model": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.model.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.model.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "normalised_counts": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.normalised_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.normalised_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "rdata": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.dds.rld.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "results": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.results.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.results.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "rlog_counts": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.rlog.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.rlog.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "session_info": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "size_factors": [ + [ + { + "id": "treatment_mCherry_hND6_", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "" + }, + "treatment_mCherry_hND6_.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "treatment_mCherry_hND6_sample_number", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking": "sample_number" + }, + "treatment_mCherry_hND6_sample_number.deseq2.sizefactors.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,2d67217d8adb1fa0d143b4017e6657fe", + "versions.yml:md5,2d67217d8adb1fa0d143b4017e6657fe" + ], + "vst_counts": [ + + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-18T15:55:53.660457322" + } +} \ No newline at end of file diff --git a/modules/nf-core/deseq2/differential/tests/tags.yml b/modules/nf-core/deseq2/differential/tests/tags.yml new file mode 100644 index 0000000..8407e5c --- /dev/null +++ b/modules/nf-core/deseq2/differential/tests/tags.yml @@ -0,0 +1,2 @@ +deseq2/differential: + - "modules/nf-core/deseq2/differential/**" diff --git a/modules/nf-core/gawk/environment.yml b/modules/nf-core/gawk/environment.yml index 34513c7..3d98a08 100644 --- a/modules/nf-core/gawk/environment.yml +++ b/modules/nf-core/gawk/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - anaconda::gawk=5.1.0 + - conda-forge::gawk=5.3.0 diff --git a/modules/nf-core/gawk/main.nf b/modules/nf-core/gawk/main.nf index f856a1f..ca46892 100644 --- a/modules/nf-core/gawk/main.nf +++ b/modules/nf-core/gawk/main.nf @@ -4,8 +4,8 @@ process GAWK { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/gawk:5.1.0' : - 'biocontainers/gawk:5.1.0' }" + 'https://depot.galaxyproject.org/singularity/gawk:5.3.0' : + 'biocontainers/gawk:5.3.0' }" input: tuple val(meta), path(input) @@ -41,10 +41,11 @@ process GAWK { stub: prefix = task.ext.prefix ?: "${meta.id}" - suffix = task.ext.suffix ?: "${input.getExtension}" + suffix = task.ext.suffix ?: "${input.getExtension()}" + def create_cmd = suffix.endsWith("gz") ? "echo '' | gzip >" : "touch" """ - touch ${prefix}.${suffix} + ${create_cmd} ${prefix}.${suffix} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gawk/tests/main.nf.test b/modules/nf-core/gawk/tests/main.nf.test new file mode 100644 index 0000000..fce82ca --- /dev/null +++ b/modules/nf-core/gawk/tests/main.nf.test @@ -0,0 +1,56 @@ +nextflow_process { + + name "Test Process GAWK" + script "../main.nf" + process "GAWK" + + tag "modules" + tag "modules_nfcore" + tag "gawk" + + test("convert fasta to bed") { + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("convert fasta to bed with program file") { + config "./nextflow_with_program_file.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[1] = Channel.of('BEGIN {FS="\t"}; {print \$1 FS "0" FS \$2}').collectFile(name:"program.txt") + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/gawk/tests/main.nf.test.snap b/modules/nf-core/gawk/tests/main.nf.test.snap new file mode 100644 index 0000000..4f3a759 --- /dev/null +++ b/modules/nf-core/gawk/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "convert fasta to bed with program file": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + ] + ], + "1": [ + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" + ], + "output": [ + [ + { + "id": "test" + }, + "test.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + ] + ], + "versions": [ + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.03.0" + }, + "timestamp": "2024-05-17T15:20:02.495430346" + }, + "convert fasta to bed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + ] + ], + "1": [ + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" + ], + "output": [ + [ + { + "id": "test" + }, + "test.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + ] + ], + "versions": [ + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.03.0" + }, + "timestamp": "2024-05-17T15:19:53.291809648" + } +} \ No newline at end of file diff --git a/modules/nf-core/gawk/tests/nextflow.config b/modules/nf-core/gawk/tests/nextflow.config new file mode 100644 index 0000000..6e5d43a --- /dev/null +++ b/modules/nf-core/gawk/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: GAWK { + ext.suffix = "bed" + ext.args2 = '\'BEGIN {FS="\t"}; {print \$1 FS "0" FS \$2}\'' + } +} diff --git a/modules/nf-core/gawk/tests/nextflow_with_program_file.config b/modules/nf-core/gawk/tests/nextflow_with_program_file.config new file mode 100644 index 0000000..693ad41 --- /dev/null +++ b/modules/nf-core/gawk/tests/nextflow_with_program_file.config @@ -0,0 +1,5 @@ +process { + withName: GAWK { + ext.suffix = "bed" + } +} diff --git a/modules/nf-core/gawk/tests/tags.yml b/modules/nf-core/gawk/tests/tags.yml new file mode 100644 index 0000000..72e4531 --- /dev/null +++ b/modules/nf-core/gawk/tests/tags.yml @@ -0,0 +1,2 @@ +gawk: + - "modules/nf-core/gawk/**" diff --git a/modules/nf-core/samtools/faidx/environment.yml b/modules/nf-core/samtools/faidx/environment.yml index 9c24eb0..f8450fa 100644 --- a/modules/nf-core/samtools/faidx/environment.yml +++ b/modules/nf-core/samtools/faidx/environment.yml @@ -6,5 +6,5 @@ channels: - defaults dependencies: - - bioconda::htslib=1.19.1 - - bioconda::samtools=1.19.2 + - bioconda::htslib=1.20 + - bioconda::samtools=1.20 diff --git a/modules/nf-core/samtools/faidx/main.nf b/modules/nf-core/samtools/faidx/main.nf index cfe7ad9..bdcdbc9 100644 --- a/modules/nf-core/samtools/faidx/main.nf +++ b/modules/nf-core/samtools/faidx/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_FAIDX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : - 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : + 'biocontainers/samtools:1.20--h50ea8bc_0' }" input: tuple val(meta), path(fasta) diff --git a/modules/nf-core/samtools/faidx/tests/main.nf.test b/modules/nf-core/samtools/faidx/tests/main.nf.test index 136b212..17244ef 100644 --- a/modules/nf-core/samtools/faidx/tests/main.nf.test +++ b/modules/nf-core/samtools/faidx/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[1] = [[],[]] """ @@ -27,7 +27,7 @@ nextflow_process { { assert process.success }, { assert snapshot(process.out).match() } ) - } + } } test("test_samtools_faidx_bgzip") { @@ -36,7 +36,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_gz'], checkIfExists: true) ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true)] input[1] = [[],[]] """ @@ -48,7 +48,7 @@ nextflow_process { { assert process.success }, { assert snapshot(process.out).match() } ) - } + } } test("test_samtools_faidx_fasta") { @@ -59,10 +59,10 @@ nextflow_process { process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[1] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } } @@ -72,7 +72,7 @@ nextflow_process { { assert process.success }, { assert snapshot(process.out).match() } ) - } + } } test("test_samtools_faidx_stub_fasta") { @@ -83,10 +83,10 @@ nextflow_process { process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[1] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } } @@ -96,7 +96,7 @@ nextflow_process { { assert process.success }, { assert snapshot(process.out).match() } ) - } + } } test("test_samtools_faidx_stub_fai") { @@ -105,7 +105,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[1] = [[],[]] """ @@ -117,7 +117,6 @@ nextflow_process { { assert process.success }, { assert snapshot(process.out).match() } ) - } + } } - } \ No newline at end of file diff --git a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap index 3e651ef..3223b72 100644 --- a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap @@ -18,7 +18,7 @@ ], "3": [ - "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c" + "versions.yml:md5,2db78952923a61e05d50b95518b21856" ], "fa": [ @@ -36,7 +36,7 @@ ], "versions": [ - "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c" + "versions.yml:md5,2db78952923a61e05d50b95518b21856" ] } ], @@ -44,7 +44,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-18T16:22:39.412601" + "timestamp": "2024-05-28T15:42:14.779784761" }, "test_samtools_faidx_bgzip": { "content": [ @@ -71,7 +71,7 @@ ] ], "3": [ - "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c" + "versions.yml:md5,2db78952923a61e05d50b95518b21856" ], "fa": [ @@ -95,7 +95,7 @@ ] ], "versions": [ - "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c" + "versions.yml:md5,2db78952923a61e05d50b95518b21856" ] } ], @@ -103,7 +103,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-18T16:23:22.427966" + "timestamp": "2024-05-28T15:42:20.256633877" }, "test_samtools_faidx_fasta": { "content": [ @@ -124,7 +124,7 @@ ], "3": [ - "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c" + "versions.yml:md5,2db78952923a61e05d50b95518b21856" ], "fa": [ [ @@ -142,7 +142,7 @@ ], "versions": [ - "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c" + "versions.yml:md5,2db78952923a61e05d50b95518b21856" ] } ], @@ -150,7 +150,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-18T16:24:04.107537" + "timestamp": "2024-05-28T15:42:25.632577273" }, "test_samtools_faidx_stub_fasta": { "content": [ @@ -171,7 +171,7 @@ ], "3": [ - "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c" + "versions.yml:md5,2db78952923a61e05d50b95518b21856" ], "fa": [ [ @@ -189,7 +189,7 @@ ], "versions": [ - "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c" + "versions.yml:md5,2db78952923a61e05d50b95518b21856" ] } ], @@ -197,7 +197,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-18T16:24:45.868463" + "timestamp": "2024-05-28T15:42:31.058424849" }, "test_samtools_faidx_stub_fai": { "content": [ @@ -218,7 +218,7 @@ ], "3": [ - "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c" + "versions.yml:md5,2db78952923a61e05d50b95518b21856" ], "fa": [ @@ -236,7 +236,7 @@ ], "versions": [ - "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c" + "versions.yml:md5,2db78952923a61e05d50b95518b21856" ] } ], @@ -244,6 +244,6 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-18T16:25:27.550554" + "timestamp": "2024-05-28T15:42:36.479929617" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/reheader/environment.yml b/modules/nf-core/samtools/reheader/environment.yml index 8e6408d..aa9c798 100644 --- a/modules/nf-core/samtools/reheader/environment.yml +++ b/modules/nf-core/samtools/reheader/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.19.2 - - bioconda::htslib=1.19.1 + - bioconda::samtools=1.20 + - bioconda::htslib=1.20 diff --git a/modules/nf-core/samtools/reheader/main.nf b/modules/nf-core/samtools/reheader/main.nf index 94c19be..24192ea 100644 --- a/modules/nf-core/samtools/reheader/main.nf +++ b/modules/nf-core/samtools/reheader/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_REHEADER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0': - 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0': + 'biocontainers/samtools:1.20--h50ea8bc_0' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/ucsc/gtftogenepred/main.nf b/modules/nf-core/ucsc/gtftogenepred/main.nf index 88aace2..afbb5f3 100644 --- a/modules/nf-core/ucsc/gtftogenepred/main.nf +++ b/modules/nf-core/ucsc/gtftogenepred/main.nf @@ -1,5 +1,5 @@ process UCSC_GTFTOGENEPRED { - tag '${meta.id}' + tag "${meta.id}" label 'process_low' conda "${moduleDir}/environment.yml" diff --git a/subworkflows/local/fimo.nf b/subworkflows/local/fimo.nf index 781e44c..0b13d28 100644 --- a/subworkflows/local/fimo.nf +++ b/subworkflows/local/fimo.nf @@ -30,9 +30,7 @@ workflow FIMO { MERGE_REGIONS(SORT_REGIONS.out.sorted) - ch_bed = MERGE_REGIONS.out.bed.map{meta, bed -> bed} - - EXTRACT_SEQUENCE(ch_bed, fasta.map{meta, fasta -> fasta}) + EXTRACT_SEQUENCE(MERGE_REGIONS.out.bed, fasta.map{meta, fasta -> fasta}) ch_filtered_motifs = FILTER_MOTIFS.out.motifs .flatten()