diff --git a/README.md b/README.md index 1c40a4b..91399f7 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,7 @@ The pipeline takes a list of genomes and annotations (from raw files or Refseq IDs), and runs commonly used tools to assess their quality. -There will be three different ways you can run this pipeline. 1. Genome only, 2. Annotation only, or 3. Genome and Annotation. -**Only Genome plus Annotation is functional** +There are three different ways you can run this pipeline. 1. Genome only, 2. Annotation only, or 3. Genome and Annotation. **Only Genome plus Annotation is functional** ## Contributions and Support diff --git a/assets/samplesheet.csv b/assets/samplesheet.csv index 792086b..6f87d2e 100644 --- a/assets/samplesheet.csv +++ b/assets/samplesheet.csv @@ -1,5 +1,5 @@ -species,refseq,fasta,gff -Vespula_vulgaris,GCF_905475345.1,, -Vespa_velutina,GCF_912470025.1,, -Apis_mellifera,GCF_003254395.2,, -Osmia_bicornis,GCF_907164935.1,, +species,refseq,fasta,gff,fastq +Vespula_vulgaris,GCF_905475345.1,,, +Vespa_velutina,GCF_912470025.1,,, +Apis_mellifera,GCF_003254395.2,,, +Osmia_bicornis,GCF_907164935.1,,, diff --git a/assets/schema_input.json b/assets/schema_input.json index 47bc99b..e10c0ec 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -14,17 +14,22 @@ }, "refseq": { "type": "string", - "errorMessage": "FastQ file for reads 1 must be provided, cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'" + "errorMessage": "RefSeq accession number" }, "fasta": { "type": "string", "format": "file-path", - "errorMessage": "FastQ file for reads 1 must be provided, cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'" + "errorMessage": "FASTA file with genome assembly" }, "gff": { "type": "string", "format": "file-path", - "errorMessage": "FastQ file for reads 2 cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'" + "errorMessage": "GFF file with genome annotation" + }, + "fastq": { + "type": "string", + "format": "file-path", + "errorMessage": "Single compressed FASTQ file, must have extension '.fq.gz' or '.fastq.gz'" } }, "required": ["species"] diff --git a/bin/busco_2_table.py b/bin/busco_2_table.py old mode 100644 new mode 100755 index 6b9f811..56901b3 --- a/bin/busco_2_table.py +++ b/bin/busco_2_table.py @@ -1,3 +1,4 @@ +#!/usr/bin/python3 import pandas as pd import argparse diff --git a/bin/plot_tree_summary.R b/bin/plot_tree_summary.R index 44de8a6..2839009 100755 --- a/bin/plot_tree_summary.R +++ b/bin/plot_tree_summary.R @@ -1,3 +1,4 @@ +#!/usr/bin/Rscript # Load necessary libraries if (!requireNamespace("argparse", quietly = TRUE)) { install.packages("argparse") diff --git a/bin/plot_tree_summary2.R b/bin/plot_tree_summary2.R index 2142c8b..d048b4d 100755 --- a/bin/plot_tree_summary2.R +++ b/bin/plot_tree_summary2.R @@ -1,3 +1,4 @@ +#!/usr/bin/Rscript # Load necessary libraries if (!requireNamespace("argparse", quietly = TRUE)) { install.packages("argparse") diff --git a/bin/quast_2_table.py b/bin/quast_2_table.py old mode 100644 new mode 100755 index 135adef..4e6199b --- a/bin/quast_2_table.py +++ b/bin/quast_2_table.py @@ -1,3 +1,4 @@ +#!/usr/bin/python3 import pandas as pd import argparse import os diff --git a/conf/modules.config b/conf/modules.config index 971fa5b..fed48f5 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -56,6 +56,28 @@ process { ] } + withName: 'MERQURY_MERQURY' { + publishDir = [ + path: { "${params.outdir}/merqury" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + withName: 'MERYL_COUNT' { + publishDir = [ + path: { "${params.outdir}/meryl_count" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + withName: 'MERYL_UNIONSUM' { + publishDir = [ + path: { "${params.outdir}/meryl_unionsum" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + withName: 'SORT_BY_LENGTH' { ext.prefix = { "${meta.id}_sorted" } } @@ -73,4 +95,11 @@ process { ] } + withName: 'LONGEST' { + publishDir = [ + path: { "$params.outdir/output_data/longest" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } } diff --git a/conf/test.config b/conf/test.config index 31c601f..6f23ad7 100644 --- a/conf/test.config +++ b/conf/test.config @@ -24,4 +24,7 @@ params { // TODO nf-core: Give any required params for the test so that command line flags are not needed input = params.pipelines_testdata_base_path + 'genomeqc/samplesheet/input_bacteria.csv' + // Run meryl+merqury + merqury_skip = false + } diff --git a/conf/test_full.config b/conf/test_full.config index 3d290d6..3cd63b0 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -12,7 +12,7 @@ params { config_profile_name = 'Full test profile' - config_profile_description = 'Full test dataset of hymenpotera genomes' + config_profile_description = 'Full test dataset of Hymenoptera genomes' input = 'assets/samplesheet.csv' diff --git a/conf/test_nofastq.config b/conf/test_nofastq.config new file mode 100644 index 0000000..4c2e289 --- /dev/null +++ b/conf/test_nofastq.config @@ -0,0 +1,30 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 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 ecoflow/genomeqc -profile test, --outdir + +---------------------------------------------------------------------------------------- +*/ + +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 + // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets + // TODO nf-core: Give any required params for the test so that command line flags are not needed + input = params.pipelines_testdata_base_path + 'genomeqc/samplesheet/input_bacteria_nofastq.csv' + + // Don't try to skip merqury, but since you don't have reads, it shouldn't get run anyway + merqury_skip = false + +} diff --git a/modules.json b/modules.json index 72b5d07..e45adfb 100644 --- a/modules.json +++ b/modules.json @@ -30,6 +30,21 @@ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, + "merqury/merqury": { + "branch": "master", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "installed_by": ["modules"] + }, + "meryl/count": { + "branch": "master", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "installed_by": ["modules"] + }, + "meryl/unionsum": { + "branch": "master", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "installed_by": ["modules"] + }, "multiqc": { "branch": "master", "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a", diff --git a/modules/local/gffread.nf b/modules/local/gffread.nf index 5f6f1a2..df79b81 100644 --- a/modules/local/gffread.nf +++ b/modules/local/gffread.nf @@ -63,9 +63,9 @@ process GFFREAD { fi - ${projectDir}/bin/gff_to_genetranshash.2.pl - ${projectDir}/bin/prot_fasta_to_longest.pl ${prefix}.prot.fa ${prefix}_longestisoform.txt - ${projectDir}/bin/fasta_topIsoform.pl ${prefix}.splicedcds.fa ${prefix}_longestisoform.txt + gff_to_genetranshash.2.pl + prot_fasta_to_longest.pl ${prefix}.prot.fa ${prefix}_longestisoform.txt + fasta_topIsoform.pl ${prefix}.splicedcds.fa ${prefix}_longestisoform.txt #This part checks if longest isoform worked, if not we will continue with all proteins into Orthofinder. Warning sent to screen. diff --git a/modules/local/longest.nf b/modules/local/longest.nf index cc16589..1636112 100644 --- a/modules/local/longest.nf +++ b/modules/local/longest.nf @@ -4,7 +4,6 @@ process LONGEST { label 'process_med_memory' container = 'biocontainers/agat:1.3.0--pl5321hdfd78af_0' - publishDir "$params.outdir/output_data/longest" , mode: "${params.publish_dir_mode}", pattern:"*.txt" input: tuple val (meta), path(gff) diff --git a/modules/local/tree_summary.nf b/modules/local/tree_summary.nf index c7bde84..eca2247 100644 --- a/modules/local/tree_summary.nf +++ b/modules/local/tree_summary.nf @@ -27,18 +27,18 @@ process TREE_SUMMARY { cut -f 1,3,4,5,6,7 Busco_combined >> Busco_combined_cut sed -i \'s/\\.fasta//g\' Busco_combined_cut - python3 ${projectDir}/bin/busco_2_table.py Busco_combined_cut Busco_to_plot.tsv + busco_2_table.py Busco_combined_cut Busco_to_plot.tsv # Combine QUAST ouput - python3 ${projectDir}/bin/quast_2_table.py *quast.tsv -o Quast_to_plot.tsv -col N50,N90 -plot_types bar,bar + quast_2_table.py *quast.tsv -o Quast_to_plot.tsv -col N50,N90 -plot_types bar,bar #Remove unwanted extensions from Busco tables sed \'s/.prot.fa.largestIsoform.fa//g\' Busco_to_plot.tsv > Busco_to_plot_final.tsv sed \'s/.prot.fa.largestIsoform.fa//g\' Quast_to_plot.tsv > Quast_to_plot_final.tsv # Run summary plot - /usr/bin/Rscript ${projectDir}/bin/plot_tree_summary2.R tree.nw Busco_to_plot_final.tsv --tree_size 0.6 - /usr/bin/Rscript ${projectDir}/bin/plot_tree_summary.R tree.nw Quast_to_plot_final.tsv --tree_size 0.6 + plot_tree_summary2.R tree.nw Busco_to_plot_final.tsv --tree_size 0.6 + plot_tree_summary.R tree.nw Quast_to_plot_final.tsv --tree_size 0.6 cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/merqury/merqury/environment.yml b/modules/nf-core/merqury/merqury/environment.yml new file mode 100644 index 0000000..a62b4b9 --- /dev/null +++ b/modules/nf-core/merqury/merqury/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::merqury=1.3 diff --git a/modules/nf-core/merqury/merqury/main.nf b/modules/nf-core/merqury/merqury/main.nf new file mode 100644 index 0000000..ca8795a --- /dev/null +++ b/modules/nf-core/merqury/merqury/main.nf @@ -0,0 +1,87 @@ +process MERQURY_MERQURY { + tag "$meta.id" + label 'process_low' + + // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/merqury:1.3--hdfd78af_1': + 'biocontainers/merqury:1.3--hdfd78af_1' }" + + input: + tuple val(meta), path(meryl_db), path(assembly) + + output: + tuple val(meta), path("*_only.bed") , emit: assembly_only_kmers_bed + tuple val(meta), path("*_only.wig") , emit: assembly_only_kmers_wig + tuple val(meta), path("*.completeness.stats"), emit: stats + tuple val(meta), path("*.dist_only.hist") , emit: dist_hist + tuple val(meta), path("*.spectra-cn.fl.png") , emit: spectra_cn_fl_png + tuple val(meta), path("*.spectra-cn.hist") , emit: spectra_cn_hist + tuple val(meta), path("*.spectra-cn.ln.png") , emit: spectra_cn_ln_png + tuple val(meta), path("*.spectra-cn.st.png") , emit: spectra_cn_st_png + tuple val(meta), path("*.spectra-asm.fl.png"), emit: spectra_asm_fl_png + tuple val(meta), path("*.spectra-asm.hist") , emit: spectra_asm_hist + tuple val(meta), path("*.spectra-asm.ln.png"), emit: spectra_asm_ln_png + tuple val(meta), path("*.spectra-asm.st.png"), emit: spectra_asm_st_png + tuple val(meta), path("${prefix}.qv") , emit: assembly_qv + tuple val(meta), path("${prefix}.*.qv") , emit: scaffold_qv + tuple val(meta), path("*.hist.ploidy") , emit: read_ploidy + tuple val(meta), path("*.hapmers.blob.png") , emit: hapmers_blob_png , optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + // def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = 1.3 // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + # Nextflow changes the container --entrypoint to /bin/bash (container default entrypoint: /usr/local/env-execute) + # Check for container variable initialisation script and source it. + if [ -f "/usr/local/env-activate.sh" ]; then + set +u # Otherwise, errors out because of various unbound variables + . "/usr/local/env-activate.sh" + set -u + fi + # limit meryl to use the assigned number of cores. + export OMP_NUM_THREADS=$task.cpus + + merqury.sh \\ + $meryl_db \\ + $assembly \\ + $prefix + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + merqury: $VERSION + END_VERSIONS + """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = 1.3 // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + touch ${prefix}_only.bed + touch ${prefix}_only.wig + touch ${prefix}.completeness.stats + touch ${prefix}.dist_only.hist + touch ${prefix}.spectra-cn.fl.png + touch ${prefix}.spectra-cn.hist + touch ${prefix}.spectra-cn.ln.png + touch ${prefix}.spectra-cn.st.png + touch ${prefix}.spectra-asm.fl.png + touch ${prefix}.spectra-asm.hist + touch ${prefix}.spectra-asm.ln.png + touch ${prefix}.spectra-asm.st.png + touch ${prefix}.qv + touch ${prefix}.${prefix}.qv + touch ${prefix}.hist.ploidy + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + merqury: $VERSION + END_VERSIONS + """ +} diff --git a/modules/nf-core/merqury/merqury/meta.yml b/modules/nf-core/merqury/merqury/meta.yml new file mode 100644 index 0000000..7e8d875 --- /dev/null +++ b/modules/nf-core/merqury/merqury/meta.yml @@ -0,0 +1,198 @@ +name: "merqury_merqury" +description: k-mer based assembly evaluation. +keywords: + - "k-mer" + - "assembly" + - "evaluation" +tools: + - "merqury": + description: "Evaluate genome assemblies with k-mers and more." + tool_dev_url: "https://github.com/marbl/merqury" + doi: "10.1186/s13059-020-02134-9" + licence: ["PUBLIC DOMAIN"] + identifier: biotools:merqury +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - meryl_db: + type: file + description: "Meryl read database" + - assembly: + type: file + description: FASTA assembly file +output: + - assembly_only_kmers_bed: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_only.bed": + type: file + description: "The positions of the k-mers found only in an assembly for further + investigation in .bed" + pattern: "*_only.bed" + - assembly_only_kmers_wig: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_only.wig": + type: file + description: "The positions of the k-mers found only in an assembly for further + investigation in .wig" + pattern: "*_only.wig" + - stats: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.completeness.stats": + type: file + description: Assembly statistics file + pattern: "*.completeness.stats" + - dist_hist: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.dist_only.hist": + type: file + description: Histogram + pattern: "*.dist_only.hist" + - spectra_cn_fl_png: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.spectra-cn.fl.png": + type: file + description: "Unstacked copy number spectra filled plot in PNG format" + pattern: "*.spectra-cn.fl.png" + - spectra_cn_hist: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.spectra-cn.hist": + type: file + description: "Copy number spectra histogram" + pattern: "*.spectra-cn.hist" + - spectra_cn_ln_png: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.spectra-cn.ln.png": + type: file + description: "Unstacked copy number spectra line plot in PNG format" + pattern: "*.spectra-cn.ln.png" + - spectra_cn_st_png: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.spectra-cn.st.png": + type: file + description: "Stacked copy number spectra line plot in PNG format" + pattern: "*.spectra-cn.st.png" + - spectra_asm_fl_png: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.spectra-asm.fl.png": + type: file + description: "Unstacked assembly spectra filled plot in PNG format" + pattern: "*.spectra-asm.fl.png" + - spectra_asm_hist: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.spectra-asm.hist": + type: file + description: "Assembly spectra histogram" + pattern: "*.spectra-asm.hist" + - spectra_asm_ln_png: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.spectra-asm.ln.png": + type: file + description: "Unstacked assembly spectra line plot in PNG format" + pattern: "*.spectra-asm.ln.png" + - spectra_asm_st_png: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.spectra-asm.st.png": + type: file + description: "Stacked assembly spectra line plot in PNG format" + pattern: "*.spectra-asm.st.png" + - assembly_qv: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.qv: + type: file + description: "Assembly consensus quality estimation" + pattern: "*.qv" + - scaffold_qv: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.*.qv: + type: file + description: "Scaffold consensus quality estimation" + pattern: "*.qv" + - read_ploidy: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.hist.ploidy": + type: file + description: "Ploidy estimate from read k-mer database" + pattern: "*.hist.ploidy" + - hapmers_blob_png: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.hapmers.blob.png": + type: file + description: "Hap-mer blob plot" + pattern: "*.hapmers.blob.png" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@mahesh-panchal" +maintainers: + - "@mahesh-panchal" + - "@gallvp" diff --git a/modules/nf-core/merqury/merqury/tests/main.nf.test b/modules/nf-core/merqury/merqury/tests/main.nf.test new file mode 100644 index 0000000..46a07c0 --- /dev/null +++ b/modules/nf-core/merqury/merqury/tests/main.nf.test @@ -0,0 +1,189 @@ +nextflow_process { + + name "Test Process MERQURY_MERQURY" + script "../main.nf" + process "MERQURY_MERQURY" + + tag "modules" + tag "modules_nfcore" + tag "merqury" + tag "merqury/merqury" + tag "meryl/count" + tag "meryl/unionsum" + + setup { + run("MERYL_COUNT") { + script "../../../meryl/count" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = 21 + """ + } + } + + run("MERYL_UNIONSUM") { + script "../../../meryl/unionsum" + process { + """ + input[0] = MERYL_COUNT.out.meryl_db + input[1] = 21 + """ + } + } + } + + test("homo_sapiens-genome") { + + when { + process { + """ + assembly = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[0] = MERYL_UNIONSUM.out.meryl_db.join( Channel.value( assembly ) ) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.assembly_only_kmers_bed, + process.out.assembly_only_kmers_wig, + process.out.stats, + process.out.dist_hist, + process.out.spectra_cn_hist, + process.out.spectra_asm_hist, + process.out.assembly_qv, + process.out.scaffold_qv, + process.out.read_ploidy, + process.out.versions, + file(process.out.spectra_cn_fl_png[0][1]).name, + file(process.out.spectra_cn_ln_png[0][1]).name, + file(process.out.spectra_cn_st_png[0][1]).name, + file(process.out.spectra_asm_fl_png[0][1]).name, + file(process.out.spectra_asm_ln_png[0][1]).name, + file(process.out.spectra_asm_st_png[0][1]).name + ).match() + }, + { assert process.out.hapmers_blob_png == [] } + ) + } + + } + + test("homo_sapiens-genome-trio") { + + setup { + run("MERYL_COUNT", alias: "MATERNAL_COUNT") { + script "../../../meryl/count" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test2_1.fastq.gz', checkIfExists: true) + ] + ] + input[1] = 21 + """ + } + } + + run("MERYL_COUNT", alias: "PATERNAL_COUNT") { + script "../../../meryl/count" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = 21 + """ + } + } + } + + when { + process { + """ + ch_assembly = Channel.value([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + + ch_input = MERYL_UNIONSUM.out.meryl_db + | join( MATERNAL_COUNT.out.meryl_db ) + | join( PATERNAL_COUNT.out.meryl_db ) + | join( ch_assembly ) + | map { meta, meryl, mat_meryl, pat_meryl, fasta -> [ meta, [ meryl, mat_meryl, pat_meryl ], fasta ] } + input[0] = ch_input + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.assembly_only_kmers_bed, + process.out.assembly_only_kmers_wig, + process.out.stats, + process.out.dist_hist, + process.out.spectra_cn_hist, + process.out.spectra_asm_hist, + process.out.assembly_qv, + process.out.scaffold_qv, + process.out.read_ploidy, + process.out.versions, + process.out.spectra_cn_fl_png[0][1] .collect { file(it).name }.join(','), + process.out.spectra_cn_ln_png[0][1] .collect { file(it).name }.join(','), + process.out.spectra_cn_st_png[0][1] .collect { file(it).name }.join(','), + file(process.out.spectra_asm_fl_png[0][1]).name, + file(process.out.spectra_asm_ln_png[0][1]).name, + file(process.out.spectra_asm_st_png[0][1]).name, + file(process.out.hapmers_blob_png[0][1]).name, + ).match() + } + ) + } + + } + + test("homo_sapiens-genome-stub") { + + options '-stub' + + when { + process { + """ + assembly = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[0] = MERYL_UNIONSUM.out.meryl_db.join( Channel.value( assembly ) ) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/nf-core/merqury/merqury/tests/main.nf.test.snap b/modules/nf-core/merqury/merqury/tests/main.nf.test.snap new file mode 100644 index 0000000..d96fa7e --- /dev/null +++ b/modules/nf-core/merqury/merqury/tests/main.nf.test.snap @@ -0,0 +1,494 @@ +{ + "homo_sapiens-genome-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_only.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_only.wig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-asm.ln.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-asm.st.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.qv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + [ + { + "id": "test", + "single_end": false + }, + "test.test.qv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "14": [ + [ + { + "id": "test", + "single_end": false + }, + "test.hist.ploidy:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "15": [ + + ], + "16": [ + "versions.yml:md5,825a4c61369638389227eee16dfb08b5" + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.completeness.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.dist_only.hist:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-cn.fl.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-cn.hist:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-cn.ln.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-cn.st.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-asm.fl.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-asm.hist:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "assembly_only_kmers_bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test_only.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "assembly_only_kmers_wig": [ + [ + { + "id": "test", + "single_end": false + }, + "test_only.wig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "assembly_qv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.qv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "dist_hist": [ + [ + { + "id": "test", + "single_end": false + }, + "test.dist_only.hist:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "hapmers_blob_png": [ + + ], + "read_ploidy": [ + [ + { + "id": "test", + "single_end": false + }, + "test.hist.ploidy:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "scaffold_qv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.test.qv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "spectra_asm_fl_png": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-asm.fl.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "spectra_asm_hist": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-asm.hist:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "spectra_asm_ln_png": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-asm.ln.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "spectra_asm_st_png": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-asm.st.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "spectra_cn_fl_png": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-cn.fl.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "spectra_cn_hist": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-cn.hist:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "spectra_cn_ln_png": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-cn.ln.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "spectra_cn_st_png": [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-cn.st.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.completeness.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,825a4c61369638389227eee16dfb08b5" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-22T21:00:35.907142" + }, + "homo_sapiens-genome": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "genome_only.bed:md5,b611f22cde0e410a2ca07c1eefd042d3" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "genome_only.wig:md5,19cf44989af72af597ef80d3489b4882" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.completeness.stats:md5,d923bf7c98342625d022b2c32be8dd3a" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.dist_only.hist:md5,e2e6b54b0febef1f0fcf24cd2afd0b7a" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.genome.spectra-cn.hist:md5,6140a138ba47cb2b97814c93f80b2575" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-asm.hist:md5,541c9d1f87ab5c44df5e9e0acc440f8d" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.qv:md5,6e04952bc182221c8b9e242dc3298808" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.genome.qv:md5,c554315aabcc4207c367805cf3090da3" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.unionsum.hist.ploidy:md5,16cf2fd89ed870c9cceb269e8430169a" + ] + ], + [ + "versions.yml:md5,825a4c61369638389227eee16dfb08b5" + ], + "test.genome.spectra-cn.fl.png", + "test.genome.spectra-cn.ln.png", + "test.genome.spectra-cn.st.png", + "test.spectra-asm.fl.png", + "test.spectra-asm.ln.png", + "test.spectra-asm.st.png" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-22T21:52:39.004978" + }, + "homo_sapiens-genome-trio": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "genome_only.bed:md5,b611f22cde0e410a2ca07c1eefd042d3" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "genome_only.wig:md5,19cf44989af72af597ef80d3489b4882" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.completeness.stats:md5,58b3933129832d64652babd80688eec3" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.dist_only.hist:md5,e2e6b54b0febef1f0fcf24cd2afd0b7a" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.genome.spectra-cn.hist:md5,6140a138ba47cb2b97814c93f80b2575" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.spectra-asm.hist:md5,541c9d1f87ab5c44df5e9e0acc440f8d" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.qv:md5,6e04952bc182221c8b9e242dc3298808" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.genome.qv:md5,c554315aabcc4207c367805cf3090da3" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.unionsum.hist.ploidy:md5,16cf2fd89ed870c9cceb269e8430169a" + ] + ], + [ + "versions.yml:md5,825a4c61369638389227eee16dfb08b5" + ], + "test.genome.read.test2_1.spectra-cn.fl.png,test.genome.read.test2_2.spectra-cn.fl.png,test.genome.spectra-cn.fl.png", + "test.genome.read.test2_1.spectra-cn.ln.png,test.genome.read.test2_2.spectra-cn.ln.png,test.genome.spectra-cn.ln.png", + "test.genome.read.test2_1.spectra-cn.st.png,test.genome.read.test2_2.spectra-cn.st.png,test.genome.spectra-cn.st.png", + "test.spectra-asm.fl.png", + "test.spectra-asm.ln.png", + "test.spectra-asm.st.png", + "test.hapmers.blob.png" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-23T10:37:10.601154" + } +} \ No newline at end of file diff --git a/modules/nf-core/merqury/merqury/tests/tags.yml b/modules/nf-core/merqury/merqury/tests/tags.yml new file mode 100644 index 0000000..af157f1 --- /dev/null +++ b/modules/nf-core/merqury/merqury/tests/tags.yml @@ -0,0 +1,2 @@ +merqury/merqury: + - "modules/nf-core/merqury/merqury/**" diff --git a/modules/nf-core/meryl/count/environment.yml b/modules/nf-core/meryl/count/environment.yml new file mode 100644 index 0000000..e37d790 --- /dev/null +++ b/modules/nf-core/meryl/count/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::meryl=1.4.1 diff --git a/modules/nf-core/meryl/count/main.nf b/modules/nf-core/meryl/count/main.nf new file mode 100644 index 0000000..c1540cc --- /dev/null +++ b/modules/nf-core/meryl/count/main.nf @@ -0,0 +1,54 @@ +process MERYL_COUNT { + tag "$meta.id" + label 'process_high' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/meryl:1.4.1--h4ac6f70_0': + 'biocontainers/meryl:1.4.1--h4ac6f70_0' }" + + input: + tuple val(meta), path(reads) + val kvalue + + output: + tuple val(meta), path("*.meryl") , emit: meryl_db + 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}" + """ + for READ in $reads; do + meryl count \\ + k=$kvalue \\ + threads=$task.cpus \\ + memory=${task.memory.toGiga()} \\ + $args \\ + $reads \\ + output read.\${READ%.f*}.meryl + done + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + meryl: \$( meryl --version |& sed 's/meryl //' ) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + for READ in $reads; do + touch read.\${READ%.f*}.meryl + done + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + meryl: \$( meryl --version |& sed 's/meryl //' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/meryl/count/meta.yml b/modules/nf-core/meryl/count/meta.yml new file mode 100644 index 0000000..a110a61 --- /dev/null +++ b/modules/nf-core/meryl/count/meta.yml @@ -0,0 +1,49 @@ +name: "meryl_count" +description: A genomic k-mer counter (and sequence utility) with nice features. +keywords: + - k-mer + - count + - reference-free +tools: + - "meryl": + description: "A genomic k-mer counter (and sequence utility) with nice features. " + homepage: "https://github.com/marbl/meryl" + documentation: "https://meryl.readthedocs.io/en/latest/quick-start.html" + tool_dev_url: "https://github.com/marbl/meryl" + licence: ["GPL"] + identifier: biotools:meryl +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. + - - kvalue: + type: integer + description: An integer value of k to use as the k-mer value. +output: + - meryl_db: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.meryl": + type: directory + description: A Meryl k-mer database + pattern: "*.meryl" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@mahesh-panchal" +maintainers: + - "@mahesh-panchal" + - "@gallvp" diff --git a/modules/nf-core/meryl/count/tests/main.nf.test b/modules/nf-core/meryl/count/tests/main.nf.test new file mode 100644 index 0000000..cce46c3 --- /dev/null +++ b/modules/nf-core/meryl/count/tests/main.nf.test @@ -0,0 +1,60 @@ +nextflow_process { + + name "Test Process MERYL_COUNT" + script "../main.nf" + process "MERYL_COUNT" + + tag "modules" + tag "modules_nfcore" + tag "meryl" + tag "meryl/count" + + test("bacteroides_fragilis - fastq") { + + when { + process { + """ + input[0] = Channel.value([ + [ id: 'test', single_end: true ], // meta map + file( params.modules_testdata_base_path + "/genomics/prokaryotes/bacteroides_fragilis/illumina/fastq/test1_1.fastq.gz", checkIfExists: true ) + ]) + input[1] = Channel.value(21) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("bacteroides_fragilis - fastq - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.value([ + [ id: 'test', single_end: true ], // meta map + file( params.modules_testdata_base_path + "/genomics/prokaryotes/bacteroides_fragilis/illumina/fastq/test1_1.fastq.gz", checkIfExists: true ) + ]) + input[1] = Channel.value(21) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/meryl/count/tests/main.nf.test.snap b/modules/nf-core/meryl/count/tests/main.nf.test.snap new file mode 100644 index 0000000..e0a2090 --- /dev/null +++ b/modules/nf-core/meryl/count/tests/main.nf.test.snap @@ -0,0 +1,332 @@ +{ + "bacteroides_fragilis - fastq": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "0x000000.merylData:md5,eefafbacbd0c41e4e4851e0e79a665a2", + "0x000000.merylIndex:md5,be9c1da85afee20689c5c7780b6c4996", + "0x000001.merylData:md5,d7e46736fc2896085b4610c50ec74835", + "0x000001.merylIndex:md5,a68e8b877ed5ce04e6f36a279b2fac0b", + "0x000010.merylData:md5,635badb59ad796363c2ff31801ab3d07", + "0x000010.merylIndex:md5,afed85194fcbd762b7acf86427b41cdd", + "0x000011.merylData:md5,b79970fce39d47cda1312080cac2f5d4", + "0x000011.merylIndex:md5,402ba5cf71656e2d19e584e4b65cadaa", + "0x000100.merylData:md5,48a7160c93fe5dd22fcdf8beb30e9256", + "0x000100.merylIndex:md5,fbfae07482bed8b00c6a690850c632fc", + "0x000101.merylData:md5,3ff336b4d59850f6726a4bd5670d49be", + "0x000101.merylIndex:md5,817edfe6dcbb07801bb9de54e0e1839a", + "0x000110.merylData:md5,41f253dc8240dd26cd8bbe379968aa1f", + "0x000110.merylIndex:md5,64f1400897c3108d5bc4957bea80569c", + "0x000111.merylData:md5,0860dd1bb6ee8e99a315c976b0c6226a", + "0x000111.merylIndex:md5,794aadc07e62b0d872763f2b40615627", + "0x001000.merylData:md5,daee6b4d18a43ce3a6c46ee2e8105a93", + "0x001000.merylIndex:md5,5ec6234ffd7d0380db3adc5aa3a3bb85", + "0x001001.merylData:md5,7e9b6d3c6f116fe418c4a4b0529a795e", + "0x001001.merylIndex:md5,eb63cc438cac77169a527bd6607bd781", + "0x001010.merylData:md5,f93c20dbdd16be37cdcfa263fe3c4ca4", + "0x001010.merylIndex:md5,d00fe5bd25b49bc9084b705017ccf4b9", + "0x001011.merylData:md5,eb25d445533ba345ea4e315750dd878c", + "0x001011.merylIndex:md5,1cacb579a9991dc5ebeef884347b81f5", + "0x001100.merylData:md5,7c783f255d155c23218e14c390b4c505", + "0x001100.merylIndex:md5,41a4d42d07928f3a33fd6c2d4ff613d8", + "0x001101.merylData:md5,98f323f13f99a2c75ccf8db9179f4b7d", + "0x001101.merylIndex:md5,528f3cdc0cbde3f0c91f8e8acd00a3e1", + "0x001110.merylData:md5,12f1c899ed2878d60c3a7ee5eb599839", + "0x001110.merylIndex:md5,755fc26bb9c8fec041798958f83b37b8", + "0x001111.merylData:md5,594881e83a5ece0879e79e2be82847f9", + "0x001111.merylIndex:md5,62625db2836f07303c9e4d383574143f", + "0x010000.merylData:md5,537d1a60554bd68386509fc3edd5e609", + "0x010000.merylIndex:md5,2bf23b6a552306dab61d0da0ad0789e0", + "0x010001.merylData:md5,9baef5a2ea4ed43caf18cabcdccaa3eb", + "0x010001.merylIndex:md5,ff98a6e5d18ab52795c6af00f47fc355", + "0x010010.merylData:md5,3b37668e9f9e1fc220e1fed36ecb7f86", + "0x010010.merylIndex:md5,0724a75055d62586f95f8b5c58688dd3", + "0x010011.merylData:md5,b4a039219f34df414048a023beea583b", + "0x010011.merylIndex:md5,34b29bdb6676e172e80202d36a0551d7", + "0x010100.merylData:md5,a49dfdebd8c4b3ff5ed1f4f84128b7e7", + "0x010100.merylIndex:md5,7cf00a46160bcb04de47e8bd05e8696b", + "0x010101.merylData:md5,0065195381f0a8629426139f3ba97327", + "0x010101.merylIndex:md5,de73cfc31abb763a11e063711f4b86bd", + "0x010110.merylData:md5,b331a0a2a59e46741366b8f811eaafcb", + "0x010110.merylIndex:md5,1caca7c16ffcc8070fbb58f4c9936089", + "0x010111.merylData:md5,7a51306a008a7f7639d98b4d1f24be92", + "0x010111.merylIndex:md5,12572a822643689bbc77030acb395850", + "0x011000.merylData:md5,6cdc1ab34d47f23a298ed3fc1d80ab4a", + "0x011000.merylIndex:md5,8947c6d693556b2530aed1f9ba0f23ba", + "0x011001.merylData:md5,9901aed256e9790ee9fe4a797bdc2348", + "0x011001.merylIndex:md5,1538131168e32210c7ada2fe7379ca18", + "0x011010.merylData:md5,30a5df2f9d2b33bd76780c5e1a1dca39", + "0x011010.merylIndex:md5,61d929e6929922e3206d6338340a9f87", + "0x011011.merylData:md5,edf65fc218d2b867a7117d0cd20bb578", + "0x011011.merylIndex:md5,fd6c02e383ec73fe31051ab16c3dc590", + "0x011100.merylData:md5,c0cbe5856dab102fc6ecdc481739936e", + "0x011100.merylIndex:md5,2c938d6d5806169f5718e35308d5664e", + "0x011101.merylData:md5,135031f4ec8f4f9fee07a6cd980a8f4e", + "0x011101.merylIndex:md5,855f5b00dce3c1307db74935f34ff777", + "0x011110.merylData:md5,e9c9a04e6d1a8763ad22dbc810918c8e", + "0x011110.merylIndex:md5,4bf0e856bea5404c683f77a857c8be04", + "0x011111.merylData:md5,5f8032cedc4fe13e9eee3a1e7b58ffd9", + "0x011111.merylIndex:md5,c7ff331ae2cb2c9f63cd33a57e3f707a", + "0x100000.merylData:md5,100d73f6f495c20c52c12c2e12764c33", + "0x100000.merylIndex:md5,3e1715843526e9ad1908d1a6dd882364", + "0x100001.merylData:md5,f97f4b5624e8cc4d7899fe31898b75ba", + "0x100001.merylIndex:md5,f5b5337094755876ad5ddfe9471f17a7", + "0x100010.merylData:md5,d68cc8b0acd31a80b46dc59c682a9875", + "0x100010.merylIndex:md5,d3e62d9d487c8299dd4b2806309f2757", + "0x100011.merylData:md5,71b87c478dcfdd496dfaae98c532c551", + "0x100011.merylIndex:md5,5cbdcd1ebbbc5e0e4848aedfba8f4d7a", + "0x100100.merylData:md5,bfbd0b14ae7633f162c2eba5ebf429f2", + "0x100100.merylIndex:md5,327cdff7a43f60879b611c56fc689570", + "0x100101.merylData:md5,c9147b0a4adc493a15f4c79d39792956", + "0x100101.merylIndex:md5,93f5cb4c0a35c15fc45d88561627d6c8", + "0x100110.merylData:md5,4e05cbeec33b4085f460093e1a5905a7", + "0x100110.merylIndex:md5,b065c6aa4180b82bcc1d723513bd5d4b", + "0x100111.merylData:md5,68a6a2ca12adba1c57dad51d73d47339", + "0x100111.merylIndex:md5,f1344a178e0141497f404de76758cc27", + "0x101000.merylData:md5,15cefb92f8ba5ee54472b66b44fb6d9d", + "0x101000.merylIndex:md5,4c83229ee4be2fbd5732d6dae5aacb28", + "0x101001.merylData:md5,910c4abf7a925e2582b13d7e396c591b", + "0x101001.merylIndex:md5,8fc1b16e74ad2ccf7a5cf330df47735c", + "0x101010.merylData:md5,85bf310f1cd130f2201d81daca291ff7", + "0x101010.merylIndex:md5,72ea3767e2730d318c292d5d48deb63f", + "0x101011.merylData:md5,033989603839db494fdffadedca76a6c", + "0x101011.merylIndex:md5,8f3731e5cf80723f7bcf1f2b90d5667b", + "0x101100.merylData:md5,df342143a9c4c54f2e8e6496b6e4f708", + "0x101100.merylIndex:md5,c3421ce5e8b49548df91cd195315e139", + "0x101101.merylData:md5,42d25675e9d0bc06c8b34d75d07a4caf", + "0x101101.merylIndex:md5,5c2f10b939ec5d463c524af55cd25c24", + "0x101110.merylData:md5,2e43f76c1e826da6fb9757b4f812acd1", + "0x101110.merylIndex:md5,b6b3ba4282ca1417462c50c43c164a0c", + "0x101111.merylData:md5,45732e59a9113476954035ffe0e7b601", + "0x101111.merylIndex:md5,45a3da9ddd34c4b5651690ce421ee5f2", + "0x110000.merylData:md5,e10a6e9169bc8fbdbbbac680e58e9781", + "0x110000.merylIndex:md5,53b2dbff4c7598489dba7956f2accdda", + "0x110001.merylData:md5,3db19699cedecafea182e146ecf2b24d", + "0x110001.merylIndex:md5,3271f69d5830172dbab92cdae3a5b3a3", + "0x110010.merylData:md5,6c9ccb0ca19ec3dd0bcac3d4ac16c1bb", + "0x110010.merylIndex:md5,f9a3fcc0aa34271866a2730a487bcff0", + "0x110011.merylData:md5,03138380dd03d3ec08b6ceee3bb8ecdc", + "0x110011.merylIndex:md5,26a57f682f875ee3e920e28f9351e586", + "0x110100.merylData:md5,caa3b1d6f1a5ea7815511b729dcb4f5a", + "0x110100.merylIndex:md5,7d4f76e3dddb398de2f233bfb80f6161", + "0x110101.merylData:md5,1f3a72ccf2fdee4332f2b34d2368f585", + "0x110101.merylIndex:md5,317e723efbc4bb073cddaaae3bba0931", + "0x110110.merylData:md5,fe8eb93ed0cf30cac4678179b0d2daa7", + "0x110110.merylIndex:md5,66c33da6a8b65ad35d0e0717c9d134eb", + "0x110111.merylData:md5,b7aefc0873d30cde41d38c7f1b90efc3", + "0x110111.merylIndex:md5,08cc48d6a13aa4fdce144c3ff41f5be6", + "0x111000.merylData:md5,9504dab5d20741912da8f815912507b9", + "0x111000.merylIndex:md5,e677a2fb775336b8efda8e41e4bc2720", + "0x111001.merylData:md5,eabf6c9b053696a34f38136f4fa05ed8", + "0x111001.merylIndex:md5,55479260f69d1d3abab93d0e155d0f2f", + "0x111010.merylData:md5,0ea69feac704ed4bcd434c67a6e5a769", + "0x111010.merylIndex:md5,f60e31a49a6d097b44d0a244685747f9", + "0x111011.merylData:md5,20e7301ecc915e918d390fd45b8bb428", + "0x111011.merylIndex:md5,1d8a61f45b82db9caa8e4b5cb1dbfb30", + "0x111100.merylData:md5,95e6fe905b6c07e7e3537d1ee6a2dca9", + "0x111100.merylIndex:md5,231ddde97648162e313290f49ceab69b", + "0x111101.merylData:md5,79cdba511fae030098025de90472e21d", + "0x111101.merylIndex:md5,e93892161446762ac545e0399e362685", + "0x111110.merylData:md5,062ba875af75297889359bc39409ab99", + "0x111110.merylIndex:md5,0cd1b81c64fee3bf067ce5ca1755a2bc", + "0x111111.merylData:md5,68feb8f1bade7885a9a696bb0825a17f", + "0x111111.merylIndex:md5,fd631e33829939cd7f06581c80791dc4", + "merylIndex:md5,d9e794e14b1eeb0eaa4d98e10eb571cc" + ] + ] + ], + "1": [ + "versions.yml:md5,a4a6baac7481f1d4595ba54622bdf33d" + ], + "meryl_db": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "0x000000.merylData:md5,eefafbacbd0c41e4e4851e0e79a665a2", + "0x000000.merylIndex:md5,be9c1da85afee20689c5c7780b6c4996", + "0x000001.merylData:md5,d7e46736fc2896085b4610c50ec74835", + "0x000001.merylIndex:md5,a68e8b877ed5ce04e6f36a279b2fac0b", + "0x000010.merylData:md5,635badb59ad796363c2ff31801ab3d07", + "0x000010.merylIndex:md5,afed85194fcbd762b7acf86427b41cdd", + "0x000011.merylData:md5,b79970fce39d47cda1312080cac2f5d4", + "0x000011.merylIndex:md5,402ba5cf71656e2d19e584e4b65cadaa", + "0x000100.merylData:md5,48a7160c93fe5dd22fcdf8beb30e9256", + "0x000100.merylIndex:md5,fbfae07482bed8b00c6a690850c632fc", + "0x000101.merylData:md5,3ff336b4d59850f6726a4bd5670d49be", + "0x000101.merylIndex:md5,817edfe6dcbb07801bb9de54e0e1839a", + "0x000110.merylData:md5,41f253dc8240dd26cd8bbe379968aa1f", + "0x000110.merylIndex:md5,64f1400897c3108d5bc4957bea80569c", + "0x000111.merylData:md5,0860dd1bb6ee8e99a315c976b0c6226a", + "0x000111.merylIndex:md5,794aadc07e62b0d872763f2b40615627", + "0x001000.merylData:md5,daee6b4d18a43ce3a6c46ee2e8105a93", + "0x001000.merylIndex:md5,5ec6234ffd7d0380db3adc5aa3a3bb85", + "0x001001.merylData:md5,7e9b6d3c6f116fe418c4a4b0529a795e", + "0x001001.merylIndex:md5,eb63cc438cac77169a527bd6607bd781", + "0x001010.merylData:md5,f93c20dbdd16be37cdcfa263fe3c4ca4", + "0x001010.merylIndex:md5,d00fe5bd25b49bc9084b705017ccf4b9", + "0x001011.merylData:md5,eb25d445533ba345ea4e315750dd878c", + "0x001011.merylIndex:md5,1cacb579a9991dc5ebeef884347b81f5", + "0x001100.merylData:md5,7c783f255d155c23218e14c390b4c505", + "0x001100.merylIndex:md5,41a4d42d07928f3a33fd6c2d4ff613d8", + "0x001101.merylData:md5,98f323f13f99a2c75ccf8db9179f4b7d", + "0x001101.merylIndex:md5,528f3cdc0cbde3f0c91f8e8acd00a3e1", + "0x001110.merylData:md5,12f1c899ed2878d60c3a7ee5eb599839", + "0x001110.merylIndex:md5,755fc26bb9c8fec041798958f83b37b8", + "0x001111.merylData:md5,594881e83a5ece0879e79e2be82847f9", + "0x001111.merylIndex:md5,62625db2836f07303c9e4d383574143f", + "0x010000.merylData:md5,537d1a60554bd68386509fc3edd5e609", + "0x010000.merylIndex:md5,2bf23b6a552306dab61d0da0ad0789e0", + "0x010001.merylData:md5,9baef5a2ea4ed43caf18cabcdccaa3eb", + "0x010001.merylIndex:md5,ff98a6e5d18ab52795c6af00f47fc355", + "0x010010.merylData:md5,3b37668e9f9e1fc220e1fed36ecb7f86", + "0x010010.merylIndex:md5,0724a75055d62586f95f8b5c58688dd3", + "0x010011.merylData:md5,b4a039219f34df414048a023beea583b", + "0x010011.merylIndex:md5,34b29bdb6676e172e80202d36a0551d7", + "0x010100.merylData:md5,a49dfdebd8c4b3ff5ed1f4f84128b7e7", + "0x010100.merylIndex:md5,7cf00a46160bcb04de47e8bd05e8696b", + "0x010101.merylData:md5,0065195381f0a8629426139f3ba97327", + "0x010101.merylIndex:md5,de73cfc31abb763a11e063711f4b86bd", + "0x010110.merylData:md5,b331a0a2a59e46741366b8f811eaafcb", + "0x010110.merylIndex:md5,1caca7c16ffcc8070fbb58f4c9936089", + "0x010111.merylData:md5,7a51306a008a7f7639d98b4d1f24be92", + "0x010111.merylIndex:md5,12572a822643689bbc77030acb395850", + "0x011000.merylData:md5,6cdc1ab34d47f23a298ed3fc1d80ab4a", + "0x011000.merylIndex:md5,8947c6d693556b2530aed1f9ba0f23ba", + "0x011001.merylData:md5,9901aed256e9790ee9fe4a797bdc2348", + "0x011001.merylIndex:md5,1538131168e32210c7ada2fe7379ca18", + "0x011010.merylData:md5,30a5df2f9d2b33bd76780c5e1a1dca39", + "0x011010.merylIndex:md5,61d929e6929922e3206d6338340a9f87", + "0x011011.merylData:md5,edf65fc218d2b867a7117d0cd20bb578", + "0x011011.merylIndex:md5,fd6c02e383ec73fe31051ab16c3dc590", + "0x011100.merylData:md5,c0cbe5856dab102fc6ecdc481739936e", + "0x011100.merylIndex:md5,2c938d6d5806169f5718e35308d5664e", + "0x011101.merylData:md5,135031f4ec8f4f9fee07a6cd980a8f4e", + "0x011101.merylIndex:md5,855f5b00dce3c1307db74935f34ff777", + "0x011110.merylData:md5,e9c9a04e6d1a8763ad22dbc810918c8e", + "0x011110.merylIndex:md5,4bf0e856bea5404c683f77a857c8be04", + "0x011111.merylData:md5,5f8032cedc4fe13e9eee3a1e7b58ffd9", + "0x011111.merylIndex:md5,c7ff331ae2cb2c9f63cd33a57e3f707a", + "0x100000.merylData:md5,100d73f6f495c20c52c12c2e12764c33", + "0x100000.merylIndex:md5,3e1715843526e9ad1908d1a6dd882364", + "0x100001.merylData:md5,f97f4b5624e8cc4d7899fe31898b75ba", + "0x100001.merylIndex:md5,f5b5337094755876ad5ddfe9471f17a7", + "0x100010.merylData:md5,d68cc8b0acd31a80b46dc59c682a9875", + "0x100010.merylIndex:md5,d3e62d9d487c8299dd4b2806309f2757", + "0x100011.merylData:md5,71b87c478dcfdd496dfaae98c532c551", + "0x100011.merylIndex:md5,5cbdcd1ebbbc5e0e4848aedfba8f4d7a", + "0x100100.merylData:md5,bfbd0b14ae7633f162c2eba5ebf429f2", + "0x100100.merylIndex:md5,327cdff7a43f60879b611c56fc689570", + "0x100101.merylData:md5,c9147b0a4adc493a15f4c79d39792956", + "0x100101.merylIndex:md5,93f5cb4c0a35c15fc45d88561627d6c8", + "0x100110.merylData:md5,4e05cbeec33b4085f460093e1a5905a7", + "0x100110.merylIndex:md5,b065c6aa4180b82bcc1d723513bd5d4b", + "0x100111.merylData:md5,68a6a2ca12adba1c57dad51d73d47339", + "0x100111.merylIndex:md5,f1344a178e0141497f404de76758cc27", + "0x101000.merylData:md5,15cefb92f8ba5ee54472b66b44fb6d9d", + "0x101000.merylIndex:md5,4c83229ee4be2fbd5732d6dae5aacb28", + "0x101001.merylData:md5,910c4abf7a925e2582b13d7e396c591b", + "0x101001.merylIndex:md5,8fc1b16e74ad2ccf7a5cf330df47735c", + "0x101010.merylData:md5,85bf310f1cd130f2201d81daca291ff7", + "0x101010.merylIndex:md5,72ea3767e2730d318c292d5d48deb63f", + "0x101011.merylData:md5,033989603839db494fdffadedca76a6c", + "0x101011.merylIndex:md5,8f3731e5cf80723f7bcf1f2b90d5667b", + "0x101100.merylData:md5,df342143a9c4c54f2e8e6496b6e4f708", + "0x101100.merylIndex:md5,c3421ce5e8b49548df91cd195315e139", + "0x101101.merylData:md5,42d25675e9d0bc06c8b34d75d07a4caf", + "0x101101.merylIndex:md5,5c2f10b939ec5d463c524af55cd25c24", + "0x101110.merylData:md5,2e43f76c1e826da6fb9757b4f812acd1", + "0x101110.merylIndex:md5,b6b3ba4282ca1417462c50c43c164a0c", + "0x101111.merylData:md5,45732e59a9113476954035ffe0e7b601", + "0x101111.merylIndex:md5,45a3da9ddd34c4b5651690ce421ee5f2", + "0x110000.merylData:md5,e10a6e9169bc8fbdbbbac680e58e9781", + "0x110000.merylIndex:md5,53b2dbff4c7598489dba7956f2accdda", + "0x110001.merylData:md5,3db19699cedecafea182e146ecf2b24d", + "0x110001.merylIndex:md5,3271f69d5830172dbab92cdae3a5b3a3", + "0x110010.merylData:md5,6c9ccb0ca19ec3dd0bcac3d4ac16c1bb", + "0x110010.merylIndex:md5,f9a3fcc0aa34271866a2730a487bcff0", + "0x110011.merylData:md5,03138380dd03d3ec08b6ceee3bb8ecdc", + "0x110011.merylIndex:md5,26a57f682f875ee3e920e28f9351e586", + "0x110100.merylData:md5,caa3b1d6f1a5ea7815511b729dcb4f5a", + "0x110100.merylIndex:md5,7d4f76e3dddb398de2f233bfb80f6161", + "0x110101.merylData:md5,1f3a72ccf2fdee4332f2b34d2368f585", + "0x110101.merylIndex:md5,317e723efbc4bb073cddaaae3bba0931", + "0x110110.merylData:md5,fe8eb93ed0cf30cac4678179b0d2daa7", + "0x110110.merylIndex:md5,66c33da6a8b65ad35d0e0717c9d134eb", + "0x110111.merylData:md5,b7aefc0873d30cde41d38c7f1b90efc3", + "0x110111.merylIndex:md5,08cc48d6a13aa4fdce144c3ff41f5be6", + "0x111000.merylData:md5,9504dab5d20741912da8f815912507b9", + "0x111000.merylIndex:md5,e677a2fb775336b8efda8e41e4bc2720", + "0x111001.merylData:md5,eabf6c9b053696a34f38136f4fa05ed8", + "0x111001.merylIndex:md5,55479260f69d1d3abab93d0e155d0f2f", + "0x111010.merylData:md5,0ea69feac704ed4bcd434c67a6e5a769", + "0x111010.merylIndex:md5,f60e31a49a6d097b44d0a244685747f9", + "0x111011.merylData:md5,20e7301ecc915e918d390fd45b8bb428", + "0x111011.merylIndex:md5,1d8a61f45b82db9caa8e4b5cb1dbfb30", + "0x111100.merylData:md5,95e6fe905b6c07e7e3537d1ee6a2dca9", + "0x111100.merylIndex:md5,231ddde97648162e313290f49ceab69b", + "0x111101.merylData:md5,79cdba511fae030098025de90472e21d", + "0x111101.merylIndex:md5,e93892161446762ac545e0399e362685", + "0x111110.merylData:md5,062ba875af75297889359bc39409ab99", + "0x111110.merylIndex:md5,0cd1b81c64fee3bf067ce5ca1755a2bc", + "0x111111.merylData:md5,68feb8f1bade7885a9a696bb0825a17f", + "0x111111.merylIndex:md5,fd631e33829939cd7f06581c80791dc4", + "merylIndex:md5,d9e794e14b1eeb0eaa4d98e10eb571cc" + ] + ] + ], + "versions": [ + "versions.yml:md5,a4a6baac7481f1d4595ba54622bdf33d" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-26T19:30:03.054214308" + }, + "bacteroides_fragilis - fastq - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "read.test1_1.meryl:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,a4a6baac7481f1d4595ba54622bdf33d" + ], + "meryl_db": [ + [ + { + "id": "test", + "single_end": true + }, + "read.test1_1.meryl:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,a4a6baac7481f1d4595ba54622bdf33d" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-22T12:27:16.300916" + } +} \ No newline at end of file diff --git a/modules/nf-core/meryl/count/tests/tags.yml b/modules/nf-core/meryl/count/tests/tags.yml new file mode 100644 index 0000000..b25bfa6 --- /dev/null +++ b/modules/nf-core/meryl/count/tests/tags.yml @@ -0,0 +1,2 @@ +meryl/count: + - "modules/nf-core/meryl/count/**" diff --git a/modules/nf-core/meryl/unionsum/environment.yml b/modules/nf-core/meryl/unionsum/environment.yml new file mode 100644 index 0000000..e37d790 --- /dev/null +++ b/modules/nf-core/meryl/unionsum/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::meryl=1.4.1 diff --git a/modules/nf-core/meryl/unionsum/main.nf b/modules/nf-core/meryl/unionsum/main.nf new file mode 100644 index 0000000..bc2853b --- /dev/null +++ b/modules/nf-core/meryl/unionsum/main.nf @@ -0,0 +1,50 @@ +process MERYL_UNIONSUM { + tag "$meta.id" + label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/meryl:1.4.1--h4ac6f70_0': + 'biocontainers/meryl:1.4.1--h4ac6f70_0' }" + + input: + tuple val(meta), path(meryl_dbs) + val kvalue + + output: + tuple val(meta), path("*.unionsum.meryl"), emit: meryl_db + 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}" + """ + meryl union-sum \\ + k=$kvalue \\ + threads=$task.cpus \\ + memory=${task.memory.toGiga()} \\ + $args \\ + output ${prefix}.unionsum.meryl \\ + $meryl_dbs + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + meryl: \$( meryl --version |& sed 's/meryl //' ) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.unionsum.meryl + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + meryl: \$( meryl --version |& sed 's/meryl //' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/meryl/unionsum/meta.yml b/modules/nf-core/meryl/unionsum/meta.yml new file mode 100644 index 0000000..e9e1305 --- /dev/null +++ b/modules/nf-core/meryl/unionsum/meta.yml @@ -0,0 +1,47 @@ +name: "meryl_unionsum" +description: A genomic k-mer counter (and sequence utility) with nice features. +keywords: + - k-mer + - unionsum + - reference-free +tools: + - "meryl": + description: "A genomic k-mer counter (and sequence utility) with nice features. " + homepage: "https://github.com/marbl/meryl" + documentation: "https://meryl.readthedocs.io/en/latest/quick-start.html" + tool_dev_url: "https://github.com/marbl/meryl" + licence: ["GPL"] + identifier: biotools:meryl +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - meryl_dbs: + type: directory + description: Meryl k-mer databases + - - kvalue: + type: integer + description: An integer value of k to use as the k-mer value. +output: + - meryl_db: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.unionsum.meryl": + type: directory + description: A Meryl k-mer database that is the union sum of the input databases + pattern: "*.unionsum.meryl" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@mahesh-panchal" +maintainers: + - "@mahesh-panchal" + - "@gallvp" diff --git a/modules/nf-core/meryl/unionsum/tests/main.nf.test b/modules/nf-core/meryl/unionsum/tests/main.nf.test new file mode 100644 index 0000000..dc1bf8a --- /dev/null +++ b/modules/nf-core/meryl/unionsum/tests/main.nf.test @@ -0,0 +1,123 @@ +nextflow_process { + + name "Test Process MERYL_UNIONSUM" + script "../main.nf" + process "MERYL_UNIONSUM" + + tag "modules" + tag "modules_nfcore" + tag "meryl" + tag "meryl/unionsum" + tag "meryl/count" + + test("sarscov2 - fastq - single_end") { + + setup { + run('MERYL_COUNT'){ + script "../../../../../modules/nf-core/meryl/count/main.nf" + process { + """ + input[0] = Channel.value([ + [ id: 'test', single_end: true ], // meta map + file( params.modules_testdata_base_path + "/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true ) + ]) + input[1] = Channel.value(21) + """ + } + } + } + + when { + process { + """ + input[0] = MERYL_COUNT.out.meryl_db + input[1] = Channel.value(21) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - fastq - paired_end") { + + setup { + run('MERYL_COUNT'){ + script "../../../../../modules/nf-core/meryl/count/main.nf" + process { + """ + input[0] = Channel.value([ + [ id: 'test', single_end: false ], // meta map + [ + file( params.modules_testdata_base_path + "/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true ), + file( params.modules_testdata_base_path + "/genomics/sarscov2/illumina/fastq/test_2.fastq.gz", checkIfExists: true ) + ] + ]) + input[1] = Channel.value(21) + """ + } + } + } + + when { + process { + """ + input[0] = MERYL_COUNT.out.meryl_db + input[1] = Channel.value(21) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - fastq- stub") { + + options "-stub" + + setup { + run('MERYL_COUNT'){ + script "../../../../../modules/nf-core/meryl/count/main.nf" + process { + """ + input[0] = Channel.value([ + [ id: 'test', single_end: true ], // meta map + file( params.modules_testdata_base_path + "/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true ) + ]) + input[1] = Channel.value(21) + """ + } + } + } + + when { + process { + """ + input[0] = MERYL_COUNT.out.meryl_db + input[1] = Channel.value(21) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/meryl/unionsum/tests/main.nf.test.snap b/modules/nf-core/meryl/unionsum/tests/main.nf.test.snap new file mode 100644 index 0000000..a6ed4c7 --- /dev/null +++ b/modules/nf-core/meryl/unionsum/tests/main.nf.test.snap @@ -0,0 +1,627 @@ +{ + "sarscov2 - fastq- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.unionsum.meryl:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,c97980ac5ebd37a77768c105861ad719" + ], + "meryl_db": [ + [ + { + "id": "test", + "single_end": true + }, + "test.unionsum.meryl:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,c97980ac5ebd37a77768c105861ad719" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-22T12:40:21.306142" + }, + "sarscov2 - fastq - single_end": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "0x000000.merylData:md5,7d95ca25a2d39a0b8fb5f71a77d7bddd", + "0x000000.merylIndex:md5,ca9b05f5b90ed432aa1134378a86f166", + "0x000001.merylData:md5,bb4e2ec7d45a2d4fa36e802b0e312965", + "0x000001.merylIndex:md5,26b3ad6909cec2061c476201a0ac04cd", + "0x000010.merylData:md5,b4b8e7a742b4634ca82d2d19928cacd6", + "0x000010.merylIndex:md5,a266e782d80833c8e685a42f07937fc7", + "0x000011.merylData:md5,bc181b55548c6d7832b65be4bed8ec56", + "0x000011.merylIndex:md5,f2bb128f3da304408c81cefb0d4de879", + "0x000100.merylData:md5,07da07cdc83420487641f7201c1593c2", + "0x000100.merylIndex:md5,f40d2c9ecf5980328cfd766b9d90019d", + "0x000101.merylData:md5,2410ff0d6604044e9175feb668e747ac", + "0x000101.merylIndex:md5,f61473e3e39e6990c30bfa53e2a63302", + "0x000110.merylData:md5,05804f66393bef8edf69143a6cd984bc", + "0x000110.merylIndex:md5,15b6e88e01e1b1abc29b54128067a938", + "0x000111.merylData:md5,a3ced1867214878de2d83dda7e805308", + "0x000111.merylIndex:md5,2998f056a5f859229229b0051cb792ec", + "0x001000.merylData:md5,531c743e9b5df804297fba37e5cd4a63", + "0x001000.merylIndex:md5,30ab89ede28b623711675a45751b2ebc", + "0x001001.merylData:md5,4303314fa9d7bb8326938537c27d381e", + "0x001001.merylIndex:md5,1356eb83aa75fce8693e974bf54200d1", + "0x001010.merylData:md5,77918beac0dc29069365d9bf9104237b", + "0x001010.merylIndex:md5,d7db72b42185070da78104b356f4b5a1", + "0x001011.merylData:md5,d7837930447de7651dee47c00a1d2afe", + "0x001011.merylIndex:md5,ac9c6c4aab6172d73134d2dfc5215832", + "0x001100.merylData:md5,3e5e6301e1287e7ada42e5bafa24b74f", + "0x001100.merylIndex:md5,0e0736dfaa2974d7f09744ece53b3e69", + "0x001101.merylData:md5,38b8f1b7982de9c7add7db0071c28d24", + "0x001101.merylIndex:md5,c85afc65db43592a006e317c2e4891e8", + "0x001110.merylData:md5,f189f910062d272065a0f444789e1d68", + "0x001110.merylIndex:md5,701d7a951ee2bf6520845262dbd65559", + "0x001111.merylData:md5,0200cf0723778bcc48cffe7bfa48137c", + "0x001111.merylIndex:md5,2d445869fecabc6414242cd68a6edda5", + "0x010000.merylData:md5,a1d5479d3e8bd671368c6432867a2e95", + "0x010000.merylIndex:md5,ad664f2ea294871da909156a88b0dd3a", + "0x010001.merylData:md5,28919fad6317bbd6fe9809665437f9ae", + "0x010001.merylIndex:md5,64d482b1ef40e3de9d972f4134cb6d07", + "0x010010.merylData:md5,5b4630208c973815be52221c91777f77", + "0x010010.merylIndex:md5,0460424759df28005d71ebdef60e9ddf", + "0x010011.merylData:md5,fc58468b0b010469b11fe3b00c771067", + "0x010011.merylIndex:md5,7bd12cb4685bd7dc1aeb619e87bb3115", + "0x010100.merylData:md5,0db951a9cdf9c78bea428715ddf75bb0", + "0x010100.merylIndex:md5,b13f442b8fec07bf23ef751f2d94f9cb", + "0x010101.merylData:md5,9d0c90405b90d864bc3c2495657881a9", + "0x010101.merylIndex:md5,b3e13987d9d498b8714dfae339217f93", + "0x010110.merylData:md5,3f243ce000c60255f2d0e20d8e85a829", + "0x010110.merylIndex:md5,4ca7aeafe7b7de7bfc4dbcf4e0102fc0", + "0x010111.merylData:md5,0f369d3e76d23b09f75a231223872491", + "0x010111.merylIndex:md5,625e792cf975bc26aec21cb2dbd44eab", + "0x011000.merylData:md5,72e99ffb278453732413ffe3ad11d3fd", + "0x011000.merylIndex:md5,7bc0d58bb83ff6260a6dc65c8d70d9ac", + "0x011001.merylData:md5,52b5f0878131997a0660c7c205d34236", + "0x011001.merylIndex:md5,0b510bcd0b9fbbdf5d46bea2c4735126", + "0x011010.merylData:md5,5c67cd3def095bfbbe81125012a14364", + "0x011010.merylIndex:md5,3eebe66a116b1d121f918899a7fdbb28", + "0x011011.merylData:md5,64b7020da74d0d6a2b329e094cec17ed", + "0x011011.merylIndex:md5,9e3cc561c44b83131f76344567c4d943", + "0x011100.merylData:md5,5ea42e92cddadaa49f24c7f10279bb6c", + "0x011100.merylIndex:md5,c796d799243b1622a38455dc274ddbff", + "0x011101.merylData:md5,398aed1de15abe0855b22cc566a81065", + "0x011101.merylIndex:md5,56fa2957c0c5c9b23434ce1d2070fd40", + "0x011110.merylData:md5,24eb8aaa7b58da7626042435a2ee8061", + "0x011110.merylIndex:md5,ba35223b3ac43b389413c605bf035a6d", + "0x011111.merylData:md5,90e7bcb05dcf23278421ce8a02d4deed", + "0x011111.merylIndex:md5,8bcb85c1115c6a4bc5b5f0e177a76bde", + "0x100000.merylData:md5,80f244202eef29232d350c0faa2abeda", + "0x100000.merylIndex:md5,37bebd00de3b3af3e55c444661e3961f", + "0x100001.merylData:md5,a205e2871b8637e32b6eb5272f7d5290", + "0x100001.merylIndex:md5,49e5e583346b4491b1586c86213118f0", + "0x100010.merylData:md5,2b320d66ce30f8fea1a626278c421220", + "0x100010.merylIndex:md5,c7107b6651d2ea4c2e303bf0eb5d4a6a", + "0x100011.merylData:md5,35ef5544dc557711302340bae1e41d40", + "0x100011.merylIndex:md5,b3afac9563c6ac916010322d6226e729", + "0x100100.merylData:md5,17a8f1975e868ccdca0d3b6e72c5d76a", + "0x100100.merylIndex:md5,9b8d65f01d22e3873d50e5db6d7711f5", + "0x100101.merylData:md5,d3d0250646185c5bfeec43a0490d775f", + "0x100101.merylIndex:md5,d072b261cbd89375078cecd73f20016a", + "0x100110.merylData:md5,1e7497fafc102ca23a35111deb992816", + "0x100110.merylIndex:md5,873ca65e4ef4d432fc356a85beaa4063", + "0x100111.merylData:md5,fe791c9598de38dfa75496558a8b2f28", + "0x100111.merylIndex:md5,369c608a46fe76cbc77715d163153bfb", + "0x101000.merylData:md5,d89e7ae06de81df678021213e9808b4b", + "0x101000.merylIndex:md5,43160d471884a484f3862750d44c2788", + "0x101001.merylData:md5,8cd9b88142c08c412371e9ef66d59ef9", + "0x101001.merylIndex:md5,6a5650d1c9793eeb2781fb9e57b14784", + "0x101010.merylData:md5,0f17f7e3dfe8c2ec5c469597c5e66134", + "0x101010.merylIndex:md5,fa2913d514e183a3c4cba31cc422dff4", + "0x101011.merylData:md5,f8ab9821eebfdedabb61a106abdce55c", + "0x101011.merylIndex:md5,8a5a07b1d07b0b7d71943c0980c0755e", + "0x101100.merylData:md5,6a969c16cc7a522ebb1f0be5fc81056e", + "0x101100.merylIndex:md5,5f12c2413a9ddca0751e4b2034ebdc87", + "0x101101.merylData:md5,9cc1443daf53adcf2d95c4fd0f8d49de", + "0x101101.merylIndex:md5,19dcebf34036938fed8984d8e100b579", + "0x101110.merylData:md5,f0d63a933d58c9c5f0bd5885adfa0dfe", + "0x101110.merylIndex:md5,d6517f33c2c4667b5c53f8b099a1f8fe", + "0x101111.merylData:md5,87706ddcd8927988661d8e64e69c0723", + "0x101111.merylIndex:md5,fc9671ff0358c2350a650ac1763a3368", + "0x110000.merylData:md5,63ce769d2987235e28d567b3b64585c1", + "0x110000.merylIndex:md5,6f7997e8622eeb89fdbd774d8cd98ba2", + "0x110001.merylData:md5,0d3d10723737ac2d1037e1fe576acb22", + "0x110001.merylIndex:md5,f27c0d1169639ae9e081b39afc3757f5", + "0x110010.merylData:md5,3b92d7921670a6c4a4394c84286a3837", + "0x110010.merylIndex:md5,ff12c1af64828ca8d054acea6ebe3440", + "0x110011.merylData:md5,9eb8aba55e32e31d064a584682607037", + "0x110011.merylIndex:md5,9e5f773d3e6472581bb72f3185d4dc16", + "0x110100.merylData:md5,e4a2e750379ad0c4f427b7fb39059412", + "0x110100.merylIndex:md5,12473637233e2ad57e71ae72dba34d78", + "0x110101.merylData:md5,1b9341b1a03a059abec2bc5e53c31c29", + "0x110101.merylIndex:md5,b5e63433b6765efb23cec511cee9175f", + "0x110110.merylData:md5,d7109486ca2eb7e38ec53984be463f9e", + "0x110110.merylIndex:md5,74e8295e9a08f3040e904d7f7be7d8d1", + "0x110111.merylData:md5,75590d1bf3590e64503563e8f441e7cc", + "0x110111.merylIndex:md5,292000207b3bed4cf8c388dceaa6600f", + "0x111000.merylData:md5,d59dbabc5bd07bbb00cb9bd943ec68eb", + "0x111000.merylIndex:md5,fc8b47e18240bb9c47e1e84bcf58d862", + "0x111001.merylData:md5,557bfc214b1711ca86fb708a9c29608d", + "0x111001.merylIndex:md5,2d862224cd86c6ae27d45efb320442c4", + "0x111010.merylData:md5,8f055963758daaac43f47b4b8256b114", + "0x111010.merylIndex:md5,83decf260813123b92cb1ed73e135476", + "0x111011.merylData:md5,8d842899193a5001b5f29b19689bde4c", + "0x111011.merylIndex:md5,b287e4892670a8efd434a38cc822f0c3", + "0x111100.merylData:md5,f9fda990220a23ecee48abecfd338d2f", + "0x111100.merylIndex:md5,a6fda3f1e2328b22aa6fc9ffc2fa78f6", + "0x111101.merylData:md5,1f365b5dcede12ce0f58df73de213ab1", + "0x111101.merylIndex:md5,3ff34e0a24e0450a84f46785d7508ea5", + "0x111110.merylData:md5,50f0a65e10c92b8315294ef52b20fc4a", + "0x111110.merylIndex:md5,07f0179b757af0593f9120c98b7b9052", + "0x111111.merylData:md5,1459a239b18d6e7a23bef1e91b1b1be3", + "0x111111.merylIndex:md5,e4fcdb894e33dbda5da04fa7ff3fda51", + "merylIndex:md5,3eb997b0370a1bf31aa77328f143573e" + ] + ] + ], + "1": [ + "versions.yml:md5,c97980ac5ebd37a77768c105861ad719" + ], + "meryl_db": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "0x000000.merylData:md5,7d95ca25a2d39a0b8fb5f71a77d7bddd", + "0x000000.merylIndex:md5,ca9b05f5b90ed432aa1134378a86f166", + "0x000001.merylData:md5,bb4e2ec7d45a2d4fa36e802b0e312965", + "0x000001.merylIndex:md5,26b3ad6909cec2061c476201a0ac04cd", + "0x000010.merylData:md5,b4b8e7a742b4634ca82d2d19928cacd6", + "0x000010.merylIndex:md5,a266e782d80833c8e685a42f07937fc7", + "0x000011.merylData:md5,bc181b55548c6d7832b65be4bed8ec56", + "0x000011.merylIndex:md5,f2bb128f3da304408c81cefb0d4de879", + "0x000100.merylData:md5,07da07cdc83420487641f7201c1593c2", + "0x000100.merylIndex:md5,f40d2c9ecf5980328cfd766b9d90019d", + "0x000101.merylData:md5,2410ff0d6604044e9175feb668e747ac", + "0x000101.merylIndex:md5,f61473e3e39e6990c30bfa53e2a63302", + "0x000110.merylData:md5,05804f66393bef8edf69143a6cd984bc", + "0x000110.merylIndex:md5,15b6e88e01e1b1abc29b54128067a938", + "0x000111.merylData:md5,a3ced1867214878de2d83dda7e805308", + "0x000111.merylIndex:md5,2998f056a5f859229229b0051cb792ec", + "0x001000.merylData:md5,531c743e9b5df804297fba37e5cd4a63", + "0x001000.merylIndex:md5,30ab89ede28b623711675a45751b2ebc", + "0x001001.merylData:md5,4303314fa9d7bb8326938537c27d381e", + "0x001001.merylIndex:md5,1356eb83aa75fce8693e974bf54200d1", + "0x001010.merylData:md5,77918beac0dc29069365d9bf9104237b", + "0x001010.merylIndex:md5,d7db72b42185070da78104b356f4b5a1", + "0x001011.merylData:md5,d7837930447de7651dee47c00a1d2afe", + "0x001011.merylIndex:md5,ac9c6c4aab6172d73134d2dfc5215832", + "0x001100.merylData:md5,3e5e6301e1287e7ada42e5bafa24b74f", + "0x001100.merylIndex:md5,0e0736dfaa2974d7f09744ece53b3e69", + "0x001101.merylData:md5,38b8f1b7982de9c7add7db0071c28d24", + "0x001101.merylIndex:md5,c85afc65db43592a006e317c2e4891e8", + "0x001110.merylData:md5,f189f910062d272065a0f444789e1d68", + "0x001110.merylIndex:md5,701d7a951ee2bf6520845262dbd65559", + "0x001111.merylData:md5,0200cf0723778bcc48cffe7bfa48137c", + "0x001111.merylIndex:md5,2d445869fecabc6414242cd68a6edda5", + "0x010000.merylData:md5,a1d5479d3e8bd671368c6432867a2e95", + "0x010000.merylIndex:md5,ad664f2ea294871da909156a88b0dd3a", + "0x010001.merylData:md5,28919fad6317bbd6fe9809665437f9ae", + "0x010001.merylIndex:md5,64d482b1ef40e3de9d972f4134cb6d07", + "0x010010.merylData:md5,5b4630208c973815be52221c91777f77", + "0x010010.merylIndex:md5,0460424759df28005d71ebdef60e9ddf", + "0x010011.merylData:md5,fc58468b0b010469b11fe3b00c771067", + "0x010011.merylIndex:md5,7bd12cb4685bd7dc1aeb619e87bb3115", + "0x010100.merylData:md5,0db951a9cdf9c78bea428715ddf75bb0", + "0x010100.merylIndex:md5,b13f442b8fec07bf23ef751f2d94f9cb", + "0x010101.merylData:md5,9d0c90405b90d864bc3c2495657881a9", + "0x010101.merylIndex:md5,b3e13987d9d498b8714dfae339217f93", + "0x010110.merylData:md5,3f243ce000c60255f2d0e20d8e85a829", + "0x010110.merylIndex:md5,4ca7aeafe7b7de7bfc4dbcf4e0102fc0", + "0x010111.merylData:md5,0f369d3e76d23b09f75a231223872491", + "0x010111.merylIndex:md5,625e792cf975bc26aec21cb2dbd44eab", + "0x011000.merylData:md5,72e99ffb278453732413ffe3ad11d3fd", + "0x011000.merylIndex:md5,7bc0d58bb83ff6260a6dc65c8d70d9ac", + "0x011001.merylData:md5,52b5f0878131997a0660c7c205d34236", + "0x011001.merylIndex:md5,0b510bcd0b9fbbdf5d46bea2c4735126", + "0x011010.merylData:md5,5c67cd3def095bfbbe81125012a14364", + "0x011010.merylIndex:md5,3eebe66a116b1d121f918899a7fdbb28", + "0x011011.merylData:md5,64b7020da74d0d6a2b329e094cec17ed", + "0x011011.merylIndex:md5,9e3cc561c44b83131f76344567c4d943", + "0x011100.merylData:md5,5ea42e92cddadaa49f24c7f10279bb6c", + "0x011100.merylIndex:md5,c796d799243b1622a38455dc274ddbff", + "0x011101.merylData:md5,398aed1de15abe0855b22cc566a81065", + "0x011101.merylIndex:md5,56fa2957c0c5c9b23434ce1d2070fd40", + "0x011110.merylData:md5,24eb8aaa7b58da7626042435a2ee8061", + "0x011110.merylIndex:md5,ba35223b3ac43b389413c605bf035a6d", + "0x011111.merylData:md5,90e7bcb05dcf23278421ce8a02d4deed", + "0x011111.merylIndex:md5,8bcb85c1115c6a4bc5b5f0e177a76bde", + "0x100000.merylData:md5,80f244202eef29232d350c0faa2abeda", + "0x100000.merylIndex:md5,37bebd00de3b3af3e55c444661e3961f", + "0x100001.merylData:md5,a205e2871b8637e32b6eb5272f7d5290", + "0x100001.merylIndex:md5,49e5e583346b4491b1586c86213118f0", + "0x100010.merylData:md5,2b320d66ce30f8fea1a626278c421220", + "0x100010.merylIndex:md5,c7107b6651d2ea4c2e303bf0eb5d4a6a", + "0x100011.merylData:md5,35ef5544dc557711302340bae1e41d40", + "0x100011.merylIndex:md5,b3afac9563c6ac916010322d6226e729", + "0x100100.merylData:md5,17a8f1975e868ccdca0d3b6e72c5d76a", + "0x100100.merylIndex:md5,9b8d65f01d22e3873d50e5db6d7711f5", + "0x100101.merylData:md5,d3d0250646185c5bfeec43a0490d775f", + "0x100101.merylIndex:md5,d072b261cbd89375078cecd73f20016a", + "0x100110.merylData:md5,1e7497fafc102ca23a35111deb992816", + "0x100110.merylIndex:md5,873ca65e4ef4d432fc356a85beaa4063", + "0x100111.merylData:md5,fe791c9598de38dfa75496558a8b2f28", + "0x100111.merylIndex:md5,369c608a46fe76cbc77715d163153bfb", + "0x101000.merylData:md5,d89e7ae06de81df678021213e9808b4b", + "0x101000.merylIndex:md5,43160d471884a484f3862750d44c2788", + "0x101001.merylData:md5,8cd9b88142c08c412371e9ef66d59ef9", + "0x101001.merylIndex:md5,6a5650d1c9793eeb2781fb9e57b14784", + "0x101010.merylData:md5,0f17f7e3dfe8c2ec5c469597c5e66134", + "0x101010.merylIndex:md5,fa2913d514e183a3c4cba31cc422dff4", + "0x101011.merylData:md5,f8ab9821eebfdedabb61a106abdce55c", + "0x101011.merylIndex:md5,8a5a07b1d07b0b7d71943c0980c0755e", + "0x101100.merylData:md5,6a969c16cc7a522ebb1f0be5fc81056e", + "0x101100.merylIndex:md5,5f12c2413a9ddca0751e4b2034ebdc87", + "0x101101.merylData:md5,9cc1443daf53adcf2d95c4fd0f8d49de", + "0x101101.merylIndex:md5,19dcebf34036938fed8984d8e100b579", + "0x101110.merylData:md5,f0d63a933d58c9c5f0bd5885adfa0dfe", + "0x101110.merylIndex:md5,d6517f33c2c4667b5c53f8b099a1f8fe", + "0x101111.merylData:md5,87706ddcd8927988661d8e64e69c0723", + "0x101111.merylIndex:md5,fc9671ff0358c2350a650ac1763a3368", + "0x110000.merylData:md5,63ce769d2987235e28d567b3b64585c1", + "0x110000.merylIndex:md5,6f7997e8622eeb89fdbd774d8cd98ba2", + "0x110001.merylData:md5,0d3d10723737ac2d1037e1fe576acb22", + "0x110001.merylIndex:md5,f27c0d1169639ae9e081b39afc3757f5", + "0x110010.merylData:md5,3b92d7921670a6c4a4394c84286a3837", + "0x110010.merylIndex:md5,ff12c1af64828ca8d054acea6ebe3440", + "0x110011.merylData:md5,9eb8aba55e32e31d064a584682607037", + "0x110011.merylIndex:md5,9e5f773d3e6472581bb72f3185d4dc16", + "0x110100.merylData:md5,e4a2e750379ad0c4f427b7fb39059412", + "0x110100.merylIndex:md5,12473637233e2ad57e71ae72dba34d78", + "0x110101.merylData:md5,1b9341b1a03a059abec2bc5e53c31c29", + "0x110101.merylIndex:md5,b5e63433b6765efb23cec511cee9175f", + "0x110110.merylData:md5,d7109486ca2eb7e38ec53984be463f9e", + "0x110110.merylIndex:md5,74e8295e9a08f3040e904d7f7be7d8d1", + "0x110111.merylData:md5,75590d1bf3590e64503563e8f441e7cc", + "0x110111.merylIndex:md5,292000207b3bed4cf8c388dceaa6600f", + "0x111000.merylData:md5,d59dbabc5bd07bbb00cb9bd943ec68eb", + "0x111000.merylIndex:md5,fc8b47e18240bb9c47e1e84bcf58d862", + "0x111001.merylData:md5,557bfc214b1711ca86fb708a9c29608d", + "0x111001.merylIndex:md5,2d862224cd86c6ae27d45efb320442c4", + "0x111010.merylData:md5,8f055963758daaac43f47b4b8256b114", + "0x111010.merylIndex:md5,83decf260813123b92cb1ed73e135476", + "0x111011.merylData:md5,8d842899193a5001b5f29b19689bde4c", + "0x111011.merylIndex:md5,b287e4892670a8efd434a38cc822f0c3", + "0x111100.merylData:md5,f9fda990220a23ecee48abecfd338d2f", + "0x111100.merylIndex:md5,a6fda3f1e2328b22aa6fc9ffc2fa78f6", + "0x111101.merylData:md5,1f365b5dcede12ce0f58df73de213ab1", + "0x111101.merylIndex:md5,3ff34e0a24e0450a84f46785d7508ea5", + "0x111110.merylData:md5,50f0a65e10c92b8315294ef52b20fc4a", + "0x111110.merylIndex:md5,07f0179b757af0593f9120c98b7b9052", + "0x111111.merylData:md5,1459a239b18d6e7a23bef1e91b1b1be3", + "0x111111.merylIndex:md5,e4fcdb894e33dbda5da04fa7ff3fda51", + "merylIndex:md5,3eb997b0370a1bf31aa77328f143573e" + ] + ] + ], + "versions": [ + "versions.yml:md5,c97980ac5ebd37a77768c105861ad719" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-27T10:19:25.091170112" + }, + "sarscov2 - fastq - paired_end": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "0x000000.merylData:md5,75f3969bef1e3b030f404a5206d6b249", + "0x000000.merylIndex:md5,b18113193945289fa1c20e96411e6ad2", + "0x000001.merylData:md5,8826eb52c3d06b5a092cb9a1f747e413", + "0x000001.merylIndex:md5,72a68ddfd9900e2db4a38f8a0ae48356", + "0x000010.merylData:md5,b11a404bf18f87ae565d8e60b63a0f2f", + "0x000010.merylIndex:md5,b518574321a3ab6d5eca385a4d6c4c10", + "0x000011.merylData:md5,055292edb4ea604a90a749c07528477e", + "0x000011.merylIndex:md5,d2aa5bdd749babc771d98185b9da96d1", + "0x000100.merylData:md5,a092b9ae90e5096bf819f8eaeec15873", + "0x000100.merylIndex:md5,1950c77b8985b4e516ceca2df12ffe24", + "0x000101.merylData:md5,1d02c628dda5eeec4f30674fffb1955c", + "0x000101.merylIndex:md5,f0c3dc05caae4af498e54f3263e6436f", + "0x000110.merylData:md5,62ce2f63040efa731d731abb8e76ccc0", + "0x000110.merylIndex:md5,adbf5072a6b7a096b9eba54482c26572", + "0x000111.merylData:md5,37912c49ffe875b835f8f4780ee52706", + "0x000111.merylIndex:md5,16392081f93560ed66a14d28eb26cd15", + "0x001000.merylData:md5,9826f31aee64d0cc96dff5da6996f0e6", + "0x001000.merylIndex:md5,849691b9f41cbba9158b30ee19f32b9d", + "0x001001.merylData:md5,1a617074700788e78b4ffc3575980adf", + "0x001001.merylIndex:md5,cafd9628934092a38eff45d2250ac466", + "0x001010.merylData:md5,7f93e8ac5ae70ad104140d032a37a295", + "0x001010.merylIndex:md5,866787afefa6acd99199d0eac8ced9e8", + "0x001011.merylData:md5,b77639289243a8fb7a43745986eab590", + "0x001011.merylIndex:md5,06724a52696784a94d33b2d23acc8873", + "0x001100.merylData:md5,20862f1f92786588de42140362672d38", + "0x001100.merylIndex:md5,c5468a40dff4268c978cc1918610b7d7", + "0x001101.merylData:md5,274002b8f45eb9ca54fad4db3d3aca02", + "0x001101.merylIndex:md5,b543aaf4d975360e23a692e44e605168", + "0x001110.merylData:md5,b55c68ee98e39ff9327f609ed2438e00", + "0x001110.merylIndex:md5,4b3da649a6bc53936fa23c173cbc4f21", + "0x001111.merylData:md5,abdc96b88d2f1fbed3c99a33a1eef45a", + "0x001111.merylIndex:md5,1758e12d5d8cf4ba9eeafe3bc01231f8", + "0x010000.merylData:md5,0c26808742826bddfeb43b7bc7d238bb", + "0x010000.merylIndex:md5,0c2b47836a4584765343fdf3a96246e8", + "0x010001.merylData:md5,f1dc27b017b36dbf72852b422e83d016", + "0x010001.merylIndex:md5,0b8a6db458ba4f63c36a61f487455145", + "0x010010.merylData:md5,a57d01b52bcbdd8608999e342102c146", + "0x010010.merylIndex:md5,635007bb466089cd3e202b68b8c66d74", + "0x010011.merylData:md5,37371dd1409929adee11133b5f03d3a7", + "0x010011.merylIndex:md5,492653df27505b88e3acc309c02bb8c7", + "0x010100.merylData:md5,517efaeccd253932d2a53f1d8068bde3", + "0x010100.merylIndex:md5,a61da37cd8e0d8de98f8e15b868341d7", + "0x010101.merylData:md5,9279f4e25c7b4b10f0181f661f3a12d2", + "0x010101.merylIndex:md5,c09553e7f106e4c62e2004f8c7f15ade", + "0x010110.merylData:md5,2579c222fbbd1e45fac5f44d080b5464", + "0x010110.merylIndex:md5,b7ba0385367bcb978c737a2778c9fbd4", + "0x010111.merylData:md5,c403bc281ff88cd996aa54d16c808e23", + "0x010111.merylIndex:md5,2d4c515b1b65e2fd0da877ff5d29f80c", + "0x011000.merylData:md5,ab856ffad72bf9a55fdc5f838eb4051e", + "0x011000.merylIndex:md5,86d657bc906e475cb714d704d41c7565", + "0x011001.merylData:md5,b64664fa97dab9df2e3b4e247f396f67", + "0x011001.merylIndex:md5,67ab51e1233ae97f976fdd24997bd859", + "0x011010.merylData:md5,6530932b97c9149c94174d5e229a14a9", + "0x011010.merylIndex:md5,e4a6f8cc99486fe79509be98a0c2841d", + "0x011011.merylData:md5,58357359932e814a983f0ce26acf5115", + "0x011011.merylIndex:md5,4426d81216c7a2dae734cf70536cf6bb", + "0x011100.merylData:md5,eb75a337c0649a58727dc3292e4d25db", + "0x011100.merylIndex:md5,a94b932a0583180d3027d445755e37f8", + "0x011101.merylData:md5,c494378696f831deebad0e0fe2db1881", + "0x011101.merylIndex:md5,ef00cd5e7255d4b751140fd0c83400a1", + "0x011110.merylData:md5,abec95fb53891ca69dd1e7ea20189204", + "0x011110.merylIndex:md5,bc2b1a21e91760ad49897097071df011", + "0x011111.merylData:md5,4b858e2a28860f789e8a5dc62e062557", + "0x011111.merylIndex:md5,5eed11ba178f7f9559625364d96aa41c", + "0x100000.merylData:md5,768528aaafba818f8e34d4b65de5242e", + "0x100000.merylIndex:md5,6649d5940b0a60b289dce7073de4777d", + "0x100001.merylData:md5,d0ef60de56a5dc1cec3606e3f07620c2", + "0x100001.merylIndex:md5,26d0852978fc3a8972aec67cebcc0f28", + "0x100010.merylData:md5,5b5a0fd3be35a954597a1c88ed3912ab", + "0x100010.merylIndex:md5,68c7135add32c8aac3c4207a7db7d37a", + "0x100011.merylData:md5,d8c188713b5379ba7e53bd7ac26baed5", + "0x100011.merylIndex:md5,4a9ed0a918945a7e9602427e23bd955c", + "0x100100.merylData:md5,68403d2ad355e2f9f9b8032616c6fbab", + "0x100100.merylIndex:md5,2fe6f882ae22d87581300c3b9b24242b", + "0x100101.merylData:md5,a6102a49c8b51870bf14b6ace728cfa1", + "0x100101.merylIndex:md5,f5b56f5edb9f55973288aab6b0c81467", + "0x100110.merylData:md5,418f44aecc5beb96d4fe9d5c22e5d8df", + "0x100110.merylIndex:md5,3b93d1b48ce9314ed0946e7a4d1b6c19", + "0x100111.merylData:md5,1cce84d0d61511837a70bb48aab84a20", + "0x100111.merylIndex:md5,42d17c375dccd68da727f531cc05a9fa", + "0x101000.merylData:md5,e2f713f0fb453506b18db92609a1fdff", + "0x101000.merylIndex:md5,f9fa2ccd8b89aa7147130c7dac705ce0", + "0x101001.merylData:md5,1cde5e30da7e245689c7c7a7006ebc40", + "0x101001.merylIndex:md5,f3d6a5e2eeb01dffaf6ebd04793d269b", + "0x101010.merylData:md5,088d7310df61d7917f3b49cc5ca1bef5", + "0x101010.merylIndex:md5,5de136cfda775349c75d47e5c5bae16b", + "0x101011.merylData:md5,c37a7fd125f9563760f0a7b065fb99f5", + "0x101011.merylIndex:md5,7374a2a00f9cf1fb4760dd6c68ce05de", + "0x101100.merylData:md5,3c76f864ab548adfb4d8f11869ab7b3a", + "0x101100.merylIndex:md5,e65c609b7b05a34a75c3eb7fbef9a488", + "0x101101.merylData:md5,8faec3c432a9fcaf7d6413a9966d15e7", + "0x101101.merylIndex:md5,c4fb9020e3b1690f5d4717be5384427d", + "0x101110.merylData:md5,92fb3c0d061a4d258bdde77c904312ab", + "0x101110.merylIndex:md5,0518b5e9eb8cecedd4da3a0470fbb43d", + "0x101111.merylData:md5,7f2174eee07aa116cffb77f85910efec", + "0x101111.merylIndex:md5,f7ecf59ae53a3a38cc4b7c2509379b3a", + "0x110000.merylData:md5,8c5866a1e6932eb777fe6e72c1090e1e", + "0x110000.merylIndex:md5,fdcca3797ca34cdbb3d6808847c111d5", + "0x110001.merylData:md5,02cc9f0ece95b69c6dfe3f04a0425f92", + "0x110001.merylIndex:md5,d545188ef68c84c1c653e23f6fae4ef3", + "0x110010.merylData:md5,665d40c5e306952883fe2ffa641024bb", + "0x110010.merylIndex:md5,445e745bd1f34502437541fafbb21943", + "0x110011.merylData:md5,e32f9db7cfb6dfa243f45258f1b55041", + "0x110011.merylIndex:md5,6e93712a47efaf6a4656c0dbeb1e5b1a", + "0x110100.merylData:md5,af978fc2cc304f2aee3f06416a1a43aa", + "0x110100.merylIndex:md5,ed97271331d8bb4eabbd0978cd4b9d23", + "0x110101.merylData:md5,a7bdc73355bea8749db38966fb7c968d", + "0x110101.merylIndex:md5,b30ff36567bede03396e67e973d4fdf9", + "0x110110.merylData:md5,0ee1f4b187ce88567262d3a6302f3f2a", + "0x110110.merylIndex:md5,505cab345465852c8284d190e91ce7fa", + "0x110111.merylData:md5,02929a0fd245f27576d794c98443ed52", + "0x110111.merylIndex:md5,8b70850b1775790354ff00ffcfb9df65", + "0x111000.merylData:md5,21cb35b24f60b6c69c49c327d1fd797f", + "0x111000.merylIndex:md5,7a54391084d2354b534bbf238631a80e", + "0x111001.merylData:md5,3c864da93bf29a8a0665cd83e1b612e7", + "0x111001.merylIndex:md5,4504239cfc112fcf6e9dba44e6f9f488", + "0x111010.merylData:md5,9d08a9742799fd0ab5b29f184667cb7c", + "0x111010.merylIndex:md5,b67161fd14e224f11a592691fe08e0e5", + "0x111011.merylData:md5,f5a09c0f5faa10aaad17efe454ff9395", + "0x111011.merylIndex:md5,75306fb2397e61a0910a5034cb9309c9", + "0x111100.merylData:md5,6c1ddf20980ade712673d606c6f3dfbe", + "0x111100.merylIndex:md5,35642b10f80c44989de4131a4c2b9c95", + "0x111101.merylData:md5,a26af5a2348ddc4882eb06d4edb63b6f", + "0x111101.merylIndex:md5,e6affc54363b262b10e55267192cd68b", + "0x111110.merylData:md5,7a7f81ee6339c46bffe18de12c3a7177", + "0x111110.merylIndex:md5,07f0179b757af0593f9120c98b7b9052", + "0x111111.merylData:md5,0e63424ed0b9b5a399058dbea354ae64", + "0x111111.merylIndex:md5,b8c6b4cc0580f55e4767f1f4529d772b", + "merylIndex:md5,72fb8181bcbb783884da1c8c2ded4eff" + ] + ] + ], + "1": [ + "versions.yml:md5,c97980ac5ebd37a77768c105861ad719" + ], + "meryl_db": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "0x000000.merylData:md5,75f3969bef1e3b030f404a5206d6b249", + "0x000000.merylIndex:md5,b18113193945289fa1c20e96411e6ad2", + "0x000001.merylData:md5,8826eb52c3d06b5a092cb9a1f747e413", + "0x000001.merylIndex:md5,72a68ddfd9900e2db4a38f8a0ae48356", + "0x000010.merylData:md5,b11a404bf18f87ae565d8e60b63a0f2f", + "0x000010.merylIndex:md5,b518574321a3ab6d5eca385a4d6c4c10", + "0x000011.merylData:md5,055292edb4ea604a90a749c07528477e", + "0x000011.merylIndex:md5,d2aa5bdd749babc771d98185b9da96d1", + "0x000100.merylData:md5,a092b9ae90e5096bf819f8eaeec15873", + "0x000100.merylIndex:md5,1950c77b8985b4e516ceca2df12ffe24", + "0x000101.merylData:md5,1d02c628dda5eeec4f30674fffb1955c", + "0x000101.merylIndex:md5,f0c3dc05caae4af498e54f3263e6436f", + "0x000110.merylData:md5,62ce2f63040efa731d731abb8e76ccc0", + "0x000110.merylIndex:md5,adbf5072a6b7a096b9eba54482c26572", + "0x000111.merylData:md5,37912c49ffe875b835f8f4780ee52706", + "0x000111.merylIndex:md5,16392081f93560ed66a14d28eb26cd15", + "0x001000.merylData:md5,9826f31aee64d0cc96dff5da6996f0e6", + "0x001000.merylIndex:md5,849691b9f41cbba9158b30ee19f32b9d", + "0x001001.merylData:md5,1a617074700788e78b4ffc3575980adf", + "0x001001.merylIndex:md5,cafd9628934092a38eff45d2250ac466", + "0x001010.merylData:md5,7f93e8ac5ae70ad104140d032a37a295", + "0x001010.merylIndex:md5,866787afefa6acd99199d0eac8ced9e8", + "0x001011.merylData:md5,b77639289243a8fb7a43745986eab590", + "0x001011.merylIndex:md5,06724a52696784a94d33b2d23acc8873", + "0x001100.merylData:md5,20862f1f92786588de42140362672d38", + "0x001100.merylIndex:md5,c5468a40dff4268c978cc1918610b7d7", + "0x001101.merylData:md5,274002b8f45eb9ca54fad4db3d3aca02", + "0x001101.merylIndex:md5,b543aaf4d975360e23a692e44e605168", + "0x001110.merylData:md5,b55c68ee98e39ff9327f609ed2438e00", + "0x001110.merylIndex:md5,4b3da649a6bc53936fa23c173cbc4f21", + "0x001111.merylData:md5,abdc96b88d2f1fbed3c99a33a1eef45a", + "0x001111.merylIndex:md5,1758e12d5d8cf4ba9eeafe3bc01231f8", + "0x010000.merylData:md5,0c26808742826bddfeb43b7bc7d238bb", + "0x010000.merylIndex:md5,0c2b47836a4584765343fdf3a96246e8", + "0x010001.merylData:md5,f1dc27b017b36dbf72852b422e83d016", + "0x010001.merylIndex:md5,0b8a6db458ba4f63c36a61f487455145", + "0x010010.merylData:md5,a57d01b52bcbdd8608999e342102c146", + "0x010010.merylIndex:md5,635007bb466089cd3e202b68b8c66d74", + "0x010011.merylData:md5,37371dd1409929adee11133b5f03d3a7", + "0x010011.merylIndex:md5,492653df27505b88e3acc309c02bb8c7", + "0x010100.merylData:md5,517efaeccd253932d2a53f1d8068bde3", + "0x010100.merylIndex:md5,a61da37cd8e0d8de98f8e15b868341d7", + "0x010101.merylData:md5,9279f4e25c7b4b10f0181f661f3a12d2", + "0x010101.merylIndex:md5,c09553e7f106e4c62e2004f8c7f15ade", + "0x010110.merylData:md5,2579c222fbbd1e45fac5f44d080b5464", + "0x010110.merylIndex:md5,b7ba0385367bcb978c737a2778c9fbd4", + "0x010111.merylData:md5,c403bc281ff88cd996aa54d16c808e23", + "0x010111.merylIndex:md5,2d4c515b1b65e2fd0da877ff5d29f80c", + "0x011000.merylData:md5,ab856ffad72bf9a55fdc5f838eb4051e", + "0x011000.merylIndex:md5,86d657bc906e475cb714d704d41c7565", + "0x011001.merylData:md5,b64664fa97dab9df2e3b4e247f396f67", + "0x011001.merylIndex:md5,67ab51e1233ae97f976fdd24997bd859", + "0x011010.merylData:md5,6530932b97c9149c94174d5e229a14a9", + "0x011010.merylIndex:md5,e4a6f8cc99486fe79509be98a0c2841d", + "0x011011.merylData:md5,58357359932e814a983f0ce26acf5115", + "0x011011.merylIndex:md5,4426d81216c7a2dae734cf70536cf6bb", + "0x011100.merylData:md5,eb75a337c0649a58727dc3292e4d25db", + "0x011100.merylIndex:md5,a94b932a0583180d3027d445755e37f8", + "0x011101.merylData:md5,c494378696f831deebad0e0fe2db1881", + "0x011101.merylIndex:md5,ef00cd5e7255d4b751140fd0c83400a1", + "0x011110.merylData:md5,abec95fb53891ca69dd1e7ea20189204", + "0x011110.merylIndex:md5,bc2b1a21e91760ad49897097071df011", + "0x011111.merylData:md5,4b858e2a28860f789e8a5dc62e062557", + "0x011111.merylIndex:md5,5eed11ba178f7f9559625364d96aa41c", + "0x100000.merylData:md5,768528aaafba818f8e34d4b65de5242e", + "0x100000.merylIndex:md5,6649d5940b0a60b289dce7073de4777d", + "0x100001.merylData:md5,d0ef60de56a5dc1cec3606e3f07620c2", + "0x100001.merylIndex:md5,26d0852978fc3a8972aec67cebcc0f28", + "0x100010.merylData:md5,5b5a0fd3be35a954597a1c88ed3912ab", + "0x100010.merylIndex:md5,68c7135add32c8aac3c4207a7db7d37a", + "0x100011.merylData:md5,d8c188713b5379ba7e53bd7ac26baed5", + "0x100011.merylIndex:md5,4a9ed0a918945a7e9602427e23bd955c", + "0x100100.merylData:md5,68403d2ad355e2f9f9b8032616c6fbab", + "0x100100.merylIndex:md5,2fe6f882ae22d87581300c3b9b24242b", + "0x100101.merylData:md5,a6102a49c8b51870bf14b6ace728cfa1", + "0x100101.merylIndex:md5,f5b56f5edb9f55973288aab6b0c81467", + "0x100110.merylData:md5,418f44aecc5beb96d4fe9d5c22e5d8df", + "0x100110.merylIndex:md5,3b93d1b48ce9314ed0946e7a4d1b6c19", + "0x100111.merylData:md5,1cce84d0d61511837a70bb48aab84a20", + "0x100111.merylIndex:md5,42d17c375dccd68da727f531cc05a9fa", + "0x101000.merylData:md5,e2f713f0fb453506b18db92609a1fdff", + "0x101000.merylIndex:md5,f9fa2ccd8b89aa7147130c7dac705ce0", + "0x101001.merylData:md5,1cde5e30da7e245689c7c7a7006ebc40", + "0x101001.merylIndex:md5,f3d6a5e2eeb01dffaf6ebd04793d269b", + "0x101010.merylData:md5,088d7310df61d7917f3b49cc5ca1bef5", + "0x101010.merylIndex:md5,5de136cfda775349c75d47e5c5bae16b", + "0x101011.merylData:md5,c37a7fd125f9563760f0a7b065fb99f5", + "0x101011.merylIndex:md5,7374a2a00f9cf1fb4760dd6c68ce05de", + "0x101100.merylData:md5,3c76f864ab548adfb4d8f11869ab7b3a", + "0x101100.merylIndex:md5,e65c609b7b05a34a75c3eb7fbef9a488", + "0x101101.merylData:md5,8faec3c432a9fcaf7d6413a9966d15e7", + "0x101101.merylIndex:md5,c4fb9020e3b1690f5d4717be5384427d", + "0x101110.merylData:md5,92fb3c0d061a4d258bdde77c904312ab", + "0x101110.merylIndex:md5,0518b5e9eb8cecedd4da3a0470fbb43d", + "0x101111.merylData:md5,7f2174eee07aa116cffb77f85910efec", + "0x101111.merylIndex:md5,f7ecf59ae53a3a38cc4b7c2509379b3a", + "0x110000.merylData:md5,8c5866a1e6932eb777fe6e72c1090e1e", + "0x110000.merylIndex:md5,fdcca3797ca34cdbb3d6808847c111d5", + "0x110001.merylData:md5,02cc9f0ece95b69c6dfe3f04a0425f92", + "0x110001.merylIndex:md5,d545188ef68c84c1c653e23f6fae4ef3", + "0x110010.merylData:md5,665d40c5e306952883fe2ffa641024bb", + "0x110010.merylIndex:md5,445e745bd1f34502437541fafbb21943", + "0x110011.merylData:md5,e32f9db7cfb6dfa243f45258f1b55041", + "0x110011.merylIndex:md5,6e93712a47efaf6a4656c0dbeb1e5b1a", + "0x110100.merylData:md5,af978fc2cc304f2aee3f06416a1a43aa", + "0x110100.merylIndex:md5,ed97271331d8bb4eabbd0978cd4b9d23", + "0x110101.merylData:md5,a7bdc73355bea8749db38966fb7c968d", + "0x110101.merylIndex:md5,b30ff36567bede03396e67e973d4fdf9", + "0x110110.merylData:md5,0ee1f4b187ce88567262d3a6302f3f2a", + "0x110110.merylIndex:md5,505cab345465852c8284d190e91ce7fa", + "0x110111.merylData:md5,02929a0fd245f27576d794c98443ed52", + "0x110111.merylIndex:md5,8b70850b1775790354ff00ffcfb9df65", + "0x111000.merylData:md5,21cb35b24f60b6c69c49c327d1fd797f", + "0x111000.merylIndex:md5,7a54391084d2354b534bbf238631a80e", + "0x111001.merylData:md5,3c864da93bf29a8a0665cd83e1b612e7", + "0x111001.merylIndex:md5,4504239cfc112fcf6e9dba44e6f9f488", + "0x111010.merylData:md5,9d08a9742799fd0ab5b29f184667cb7c", + "0x111010.merylIndex:md5,b67161fd14e224f11a592691fe08e0e5", + "0x111011.merylData:md5,f5a09c0f5faa10aaad17efe454ff9395", + "0x111011.merylIndex:md5,75306fb2397e61a0910a5034cb9309c9", + "0x111100.merylData:md5,6c1ddf20980ade712673d606c6f3dfbe", + "0x111100.merylIndex:md5,35642b10f80c44989de4131a4c2b9c95", + "0x111101.merylData:md5,a26af5a2348ddc4882eb06d4edb63b6f", + "0x111101.merylIndex:md5,e6affc54363b262b10e55267192cd68b", + "0x111110.merylData:md5,7a7f81ee6339c46bffe18de12c3a7177", + "0x111110.merylIndex:md5,07f0179b757af0593f9120c98b7b9052", + "0x111111.merylData:md5,0e63424ed0b9b5a399058dbea354ae64", + "0x111111.merylIndex:md5,b8c6b4cc0580f55e4767f1f4529d772b", + "merylIndex:md5,72fb8181bcbb783884da1c8c2ded4eff" + ] + ] + ], + "versions": [ + "versions.yml:md5,c97980ac5ebd37a77768c105861ad719" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-27T10:19:40.09228319" + } +} \ No newline at end of file diff --git a/modules/nf-core/meryl/unionsum/tests/tags.yml b/modules/nf-core/meryl/unionsum/tests/tags.yml new file mode 100644 index 0000000..707dd78 --- /dev/null +++ b/modules/nf-core/meryl/unionsum/tests/tags.yml @@ -0,0 +1,2 @@ +meryl/unionsum: + - "modules/nf-core/meryl/unionsum/**" diff --git a/nextflow.config b/nextflow.config index c1f9bd8..45c855a 100644 --- a/nextflow.config +++ b/nextflow.config @@ -12,6 +12,7 @@ params { // TODO nf-core: Specify your pipeline's command line flags // Input options input = null + fasta = null // References genome = null igenomes_base = null @@ -25,6 +26,10 @@ params { // ncbigenomedownload options groups = 'all' + // merqury/meryl options + merqury_skip = false + kvalue = 21 + // BUSCO options busco_mode = 'proteins' // Should be hardcoded busco_lineage = 'auto' @@ -188,8 +193,9 @@ profiles { executor.cpus = 4 executor.memory = 8.GB } - test { includeConfig 'conf/test.config' } - test_full { includeConfig 'conf/test_full.config' } + test { includeConfig 'conf/test.config' } + test_nofastq { includeConfig 'conf/test_nofastq.config' } + test_full { includeConfig 'conf/test_full.config' } } // Set default registry for Apptainer, Docker, Podman and Singularity independent of -profile diff --git a/nextflow_schema.json b/nextflow_schema.json index 52fbf65..fbd2728 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -303,6 +303,19 @@ "type": "string", "description": "A path to a BUSCO config file (optional)" }, + "genome_only": { + "type": "string" + }, + "kvalue": { + "type": "integer", + "default": 21, + "description": "k size for meryl (merqury)" + }, + "merqury_skip": { + "type": "boolean", + "default": true, + "description": "Skip meryl/merqury step?" + }, "skip_tidk": { "type": "boolean", "description": "Do not run TIDK.", diff --git a/subworkflows/local/utils_nfcore_genomeqc_pipeline/main.nf b/subworkflows/local/utils_nfcore_genomeqc_pipeline/main.nf index 5a9a01f..fa2a613 100644 --- a/subworkflows/local/utils_nfcore_genomeqc_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_genomeqc_pipeline/main.nf @@ -147,14 +147,14 @@ def validateInputParameters() { // Validate channels from input samplesheet // def validateInputSamplesheet(input) { - def (meta, refseq, fasta, gff) = input + def (meta, refseq, fasta, gff, fastq) = input // As for now, there are only two input options: RefSeq ID or local files. The pipeline will throw an error if the sample sheet does not contain the proper information // For the RefSeq ID option if ( meta && refseq && !fasta && !gff ) { - return [ meta, refseq ] + return [ meta, refseq, fastq ] // For the local files option } else if ( meta && !refseq && fasta && gff) { - return [ meta, fasta, gff ] + return [ meta, fasta, gff, fastq ] } else { error("Please check input samplesheet -> Incorrent samplesheet format") } diff --git a/workflows/genomeqc.nf b/workflows/genomeqc.nf index a6a0557..91acd6a 100644 --- a/workflows/genomeqc.nf +++ b/workflows/genomeqc.nf @@ -3,7 +3,9 @@ IMPORT MODULES / SUBWORKFLOWS / FUNCTIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - +include { MERYL_UNIONSUM } from '../modules/nf-core/meryl/unionsum/main' +include { MERYL_COUNT } from '../modules/nf-core/meryl/count/main' +include { MERQURY_MERQURY } from '../modules/nf-core/merqury/merqury/main' include { CREATE_PATH } from '../modules/local/create_path' include { NCBIGENOMEDOWNLOAD } from '../modules/nf-core/ncbigenomedownload/main' include { PIGZ_UNCOMPRESS as UNCOMPRESS_FASTA } from '../modules/nf-core/pigz/uncompress/main' @@ -41,23 +43,21 @@ workflow GENOMEQC { validateInputSamplesheet(it) // Input validation (check local subworkflow) } .branch { - ncbi: it.size() == 2 - local: it.size() == 3 + ncbi: it.size() == 3 + local: it.size() == 4 } .set { ch_input } - // // MODULE: Run create_path - // + // ch_input.ncbi is now a 3-element tuple, last element is the fastq. We need to remove it before CREATE_PATH + ch_input.ncbi + | map { [it[0], it[1]] } + | CREATE_PATH - CREATE_PATH ( - ch_input.ncbi - ) // // MODULE: Run ncbigenomedownlaod // - NCBIGENOMEDOWNLOAD ( CREATE_PATH.out.meta, CREATE_PATH.out.accession, @@ -69,12 +69,10 @@ workflow GENOMEQC { // // Define gff and fasta varliables // - fasta = NCBIGENOMEDOWNLOAD.out.fna.mix( ch_input.local.map { [it[0],file(it[2])] } ) gff = NCBIGENOMEDOWNLOAD.out.gff.mix( ch_input.local.map { [it[0],file(it[1])] } ) - - // Uncompress files if necessary | Consider using brances as an alternative + // Uncompress files if necessary | Consider using brances as an alternative if (fasta.map { it[1].endsWith(".gz") } ) { ch_fasta = UNCOMPRESS_FASTA ( fasta ).file } else { @@ -82,13 +80,23 @@ workflow GENOMEQC { } // Uncompress gff if necessary - if (gff.map { it[1].endsWith(".gz") } ) { ch_gff = UNCOMPRESS_GFF ( gff ).file } else { ch_gff = gff } + // FASTQ file is optional in the samplesheet. + // First, get it like you do for gff and fasta + ch_fastq = ch_input.local.map{ [it[0], it[2]] }.mix(ch_input.ncbi.map{ [it[0],it[2]] }) + // Then, check to see that element 1 is not empty, and if not, make it file() + // You have to do this because if you pass in file() in the initial map, + // it'll fail if you don't supply a fastq, because you can't pass an empty to file() + ch_fastq + | map{meta, fq -> fq ? [meta, file(fq)] : [meta, fq]} + | filter { meta, fq -> fq && fq.name =~ /(\.fastq|\.fq|\.fastq\.gz|\.fq\.gz)$/ } + | set {ch_fastq} + // // Run TIDK // @@ -99,9 +107,45 @@ workflow GENOMEQC { ) } - // Run genome only or genome + gff + // Merqury: Evaluate genome assemblies with k-mers and more + // https://github.com/marbl/merqury + // Only run if not skipping and fastq is provided in the samplesheet + if (!params.merqury_skip && ch_fastq) { + // MODULE: MERYL_COUNT + MERYL_COUNT( + ch_fastq, + params.kvalue + ) + ch_meryl_db = MERYL_COUNT.out.meryl_db + ch_versions = ch_versions.mix(MERYL_COUNT.out.versions.first()) + // MODULE: MERYL_UNIONSUM + MERYL_UNIONSUM( + ch_meryl_db, + params.kvalue + ) + ch_meryl_union = MERYL_UNIONSUM.out.meryl_db + ch_versions = ch_versions.mix(MERYL_UNIONSUM.out.versions.first()) + // MODULE: MERQURY_MERQURY + ch_meryl_union + | join(ch_fastq) + | set {ch_merqury_inputs} + MERQURY_MERQURY ( ch_merqury_inputs ) + ch_merqury_qv = MERQURY_MERQURY.out.assembly_qv + ch_merqury_stats = MERQURY_MERQURY.out.stats + ch_merqury_spectra_cn_fl_png = MERQURY_MERQURY.out.spectra_cn_fl_png + ch_merqury_spectra_asm_fl_png = MERQURY_MERQURY.out.spectra_asm_fl_png + ch_hapmers_blob_png = MERQURY_MERQURY.out.hapmers_blob_png + ch_merqury_outputs = ch_merqury_qv + | mix(ch_merqury_stats) + | mix(ch_merqury_spectra_cn_fl_png) + | mix(ch_merqury_spectra_asm_fl_png) + | mix(ch_hapmers_blob_png) + | flatMap { meta, data -> data } + ch_versions = ch_versions.mix(MERQURY_MERQURY.out.versions.first()) + } + // Run genome only or genome + gff if (params.genome_only) { GENOME ( ch_fasta @@ -116,7 +160,6 @@ workflow GENOMEQC { // // MODULE: Run TREE SUMMARY // - TREE_SUMMARY ( GENOME_AND_ANNOTATION.out.orthofinder, GENOME_AND_ANNOTATION.out.tree_data