From b904521367f2a1322fec5adfa57807c396631ee5 Mon Sep 17 00:00:00 2001 From: Lorena Pantano Date: Fri, 23 Aug 2024 16:31:58 -0400 Subject: [PATCH 01/11] add trim3p N nts --- conf/modules.config | 26 +++++++++++- modules/local/trim3p.nf | 42 +++++++++++++++++++ .../fastq_fastqc_umitools_fastp/main.nf | 21 ++++++++-- 3 files changed, 84 insertions(+), 5 deletions(-) create mode 100644 modules/local/trim3p.nf diff --git a/conf/modules.config b/conf/modules.config index 1ca9f9e4..bcbe180d 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -49,7 +49,7 @@ process { ext.args = [ "", params.trim_fastq ? "" : "--disable_adapter_trimming", params.clip_r1 > 0 ? "--trim_front1 ${params.clip_r1}" : "", // Remove bp from the 5' end of read 1. - params.three_prime_clip_r1 > 0 ? "--trim_tail1 ${params.three_prime_clip_r1}" : "", // Remove bp from the 3' end of read 1 AFTER adapter/quality trimming has been performed. + // params.three_prime_clip_r1 > 0 ? "--trim_tail1 ${params.three_prime_clip_r1}" : "", // Remove bp from the 3' end of read 1 AFTER adapter/quality trimming has been performed. params.fastp_min_length > 0 ? "-l ${params.fastp_min_length}" : "", params.fastp_max_length > 0 ? "--max_len1 ${params.fastp_max_length}" : "", params.three_prime_adapter == "auto-detect" ? "" : "--adapter_sequence ${params.three_prime_adapter}" @@ -72,6 +72,30 @@ process { enabled: params.save_trimmed_fail ] ] + } + // + // FASTQ_FASTQC_UMITOOLS_FASTP + // + withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTP3' { + ext.args = [ "", + "--disable_adapter_trimming", + "--disable_quality_filtering", + params.three_prime_clip_r1 > 0 ? "--trim_tail1 ${params.three_prime_clip_r1}" : "", // Remove bp from the 3' end of read 1 AFTER adapter/quality trimming has been performed. + params.fastp_min_length > 0 ? "-l ${params.fastp_min_length}" : "", + params.fastp_max_length > 0 ? "--max_len1 ${params.fastp_max_length}" : "", + ].join(" ").trim() + publishDir = [ + [ + path: { "${params.outdir}/fastp/on_raw" }, + mode: params.publish_dir_mode, + pattern: "*.{json,html}" + ], + [ + path: { "${params.outdir}/fastp/on_raw/log" }, + mode: params.publish_dir_mode, + pattern: "*.log" + ] + ] } withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW' { //the prefix is required for multiqc to pickup the files separately from the other fastqc instances diff --git a/modules/local/trim3p.nf b/modules/local/trim3p.nf new file mode 100644 index 00000000..e208d16c --- /dev/null +++ b/modules/local/trim3p.nf @@ -0,0 +1,42 @@ +process FASTP3 { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/fastp:0.23.4--h5f740d0_0' : + 'biocontainers/fastp:0.23.4--h5f740d0_0' }" + + input: + tuple val(meta), path(reads) + + output: + tuple val(meta), path('*fastp3.fastq.gz') , optional:true, emit: reads + tuple val(meta), path('*.json') , emit: json + tuple val(meta), path('*.html') , emit: html + tuple val(meta), path('*.log') , emit: log + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + """ + fastp \\ + --in1 ${reads} \\ + --out1 ${prefix}.fastp3.fastq.gz \\ + --thread $task.cpus \\ + --json ${prefix}.fastp3.json \\ + --html ${prefix}.fastp3.html \\ + $args \\ + 2> >(tee ${prefix}.fastp3.log >&2) + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") + END_VERSIONS + """ + } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf index 764ce013..00693e4e 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf @@ -6,6 +6,7 @@ include { FASTQC as FASTQC_RAW } from '../../../modules/nf-core/fastqc/main' include { FASTQC as FASTQC_TRIM } from '../../../modules/nf-core/fastqc/main' include { UMITOOLS_EXTRACT } from '../../../modules/nf-core/umitools/extract/main' include { FASTP } from '../../../modules/nf-core/fastp/main' +include { FASTP3 } from '../../../modules/local/trim3p.nf' // // Function that parses fastp json output file to get total number of reads after trimming @@ -94,19 +95,31 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { save_trimmed_fail, save_merged ) + trim_reads = FASTP.out.reads trim_json = FASTP.out.json trim_html = FASTP.out.html trim_log = FASTP.out.log trim_reads_fail = FASTP.out.reads_fail trim_reads_merged = FASTP.out.reads_merged ch_versions = ch_versions.mix(FASTP.out.versions.first()) + + // Trim 3' end nucleotides after adapter is removed, otherwise they are not really trimmed + if (params.three_prime_clip_r1){ + FASTP3( + trim_reads + ) + trim_reads = FASTP3.out.reads + trim_json = FASTP3.out.json + } + trim_reads + .view() + .set{new_reads} + // // Filter FastQ files based on minimum trimmed read count after adapter trimming // - FASTP - .out - .reads + trim_reads .join(trim_json) .map { meta, reads, json -> [ meta, reads, getFastpReadsAfterFiltering(json) ] } .set { ch_num_trimmed_reads } @@ -135,7 +148,7 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { } emit: - reads = trim_reads // channel: [ val(meta), [ reads ] ] + reads = new_reads // channel: [ val(meta), [ reads ] ] fastqc_raw_html // channel: [ val(meta), [ html ] ] fastqc_raw_zip // channel: [ val(meta), [ zip ] ] From 51a6dc0b0c2568378752394577c698eda42f97dc Mon Sep 17 00:00:00 2001 From: Lorena Pantano Date: Fri, 23 Aug 2024 17:57:42 -0400 Subject: [PATCH 02/11] not track logs for this extra step --- subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf index f9a4ca0a..010b7684 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf @@ -116,7 +116,7 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { trim_reads ) trim_reads = FASTP3.out.reads - trim_json = FASTP3.out.json + //trim_json = FASTP3.out.json } trim_reads From 16e1287cb1135d0a22f2ffb25ab461b84761a26a Mon Sep 17 00:00:00 2001 From: Lorena Pantano Date: Fri, 23 Aug 2024 18:04:34 -0400 Subject: [PATCH 03/11] fix lint --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index bcbe180d..d334735f 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -73,7 +73,7 @@ process { ] ] } - // + // // FASTQ_FASTQC_UMITOOLS_FASTP // withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTP3' { From 0c5222a55e531282a74b50a48c2882d1092a18a1 Mon Sep 17 00:00:00 2001 From: Lorena Pantano Date: Fri, 23 Aug 2024 18:32:09 -0400 Subject: [PATCH 04/11] move fastp2 module to main workflow --- .../fastq_fastqc_umitools_fastp/main.nf | 21 ++++--------------- workflows/smrnaseq.nf | 9 ++++++++ 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf index 010b7684..ab6cbb32 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf @@ -6,7 +6,6 @@ include { FASTQC as FASTQC_RAW } from '../../../modules/nf-core/fastqc/main' include { FASTQC as FASTQC_TRIM } from '../../../modules/nf-core/fastqc/main' include { UMITOOLS_EXTRACT } from '../../../modules/nf-core/umitools/extract/main' include { FASTP } from '../../../modules/nf-core/fastp/main' -include { FASTP3 } from '../../../modules/local/trim3p.nf' // // Function that parses fastp json output file to get total number of reads after trimming @@ -102,31 +101,19 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { save_trimmed_fail, save_merged ) - trim_reads = FASTP.out.reads trim_json = FASTP.out.json trim_html = FASTP.out.html trim_log = FASTP.out.log trim_reads_fail = FASTP.out.reads_fail trim_reads_merged = FASTP.out.reads_merged ch_versions = ch_versions.mix(FASTP.out.versions.first()) - - // Trim 3' end nucleotides after adapter is removed, otherwise they are not really trimmed - if (params.three_prime_clip_r1){ - FASTP3( - trim_reads - ) - trim_reads = FASTP3.out.reads - //trim_json = FASTP3.out.json - } - trim_reads - .view() - .set{new_reads} - // // Filter FastQ files based on minimum trimmed read count after adapter trimming // - trim_reads + FASTP + .out + .reads .join(trim_json) .map { meta, reads, json -> [ meta, reads, getFastpReadsAfterFiltering(json, min_trimmed_reads.toLong()) ] } .set { ch_num_trimmed_reads } @@ -155,7 +142,7 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { } emit: - reads = new_reads // channel: [ val(meta), [ reads ] ] + reads = trim_reads // channel: [ val(meta), [ reads ] ] fastqc_raw_html // channel: [ val(meta), [ html ] ] fastqc_raw_zip // channel: [ val(meta), [ zip ] ] diff --git a/workflows/smrnaseq.nf b/workflows/smrnaseq.nf index ac410b8f..593bc3d5 100644 --- a/workflows/smrnaseq.nf +++ b/workflows/smrnaseq.nf @@ -7,6 +7,7 @@ include { CAT_FASTQ } from '../modules/nf-core/cat/fastq/ include { CONTAMINANT_FILTER } from '../subworkflows/local/contaminant_filter' include { FASTQC } from '../modules/nf-core/fastqc/main' include { FASTQ_FASTQC_UMITOOLS_FASTP } from '../subworkflows/nf-core/fastq_fastqc_umitools_fastp' +include { FASTP3 } from '../modules/local/trim3p.nf' include { FASTP as FASTP_LENGTH_FILTER } from '../modules/nf-core/fastp' include { GENOME_QUANT } from '../subworkflows/local/genome_quant' include { INDEX_GENOME } from '../modules/local/bowtie_genome' @@ -110,6 +111,14 @@ workflow NFCORE_SMRNASEQ { ch_fasta = params.fasta ? file(params.fasta): [] ch_reads_for_mirna = FASTQ_FASTQC_UMITOOLS_FASTP.out.reads + // Trim 3' end nucleotides after adapter is removed, otherwise they are not really trimmed + if (params.three_prime_clip_r1){ + FASTP3( + ch_reads_for_mirna + ) + ch_reads_for_mirna = FASTP3.out.reads + //trim_json = FASTP3.out.json + } // even if bowtie index is specified, there still needs to be a fasta. // without fasta, no genome analysis. From 79447ee878568d7df31b118db1cd3136f50be00e Mon Sep 17 00:00:00 2001 From: Lorena Pantano Date: Thu, 29 Aug 2024 10:49:48 -0400 Subject: [PATCH 05/11] add nextflex file --- conf/test_no_genome_nextflex.config | 33 +++++++++++++++++++++++++++++ nextflow.config | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 conf/test_no_genome_nextflex.config diff --git a/conf/test_no_genome_nextflex.config b/conf/test_no_genome_nextflex.config new file mode 100644 index 00000000..ebe5054f --- /dev/null +++ b/conf/test_no_genome_nextflex.config @@ -0,0 +1,33 @@ +/* +======================================================================================== + Nextflow config file for running minimal tests +======================================================================================== + Defines input files and everything required to run a fast and simple pipeline test. + + Use as follows: + nextflow run nf-core/smrnaseq -profile test, + +---------------------------------------------------------------------------------------- +*/ + +params { + config_profile_name = 'Test profile' + config_profile_description = 'Minimal test dataset to check pipeline function' + + // Limit resources so that this can run on GitHub Actions + max_cpus = 2 + max_memory = '6.GB' + max_time = '6.h' + + // Input data + input = 'https://github.com/nf-core/test-datasets/raw/smrnaseq/samplesheet/v2.0/samplesheet_test_nextflex.csv' + mature = 'https://github.com/nf-core/test-datasets/raw/smrnaseq/reference/mature.fa' + hairpin = 'https://github.com/nf-core/test-datasets/raw/smrnaseq/reference/hairpin.fa' + mirna_gtf = 'https://github.com/nf-core/test-datasets/raw/smrnaseq/reference/hsa.gff3' + mirtrace_species = 'hsa' + +} + +// Include nextflex config to run test without additional profiles + +includeConfig 'protocol_nextflex.config' diff --git a/nextflow.config b/nextflow.config index 8597ece8..7d6d51f2 100644 --- a/nextflow.config +++ b/nextflow.config @@ -247,7 +247,7 @@ profiles { test_index { includeConfig 'conf/test_index.config' } test_technical_repeats { includeConfig 'conf/test_technical_repeats.config' } test_mirgenedb { includeConfig 'conf/test_mirgenedb.config' } - + test_no_genome_nextflex { includeConfig 'conf/test_no_genome_nextflex.config' } //Protocol specific profiles From 6c22349c7a09a6959072234f39a73037865556a3 Mon Sep 17 00:00:00 2001 From: Lorena Pantano Date: Thu, 29 Aug 2024 12:14:32 -0400 Subject: [PATCH 06/11] fix step name to match module.config --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index d334735f..ebc80a9e 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -76,7 +76,7 @@ process { // // FASTQ_FASTQC_UMITOOLS_FASTP // - withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTP3' { + withName: '.*:FASTP3' { ext.args = [ "", "--disable_adapter_trimming", "--disable_quality_filtering", From bc228d32fcccc19dd5ae410032949e476778cb06 Mon Sep 17 00:00:00 2001 From: Lorena Pantano Date: Thu, 29 Aug 2024 12:18:49 -0400 Subject: [PATCH 07/11] add changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7bfaa57..3cd87f86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## v2.4.0dev - 2024-XX-XX - X +- [[#365]](https://github.com/nf-core/smrnaseq/issues/365) by [[#386]](https://github.com/nf-core/smrnaseq/pull/386). Fix Nextflex trimming support. - [[#332]](https://github.com/nf-core/smrnaseq/issues/332) by [[#361]](https://github.com/nf-core/smrnaseq/pull/361) - Fix documentation to use only single-end - [[#349]](https://github.com/nf-core/smrnaseq/pull/349) - Fix [MIRTOP_QUANT conda issue](https://github.com/nf-core/smrnaseq/issues/347), change conda-base to conda-forge channel - [[#350]](https://github.com/nf-core/smrnaseq/pull/350) - Fix [MIRTOP_QUANT conda issue](https://github.com/nf-core/smrnaseq/issues/347), set python version to 3.7 to fix pysam issue From ec1001ed77e5363490df7b664c4a746db06cf02e Mon Sep 17 00:00:00 2001 From: zxBIB Schcolnicov Date: Fri, 6 Sep 2024 15:13:02 +0200 Subject: [PATCH 08/11] fastp3 fix --- conf/modules.config | 2 +- conf/test_no_genome_nextflex.config | 3 ++- modules/local/trim3p.nf | 42 ----------------------------- workflows/smrnaseq.nf | 9 ++++--- 4 files changed, 9 insertions(+), 47 deletions(-) delete mode 100644 modules/local/trim3p.nf diff --git a/conf/modules.config b/conf/modules.config index ebc80a9e..8872a0c6 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -49,7 +49,6 @@ process { ext.args = [ "", params.trim_fastq ? "" : "--disable_adapter_trimming", params.clip_r1 > 0 ? "--trim_front1 ${params.clip_r1}" : "", // Remove bp from the 5' end of read 1. - // params.three_prime_clip_r1 > 0 ? "--trim_tail1 ${params.three_prime_clip_r1}" : "", // Remove bp from the 3' end of read 1 AFTER adapter/quality trimming has been performed. params.fastp_min_length > 0 ? "-l ${params.fastp_min_length}" : "", params.fastp_max_length > 0 ? "--max_len1 ${params.fastp_max_length}" : "", params.three_prime_adapter == "auto-detect" ? "" : "--adapter_sequence ${params.three_prime_adapter}" @@ -77,6 +76,7 @@ process { // FASTQ_FASTQC_UMITOOLS_FASTP // withName: '.*:FASTP3' { + ext.prefix = { "${meta.id}.fastp3" } ext.args = [ "", "--disable_adapter_trimming", "--disable_quality_filtering", diff --git a/conf/test_no_genome_nextflex.config b/conf/test_no_genome_nextflex.config index ebe5054f..83318d1b 100644 --- a/conf/test_no_genome_nextflex.config +++ b/conf/test_no_genome_nextflex.config @@ -20,11 +20,12 @@ params { max_time = '6.h' // Input data - input = 'https://github.com/nf-core/test-datasets/raw/smrnaseq/samplesheet/v2.0/samplesheet_test_nextflex.csv' + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/smrnaseq/samplesheet/v2.0/samplesheet_test_nextflex.csv' mature = 'https://github.com/nf-core/test-datasets/raw/smrnaseq/reference/mature.fa' hairpin = 'https://github.com/nf-core/test-datasets/raw/smrnaseq/reference/hairpin.fa' mirna_gtf = 'https://github.com/nf-core/test-datasets/raw/smrnaseq/reference/hsa.gff3' mirtrace_species = 'hsa' + genome = 'GRCh37' } diff --git a/modules/local/trim3p.nf b/modules/local/trim3p.nf deleted file mode 100644 index e208d16c..00000000 --- a/modules/local/trim3p.nf +++ /dev/null @@ -1,42 +0,0 @@ -process FASTP3 { - tag "$meta.id" - label 'process_medium' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/fastp:0.23.4--h5f740d0_0' : - 'biocontainers/fastp:0.23.4--h5f740d0_0' }" - - input: - tuple val(meta), path(reads) - - output: - tuple val(meta), path('*fastp3.fastq.gz') , optional:true, emit: reads - tuple val(meta), path('*.json') , emit: json - tuple val(meta), path('*.html') , emit: html - tuple val(meta), path('*.log') , emit: log - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - - """ - fastp \\ - --in1 ${reads} \\ - --out1 ${prefix}.fastp3.fastq.gz \\ - --thread $task.cpus \\ - --json ${prefix}.fastp3.json \\ - --html ${prefix}.fastp3.html \\ - $args \\ - 2> >(tee ${prefix}.fastp3.log >&2) - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") - END_VERSIONS - """ - } diff --git a/workflows/smrnaseq.nf b/workflows/smrnaseq.nf index 593bc3d5..3e46e87a 100644 --- a/workflows/smrnaseq.nf +++ b/workflows/smrnaseq.nf @@ -7,8 +7,8 @@ include { CAT_FASTQ } from '../modules/nf-core/cat/fastq/ include { CONTAMINANT_FILTER } from '../subworkflows/local/contaminant_filter' include { FASTQC } from '../modules/nf-core/fastqc/main' include { FASTQ_FASTQC_UMITOOLS_FASTP } from '../subworkflows/nf-core/fastq_fastqc_umitools_fastp' -include { FASTP3 } from '../modules/local/trim3p.nf' include { FASTP as FASTP_LENGTH_FILTER } from '../modules/nf-core/fastp' +include { FASTP as FASTP3 } from '../modules/nf-core/fastp' include { GENOME_QUANT } from '../subworkflows/local/genome_quant' include { INDEX_GENOME } from '../modules/local/bowtie_genome' include { MIRNA_QUANT } from '../subworkflows/local/mirna_quant' @@ -114,10 +114,13 @@ workflow NFCORE_SMRNASEQ { // Trim 3' end nucleotides after adapter is removed, otherwise they are not really trimmed if (params.three_prime_clip_r1){ FASTP3( - ch_reads_for_mirna + ch_reads_for_mirna, + [], + false, + false, + false ) ch_reads_for_mirna = FASTP3.out.reads - //trim_json = FASTP3.out.json } // even if bowtie index is specified, there still needs to be a fasta. From 669f7e18328c12117d877f31e014e9d0b6562b36 Mon Sep 17 00:00:00 2001 From: zxBIB Schcolnicov Date: Fri, 6 Sep 2024 16:32:19 +0200 Subject: [PATCH 09/11] Added nftest --- ...e_nextflex.config => test_nextflex.config} | 8 +- nextflow.config | 2 +- tests/test_nextflex.nf.test | 122 +++++++++++++++++ tests/test_nextflex.nf.test.snap | 129 ++++++++++++++++++ 4 files changed, 257 insertions(+), 4 deletions(-) rename conf/{test_no_genome_nextflex.config => test_nextflex.config} (84%) create mode 100644 tests/test_nextflex.nf.test create mode 100644 tests/test_nextflex.nf.test.snap diff --git a/conf/test_no_genome_nextflex.config b/conf/test_nextflex.config similarity index 84% rename from conf/test_no_genome_nextflex.config rename to conf/test_nextflex.config index 83318d1b..6967c933 100644 --- a/conf/test_no_genome_nextflex.config +++ b/conf/test_nextflex.config @@ -5,13 +5,14 @@ Defines input files and everything required to run a fast and simple pipeline test. Use as follows: - nextflow run nf-core/smrnaseq -profile test, + nextflow run nf-core/smrnaseq -profile test_nextflex, ---------------------------------------------------------------------------------------- */ +// This test profile tests nextflex without genome params { - config_profile_name = 'Test profile' + config_profile_name = 'Nextflex Test profile' config_profile_description = 'Minimal test dataset to check pipeline function' // Limit resources so that this can run on GitHub Actions @@ -25,7 +26,8 @@ params { hairpin = 'https://github.com/nf-core/test-datasets/raw/smrnaseq/reference/hairpin.fa' mirna_gtf = 'https://github.com/nf-core/test-datasets/raw/smrnaseq/reference/hsa.gff3' mirtrace_species = 'hsa' - genome = 'GRCh37' + + skip_mirdeep = true } diff --git a/nextflow.config b/nextflow.config index 1f10681b..bcdaa324 100644 --- a/nextflow.config +++ b/nextflow.config @@ -248,7 +248,7 @@ profiles { test_contamination { includeConfig 'conf/test_contamination.config' } test_contamination_tech_reps { includeConfig 'conf/test_contamination_tech_reps.config' } test_skipfastp { includeConfig 'conf/test_skipfastp.config' } - test_no_genome_nextflex { includeConfig 'conf/test_no_genome_nextflex.config' } + test_nextflex { includeConfig 'conf/test_nextflex.config' } //Protocol specific profiles diff --git a/tests/test_nextflex.nf.test b/tests/test_nextflex.nf.test new file mode 100644 index 00000000..c9f0c5e9 --- /dev/null +++ b/tests/test_nextflex.nf.test @@ -0,0 +1,122 @@ + +nextflow_pipeline { + + name "Test Workflow main.nf - test_nextflex" + script "main.nf" + profile "test_nextflex" + tag "test_nextflex" + tag "pipeline" + + test("test_nextflex") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions") }, + { assert workflow.trace.succeeded().size() == 63 }, + + { assert snapshot( + path("$outputDir/mirna_quant/bam/mature/sample2_mature.sorted.idxstats"), + path("$outputDir/mirna_quant/bam/mature/sample1_mature.sorted.flagstat"), + path("$outputDir/mirna_quant/bam/mature/sample2_mature.sorted.stats"), + path("$outputDir/mirna_quant/bam/mature/sample3_mature.sorted.stats"), + path("$outputDir/mirna_quant/bam/mature/sample3_mature.sorted.flagstat"), + path("$outputDir/mirna_quant/bam/mature/sample3_mature.sorted.idxstats"), + path("$outputDir/mirna_quant/bam/mature/sample1_mature.sorted.stats"), + path("$outputDir/mirna_quant/bam/mature/sample2_mature.sorted.flagstat"), + path("$outputDir/mirna_quant/bam/mature/sample1_mature.sorted.idxstats"), + path("$outputDir/mirna_quant/bam/hairpin/sample3_mature_hairpin.sorted.stats"), + path("$outputDir/mirna_quant/bam/hairpin/sample2_mature_hairpin.sorted.flagstat"), + path("$outputDir/mirna_quant/bam/hairpin/sample1_mature_hairpin.sorted.flagstat"), + path("$outputDir/mirna_quant/bam/hairpin/sample1_mature_hairpin.sorted.idxstats"), + path("$outputDir/mirna_quant/bam/hairpin/sample3_mature_hairpin.sorted.flagstat"), + path("$outputDir/mirna_quant/bam/hairpin/sample2_mature_hairpin.sorted.stats"), + path("$outputDir/mirna_quant/bam/hairpin/sample1_mature_hairpin.sorted.stats"), + path("$outputDir/mirna_quant/bam/hairpin/sample3_mature_hairpin.sorted.idxstats"), + path("$outputDir/mirna_quant/bam/hairpin/sample2_mature_hairpin.sorted.idxstats") + ).match("mirna_quant_bam") }, + + { assert snapshot( + path("$outputDir/mirna_quant/edger_qc/hairpin_counts.csv").exists(), + path("$outputDir/mirna_quant/edger_qc/hairpin_edgeR_MDS_plot_coordinates.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/hairpin_edgeR_MDS_distance_matrix.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/hairpin_log2CPM_sample_distances.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/hairpin_logtpm.csv").exists(), + path("$outputDir/mirna_quant/edger_qc/hairpin_logtpm.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/hairpin_normalized_CPM.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_edgeR_MDS_plot_coordinates.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_edgeR_MDS_distance_matrix.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_counts.csv").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_log2CPM_sample_distances.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/hairpin_unmapped_read_counts.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_normalized_CPM.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_logtpm.csv").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_logtpm.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_unmapped_read_counts.txt").exists() + ).match("mirna_quant_edger_qc") }, + + { assert snapshot( + path("$outputDir/mirtrace/mirtrace-report.html").exists(), + path("$outputDir/mirtrace/mirtrace-stats-contamination_basic.tsv"), + path("$outputDir/mirtrace/mirtrace-stats-mirna-complexity.tsv"), + path("$outputDir/mirtrace/mirtrace-stats-phred.tsv"), + path("$outputDir/mirtrace/mirtrace-stats-length.tsv"), + path("$outputDir/mirtrace/mirtrace-stats-contamination_detailed.tsv"), + path("$outputDir/mirtrace/mirtrace-stats-qcstatus.tsv"), + path("$outputDir/mirtrace/mirtrace-stats-rnatype.tsv") + ).match("mirtrace") }, + + { assert snapshot( + path("$outputDir/multiqc/multiqc_data/fastqc-status-check-heatmap.txt"), + path("$outputDir/multiqc/multiqc_data/fastp_filtered_reads_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_overrepresented_sequences_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table-1.txt").exists(), + path("$outputDir/multiqc/multiqc_data/fastqc_sequence_counts_plot-1.txt"), + path("$outputDir/multiqc/multiqc_data/mirtrace_complexity_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot-1_Percentages.txt"), + path("$outputDir/multiqc/multiqc_data/multiqc_citations.txt"), + path("$outputDir/multiqc/multiqc_data/samtools-stats-dp.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_sequence_length_distribution_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_Before_filtering.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot-1.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot-1.txt"), + path("$outputDir/multiqc/multiqc_data/multiqc_general_stats.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_base_n_content_plot-1.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_After_filtering.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt"), + path("$outputDir/multiqc/multiqc_data/mirtrace_qc_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot-1.txt"), + path("$outputDir/multiqc/multiqc_data/mirtrace_length_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt").exists(), + path("$outputDir/multiqc/multiqc_data/fastqc-status-check-heatmap-1.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_sequence_counts_plot.txt"), + path("$outputDir/multiqc/multiqc_data/mirtrace_rna_categories_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_Before_filtering.txt"), + path("$outputDir/multiqc/multiqc_data/samtools_alignment_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_After_filtering.txt"), + path("$outputDir/multiqc/multiqc_data/mirtrace_contamination_check_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_adapter_content_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot-1_Counts.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_adapter_content_plot-1.txt"), + path("$outputDir/multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_Before_filtering.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt"), + path("$outputDir/multiqc/multiqc_data/multiqc_sources.txt").exists(), + path("$outputDir/multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_After_filtering.txt") + ).match("multiqc_multiqc_data") }, + + ) + } + + } + +} diff --git a/tests/test_nextflex.nf.test.snap b/tests/test_nextflex.nf.test.snap new file mode 100644 index 00000000..d5f7b8b4 --- /dev/null +++ b/tests/test_nextflex.nf.test.snap @@ -0,0 +1,129 @@ +{ + "mirtrace": { + "content": [ + true, + "mirtrace-stats-contamination_basic.tsv:md5,2cb713dcb906c5a44ab0587cef5848b5", + "mirtrace-stats-mirna-complexity.tsv:md5,50d36857f67ab0fb72e6717ffb3a7f5a", + "mirtrace-stats-phred.tsv:md5,eeacb4b6341174e87a527138936f60c5", + "mirtrace-stats-length.tsv:md5,7c5caaf25a8e7ce4d322985f3225e0cf", + "mirtrace-stats-contamination_detailed.tsv:md5,90bc8fc20fdb9e6360c347d3a741733a", + "mirtrace-stats-qcstatus.tsv:md5,c41d52e9f464f364297390267a4df426", + "mirtrace-stats-rnatype.tsv:md5,469de7788e4e95e6f89fb1ad9b7b1795" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.0" + }, + "timestamp": "2024-09-06T16:26:35.587317829" + }, + "software_versions": { + "content": [ + "{BOWTIE_MAP_HAIRPIN={bowtie=1.3.1, samtools=1.14}, BOWTIE_MAP_MATURE={bowtie=1.3.1, samtools=1.14}, BOWTIE_MAP_SEQCLUSTER={bowtie=1.3.1, samtools=1.14}, FASTP={fastp=0.23.4}, FASTQC_RAW={fastqc=0.12.1}, FASTQC_TRIM={fastqc=0.12.1}, FORMAT_HAIRPIN={fastx_toolkit=0.0.14}, FORMAT_MATURE={fastx_toolkit=0.0.14}, INDEX_HAIRPIN={bowtie=1.3.1}, INDEX_MATURE={bowtie=1.3.1}, MIRTRACE_RUN={mirtrace=1.0.1}, PARSE_HAIRPIN={seqkit=2.6.1}, PARSE_MATURE={seqkit=2.6.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SEQCLUSTER_SEQUENCES={seqcluster=1.2.9}, Workflow={nf-core/smrnaseq=v2.3.2dev}}" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.0" + }, + "timestamp": "2024-09-06T16:26:35.441216239" + }, + "mirna_quant_bam": { + "content": [ + "sample2_mature.sorted.idxstats:md5,9688f02beeebf9a590dc81e49415ede9", + "sample1_mature.sorted.flagstat:md5,7d61ae305e545c7a66ef8d23a0c8be25", + "sample2_mature.sorted.stats:md5,897f3efa4ecf2757ecc489cd3860cb39", + "sample3_mature.sorted.stats:md5,f35902ad2475738e48bc7b472477ec64", + "sample3_mature.sorted.flagstat:md5,1aae00444143bce06cb0f8cf31deb8e4", + "sample3_mature.sorted.idxstats:md5,9688f02beeebf9a590dc81e49415ede9", + "sample1_mature.sorted.stats:md5,743586b54608b68ada3235f6473bc357", + "sample2_mature.sorted.flagstat:md5,1aae00444143bce06cb0f8cf31deb8e4", + "sample1_mature.sorted.idxstats:md5,6db0cfab41307285fe5c89dfe95b5d46", + "sample3_mature_hairpin.sorted.stats:md5,06eeda9757f859140ed63d94a074b376", + "sample2_mature_hairpin.sorted.flagstat:md5,4e201dd868164d0c53142888dd6ca238", + "sample1_mature_hairpin.sorted.flagstat:md5,7ed3ab444077ddf6c334845e9c4ce75e", + "sample1_mature_hairpin.sorted.idxstats:md5,7b7d142caee6cccbb6d83c8e6568a951", + "sample3_mature_hairpin.sorted.flagstat:md5,4e201dd868164d0c53142888dd6ca238", + "sample2_mature_hairpin.sorted.stats:md5,ecd5b0dc54a14dca7dcc66abfc6d3845", + "sample1_mature_hairpin.sorted.stats:md5,b5e867c324113e8ab805c27a5d4ef89a", + "sample3_mature_hairpin.sorted.idxstats:md5,8927231d0ea3100fb75a96b4e5317321", + "sample2_mature_hairpin.sorted.idxstats:md5,8927231d0ea3100fb75a96b4e5317321" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.0" + }, + "timestamp": "2024-09-06T16:26:35.460795492" + }, + "mirna_quant_edger_qc": { + "content": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.0" + }, + "timestamp": "2024-09-06T16:26:35.55181047" + }, + "multiqc_multiqc_data": { + "content": [ + "fastqc-status-check-heatmap.txt:md5,949e6825a7ecc751aa9ba515de7dbd02", + "fastp_filtered_reads_plot.txt:md5,7d99da33e244ce77191b8bfeaec8180c", + "fastqc_overrepresented_sequences_plot.txt:md5,11b85c61ea97ca62a9e7c34fae9e575c", + true, + "fastqc_sequence_counts_plot-1.txt:md5,926304f6c18b8151a56692bb69db97e7", + "mirtrace_complexity_plot.txt:md5,b88b1ec0d2d0ee2f443b968c107dc45a", + "fastqc_per_sequence_gc_content_plot-1_Percentages.txt:md5,3f7fd27d4553da6a88f4f15dd4b6413b", + "multiqc_citations.txt:md5,c2900ba941a5e78a3f42ef6a1033ace7", + "samtools-stats-dp.txt:md5,1fa31e11ef6c82185d5c9dc2f40d61b2", + "fastqc_sequence_length_distribution_plot.txt:md5,130a5569ba830f7e7abb971d1c8da537", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt:md5,bd72bc8bfc907c6aab72f315917ab280", + "fastqc_sequence_duplication_levels_plot-1.txt:md5,a53f959bf59ad69d3bcbc53e8fe609b3", + "fastqc_per_base_sequence_quality_plot-1.txt:md5,2f85a658bcb8261328449f1642688086", + "multiqc_general_stats.txt:md5,3733aa0acfe0151765da7e3c7834c7a8", + "fastqc_per_base_n_content_plot-1.txt:md5,e3b4bb3ed98e87f2d8acb0c009485ecd", + "fastqc_per_base_n_content_plot.txt:md5,48710007bb055bae6f35f2fa8ea8f42b", + "fastp-seq-quality-plot_Read_1_After_filtering.txt:md5,2956382a3f2e855a4dce8e8246a57add", + "fastqc_per_sequence_quality_scores_plot.txt:md5,d2339b94d6c56616b6975086bf1e23c8", + "mirtrace_qc_plot.txt:md5,4f3f1e0a2b6e5dd5f9e0a7a7aea0e529", + "fastqc_per_sequence_quality_scores_plot-1.txt:md5,28ed13d328e755aa06a0f13f87c336eb", + "mirtrace_length_plot.txt:md5,f915d98a47a66ea9602ff0758a5e462f", + true, + "fastqc-status-check-heatmap-1.txt:md5,66af5433ebb61bc68905f8219d7419ab", + "fastqc_sequence_counts_plot.txt:md5,3bfb0974e5395d2d0044586c3e4547d1", + "mirtrace_rna_categories_plot.txt:md5,e39093f9a152845b6f4f44a239d9652d", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt:md5,e5ea2bfd87e957a18fae5239137d6499", + "samtools_alignment_plot.txt:md5,73b963380d0fc2ae145c3cd39e26824a", + "fastqc_per_base_sequence_quality_plot.txt:md5,1208509fcaff06edcddc377c907dfdaf", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt:md5,dd53a16aebc689109fc8065d08d8a6c7", + "mirtrace_contamination_check_plot.txt:md5,88cfa15add5e8a561761ee70d8a0da12", + "fastqc_adapter_content_plot.txt:md5,8aa2cbcf256bbb89c4a1d1fd18019c9b", + "fastqc_sequence_duplication_levels_plot.txt:md5,97a930f423f2cd365c2262b0a185f68a", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,5857a8a1980816cf70b34b7b318e1482", + "fastqc_per_sequence_gc_content_plot-1_Counts.txt:md5,d3ecffd88ebbdac463e297a2b98c8b3d", + "fastqc_adapter_content_plot-1.txt:md5,245d96a402988141cbe68b60a42db535", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt:md5,9033ad6887da19d96fb9e2504d8de0a5", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,fbe1f23a76ed70b2568d553fc42adef2", + true, + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt:md5,ed44d5035150f69bdeb7855c80271c21" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.0" + }, + "timestamp": "2024-09-06T16:26:35.632599778" + } +} \ No newline at end of file From 046757e19c29da65f23d3576c494ec68501a2eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Schcolnicov?= <90359308+nschcolnicov@users.noreply.github.com> Date: Fri, 6 Sep 2024 17:42:34 -0300 Subject: [PATCH 10/11] Update main.nf --- subworkflows/local/prepare_genome/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index 81943f7f..086c860e 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -34,7 +34,7 @@ workflow PREPARE_GENOME { ch_mirtrace_species = val_mirtrace_species ? Channel.value(val_mirtrace_species) : Channel.empty() mirna_gtf_from_species = val_mirtrace_species ? (val_mirtrace_species == 'hsa' ? "https://github.com/nf-core/test-datasets/raw/smrnaseq/miRBase/hsa.gff3" : "https://mirbase.org/download/CURRENT/genomes/${val_mirtrace_species}.gff3") : false - ch_mirna_gtf = val_mirna_gtf ? Channel.empty() : ( mirna_gtf_from_species ? Channel.fromPath(mirna_gtf_from_species, checkIfExists: true).collect() : Channel.empty() ) //TODO for ch_mirna_gtf, shouldn't it try to build a channel.fromPath with params.mirna_gtf, if true? (instead of setting it to empty). Is this parameter used for non mirgenedb runs? + ch_mirna_gtf = val_mirna_gtf ? Channel.fromPath(val_mirna_gtf, checkIfExists: true) : ( mirna_gtf_from_species ? Channel.fromPath(mirna_gtf_from_species, checkIfExists: true).collect() : Channel.empty() ) ch_mirna_adapters = params.with_umi ? [] : Channel.fromPath(val_fastp_known_mirna_adapters, checkIfExists: true).collect() ch_rrna = val_rrna ? Channel.fromPath(val_rrna) : Channel.empty() From 7a15447ce885e4ac91274a9966508d61aef742b5 Mon Sep 17 00:00:00 2001 From: atrigila <18577080+atrigila@users.noreply.github.com> Date: Fri, 6 Sep 2024 21:17:48 +0000 Subject: [PATCH 11/11] update ci tests nextflex --- tests/test_nextflex.nf.test | 2 +- tests/test_nextflex.nf.test.snap | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/test_nextflex.nf.test b/tests/test_nextflex.nf.test index c9f0c5e9..5d8a1371 100644 --- a/tests/test_nextflex.nf.test +++ b/tests/test_nextflex.nf.test @@ -19,7 +19,7 @@ nextflow_pipeline { assertAll( { assert workflow.success }, { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions") }, - { assert workflow.trace.succeeded().size() == 63 }, + { assert workflow.trace.succeeded().size() == 65 }, { assert snapshot( path("$outputDir/mirna_quant/bam/mature/sample2_mature.sorted.idxstats"), diff --git a/tests/test_nextflex.nf.test.snap b/tests/test_nextflex.nf.test.snap index d5f7b8b4..30262a2b 100644 --- a/tests/test_nextflex.nf.test.snap +++ b/tests/test_nextflex.nf.test.snap @@ -18,13 +18,13 @@ }, "software_versions": { "content": [ - "{BOWTIE_MAP_HAIRPIN={bowtie=1.3.1, samtools=1.14}, BOWTIE_MAP_MATURE={bowtie=1.3.1, samtools=1.14}, BOWTIE_MAP_SEQCLUSTER={bowtie=1.3.1, samtools=1.14}, FASTP={fastp=0.23.4}, FASTQC_RAW={fastqc=0.12.1}, FASTQC_TRIM={fastqc=0.12.1}, FORMAT_HAIRPIN={fastx_toolkit=0.0.14}, FORMAT_MATURE={fastx_toolkit=0.0.14}, INDEX_HAIRPIN={bowtie=1.3.1}, INDEX_MATURE={bowtie=1.3.1}, MIRTRACE_RUN={mirtrace=1.0.1}, PARSE_HAIRPIN={seqkit=2.6.1}, PARSE_MATURE={seqkit=2.6.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SEQCLUSTER_SEQUENCES={seqcluster=1.2.9}, Workflow={nf-core/smrnaseq=v2.3.2dev}}" + "{BOWTIE_MAP_HAIRPIN={bowtie=1.3.1, samtools=1.14}, BOWTIE_MAP_MATURE={bowtie=1.3.1, samtools=1.14}, BOWTIE_MAP_SEQCLUSTER={bowtie=1.3.1, samtools=1.14}, FASTP={fastp=0.23.4}, FASTQC_RAW={fastqc=0.12.1}, FASTQC_TRIM={fastqc=0.12.1}, FORMAT_HAIRPIN={fastx_toolkit=0.0.14}, FORMAT_MATURE={fastx_toolkit=0.0.14}, INDEX_HAIRPIN={bowtie=1.3.1}, INDEX_MATURE={bowtie=1.3.1}, MIRTOP_QUANT={mirtop=0.4.25}, MIRTRACE_RUN={mirtrace=1.0.1}, PARSE_HAIRPIN={seqkit=2.6.1}, PARSE_MATURE={seqkit=2.6.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SEQCLUSTER_SEQUENCES={seqcluster=1.2.9}, TABLE_MERGE={r-base=3.6.2}, Workflow={nf-core/smrnaseq=v2.3.2dev}}" ], "meta": { - "nf-test": "0.9.0", - "nextflow": "23.10.0" + "nf-test": "0.8.4", + "nextflow": "24.04.4" }, - "timestamp": "2024-09-06T16:26:35.441216239" + "timestamp": "2024-09-06T21:13:17.662742597" }, "mirna_quant_bam": { "content": [ @@ -87,13 +87,13 @@ "fastqc_sequence_counts_plot-1.txt:md5,926304f6c18b8151a56692bb69db97e7", "mirtrace_complexity_plot.txt:md5,b88b1ec0d2d0ee2f443b968c107dc45a", "fastqc_per_sequence_gc_content_plot-1_Percentages.txt:md5,3f7fd27d4553da6a88f4f15dd4b6413b", - "multiqc_citations.txt:md5,c2900ba941a5e78a3f42ef6a1033ace7", + "multiqc_citations.txt:md5,3adbccd17a42d0d5d97ee7ebb476f433", "samtools-stats-dp.txt:md5,1fa31e11ef6c82185d5c9dc2f40d61b2", "fastqc_sequence_length_distribution_plot.txt:md5,130a5569ba830f7e7abb971d1c8da537", "fastp-seq-content-n-plot_Read_1_Before_filtering.txt:md5,bd72bc8bfc907c6aab72f315917ab280", "fastqc_sequence_duplication_levels_plot-1.txt:md5,a53f959bf59ad69d3bcbc53e8fe609b3", "fastqc_per_base_sequence_quality_plot-1.txt:md5,2f85a658bcb8261328449f1642688086", - "multiqc_general_stats.txt:md5,3733aa0acfe0151765da7e3c7834c7a8", + "multiqc_general_stats.txt:md5,a1b6656beb208450e6b619514545f42e", "fastqc_per_base_n_content_plot-1.txt:md5,e3b4bb3ed98e87f2d8acb0c009485ecd", "fastqc_per_base_n_content_plot.txt:md5,48710007bb055bae6f35f2fa8ea8f42b", "fastp-seq-quality-plot_Read_1_After_filtering.txt:md5,2956382a3f2e855a4dce8e8246a57add", @@ -121,9 +121,9 @@ "fastp-seq-content-gc-plot_Read_1_After_filtering.txt:md5,ed44d5035150f69bdeb7855c80271c21" ], "meta": { - "nf-test": "0.9.0", - "nextflow": "23.10.0" + "nf-test": "0.8.4", + "nextflow": "24.04.4" }, - "timestamp": "2024-09-06T16:26:35.632599778" + "timestamp": "2024-09-06T21:13:17.86597983" } } \ No newline at end of file