diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 110de1157123..000000000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["nextflow.nextflow", "nf-core.nf-core-extensionpack"] -} diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index a2676d66e969..000000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "nextflow.formatting.harshilAlignment": true, - "yaml.schemas": { - "./modules/meta-schema.json": ["modules/nf-core/**/meta.yml"], - "./modules/environment-schema.json": ["modules/nf-core/**/environment.yml"], - "./subworkflows/yaml-schema.json": ["subworkflows/nf-core/**/meta.yml"] - } -} diff --git a/modules/nf-core/masurca/environment.yml b/modules/nf-core/masurca/environment.yml new file mode 100644 index 000000000000..c949d090cb48 --- /dev/null +++ b/modules/nf-core/masurca/environment.yml @@ -0,0 +1,10 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + # TODO nf-core: List required Conda package(s). + # Software MUST be pinned to channel (i.e. "bioconda"), version (i.e. "1.10"). + # For Conda, the build (i.e. "h9402c20_2") must be EXCLUDED to support installation on different operating systems. + - "bioconda::masurca=4.1.4" diff --git a/modules/nf-core/masurca/main.nf b/modules/nf-core/masurca/main.nf new file mode 100644 index 000000000000..468928e35d46 --- /dev/null +++ b/modules/nf-core/masurca/main.nf @@ -0,0 +1,137 @@ +process MASURCA { + tag "$meta.id" + label 'process_high' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'oras://community.wave.seqera.io/library/coreutils_file_masurca_mummer_perl:73ce913377915362': + 'community.wave.seqera.io/library/coreutils_file_masurca_mummer_perl:93f95b0aad1db22b' }" + + input: + tuple val(meta), path(illumina), path(jump), path(pacbio), path(nanopore), path(other_reads), path(reference_genome) + val fragment_mean + val fragment_stdev + val jump_mean + val jump_stdev + + + output: + tuple val(meta), path("assemble.sh") , emit: script + tuple val(meta), path("CA*/primary.genome.scf.fasta") , emit: scaffolds + tuple val(meta), path("*_masurca_config.txt") , emit: config + tuple val(meta), path("*-masurca.log") , emit: log + tuple val("${task.process}"), val('masurca'), eval("masurca --version | sed 's/version //g'"), topic: versions, emit: versions_masurca + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + //get input reads with absolute paths - illumina are mandatory, jump/pacbio/nanopore are optional + def illumina_reads = [illumina].flatten().collect { it.toRealPath() }.join(' ') + def jump_reads = jump ? [jump].flatten().collect { it.toRealPath() }.join(' ') : "" + def pacbio_file = pacbio ? pacbio.toRealPath() : "" + def nanopore_file = nanopore ? nanopore.toRealPath() : "" + def reference_genome_file = reference_genome ? reference_genome.toRealPath() : "" + + // Configuration parameters with defaults from task.ext + def extend_jump_reads = task.ext.extend_jump_reads != null ? task.ext.extend_jump_reads : 0 + def graph_kmer_size = task.ext.graph_kmer_size ?: 'auto' + def use_linking_mates = task.ext.use_linking_mates != null ? task.ext.use_linking_mates : 0 + def lhe_coverage = task.ext.lhe_coverage ?: 25 + def mega_reads_one_pass = task.ext.mega_reads_one_pass != null ? task.ext.mega_reads_one_pass : 0 + def limit_jump_coverage = task.ext.limit_jump_coverage ?: 300 + def ca_parameters = task.ext.ca_parameters ?: 'cgwErrorRate=0.15' + def close_gaps = task.ext.close_gaps != null ? task.ext.close_gaps : 0 + def jf_size = task.ext.jf_size ?: 200000000 + """ + echo "DATA" > ${prefix}_masurca_config.txt + echo "#Illumina paired end reads supplied as " >> ${prefix}_masurca_config.txt + echo "#if single-end, do not specify " >> ${prefix}_masurca_config.txt + echo "#MUST HAVE Illumina paired end reads to use MaSuRCA" >> ${prefix}_masurca_config.txt + echo "PE= pe ${fragment_mean} ${fragment_stdev} ${illumina_reads}" >> ${prefix}_masurca_config.txt + + # Jump/mate pair reads (optional) + if [ -n "${jump_reads}" ]; then + echo "#Illumina mate pair reads supplied as " >> ${prefix}_masurca_config.txt + echo "JUMP= sh ${jump_mean} ${jump_stdev} ${jump_reads}" >> ${prefix}_masurca_config.txt + fi + + # PacBio and Nanopore reads handling + # If both exist, concatenate them and supply as NANOPORE (per MaSuRCA docs) + if [ -n "${pacbio_file}" ] && [ -n "${nanopore_file}" ]; then + echo "#if you have both PacBio and Nanopore, supply both as NANOPORE type" >> ${prefix}_masurca_config.txt + cat ${pacbio_file} ${nanopore_file} > ${prefix}_long_reads.fastq.gz + echo "NANOPORE= ${prefix}_long_reads.fastq.gz" >> ${prefix}_masurca_config.txt + elif [ -n "${pacbio_file}" ]; then + echo "#PacBio/CCS reads must be in a single fasta or fastq file with absolute path" >> ${prefix}_masurca_config.txt + echo "PACBIO=${pacbio_file}" >> ${prefix}_masurca_config.txt + elif [ -n "${nanopore_file}" ]; then + echo "#Nanopore reads must be in a single fasta or fastq file with absolute path" >> ${prefix}_masurca_config.txt + echo "NANOPORE=${nanopore_file}" >> ${prefix}_masurca_config.txt + fi + + # Reference genome (optional) - for synteny-assisted assembly + if [ -n "${reference_genome_file}" ]; then + echo "#synteny-assisted assembly, concatenate all reference genomes into one reference.fa; works for Illumina-only data" >> ${prefix}_masurca_config.txt + echo "REFERENCE=${reference_genome_file}" >> ${prefix}_masurca_config.txt + fi + + echo "END" >> ${prefix}_masurca_config.txt + + + echo "" >> ${prefix}_masurca_config.txt + echo "PARAMETERS" >> ${prefix}_masurca_config.txt + echo "#set this to 1 if your Illumina jumping library reads are shorter than 100bp" >> ${prefix}_masurca_config.txt + echo "EXTEND_JUMP_READS=${extend_jump_reads}" >> ${prefix}_masurca_config.txt + echo "#this is k-mer size for deBruijn graph values between 25 and 127 are supported, auto will compute the optimal size based on the read data and GC content" >> ${prefix}_masurca_config.txt + echo "GRAPH_KMER_SIZE = ${graph_kmer_size}" >> ${prefix}_masurca_config.txt + echo "#set this to 1 for all Illumina-only assemblies" >> ${prefix}_masurca_config.txt + echo "#set this to 0 if you have more than 15x coverage by long reads (Pacbio or Nanopore) or any other long reads/mate pairs (Illumina MP, Sanger, 454, etc)" >> ${prefix}_masurca_config.txt + echo "USE_LINKING_MATES = ${use_linking_mates}" >> ${prefix}_masurca_config.txt + echo "#use at most this much coverage by the longest Pacbio or Nanopore reads, discard the rest of the reads" >> ${prefix}_masurca_config.txt + echo "#can increase this to 30 or 35 if your reads are short (N50<7000bp)" >> ${prefix}_masurca_config.txt + echo "LHE_COVERAGE=${lhe_coverage}" >> ${prefix}_masurca_config.txt + echo "#set to 0 (default) to do two passes of mega-reads for slower, but higher quality assembly, otherwise set to 1" >> ${prefix}_masurca_config.txt + echo "MEGA_READS_ONE_PASS=${mega_reads_one_pass}" >> ${prefix}_masurca_config.txt + echo "#this parameter is useful if you have too many Illumina jumping library mates. Typically set it to 60 for bacteria and 300 for the other organisms" >> ${prefix}_masurca_config.txt + echo "LIMIT_JUMP_COVERAGE = ${limit_jump_coverage}" >> ${prefix}_masurca_config.txt + echo "#these are the additional parameters to Celera Assembler. do not worry about performance, number or processors or batch sizes -- these are computed automatically." >> ${prefix}_masurca_config.txt + echo "#CABOG ASSEMBLY ONLY: set cgwErrorRate=0.25 for bacteria and 0.1<=cgwErrorRate<=0.15 for other organisms." >> ${prefix}_masurca_config.txt + echo "CA_PARAMETERS = ${ca_parameters}" >> ${prefix}_masurca_config.txt + echo "#CABOG ASSEMBLY ONLY: whether to attempt to close gaps in scaffolds with Illumina or long read data" >> ${prefix}_masurca_config.txt + echo "CLOSE_GAPS=${close_gaps}" >> ${prefix}_masurca_config.txt + echo "#number of cpus to use, set this to the number of CPUs/threads per node you will be using" >> ${prefix}_masurca_config.txt + echo "NUM_THREADS = ${task.cpus}" >> ${prefix}_masurca_config.txt + echo "#this is mandatory jellyfish hash size -- a safe value is estimated_genome_size*20" >> ${prefix}_masurca_config.txt + echo "JF_SIZE = ${jf_size}" >> ${prefix}_masurca_config.txt + echo "#ILLUMINA ONLY. Set this to 1 to use SOAPdenovo contigging/scaffolding module." >> ${prefix}_masurca_config.txt + echo "#Assembly will be worse but will run faster. Useful for very large (>=8Gbp) genomes from Illumina-only data" >> ${prefix}_masurca_config.txt + echo "SOAP_ASSEMBLY=0" >> ${prefix}_masurca_config.txt + echo "#If you are doing Hybrid Illumina paired end + Nanopore/PacBio assembly ONLY (no Illumina mate pairs or OTHER frg files)." >> ${prefix}_masurca_config.txt + echo "#Set this to 1 to use Flye assembler for final assembly of corrected mega-reads." >> ${prefix}_masurca_config.txt + echo "#A lot faster than CABOG, AND QUALITY IS THE SAME OR BETTER." >> ${prefix}_masurca_config.txt + echo "#Works well even when MEGA_READS_ONE_PASS is set to 1." >> ${prefix}_masurca_config.txt + echo "#DO NOT use if you have less than 15x coverage by long reads." >> ${prefix}_masurca_config.txt + echo "FLYE_ASSEMBLY=0" >> ${prefix}_masurca_config.txt + echo "END" >> ${prefix}_masurca_config.txt + + # Generate assembly script + masurca ${prefix}_masurca_config.txt + + ./assemble.sh > ${prefix}-masurca.log 2>&1 + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + mkdir -p CA + touch assemble.sh + touch ${prefix}_masurca_config.txt + touch CA/primary.genome.scf.fasta + touch ${prefix}-masurca.log + """ +} diff --git a/modules/nf-core/masurca/meta.yml b/modules/nf-core/masurca/meta.yml new file mode 100644 index 000000000000..69496bb5d4e6 --- /dev/null +++ b/modules/nf-core/masurca/meta.yml @@ -0,0 +1,76 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "masurca" +description: The MaSuRCA (Maryland Super Read Cabog Assembler) genome assembly and analysis toolkit +keywords: + - denovo + - assembly + - debruijn + - genomics +tools: + - "masurca": + description: "MaSuRCA (Maryland Super-Read Celera Assembler) genome assembly software." + homepage: "https://github.com/alekseyzimin/masurca/blob/v4.1.4/README.md" + documentation: "https://github.com/alekseyzimin/masurca/blob/v4.1.4/README.md" + tool_dev_url: "https://github.com/alekseyzimin/masurca" + doi: "10.1101/gr.213405.116" + licence: ["GPL v3"] + identifier: biotools:masurca + +input: + ### TODO nf-core: Add a description of all of the variables used as input + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - bam: + type: file + description: Sorted BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + ontologies: + - edam: "http://edamontology.org/format_2572" # BAM + - edam: "http://edamontology.org/format_2573" # CRAM + - edam: "http://edamontology.org/format_3462" # SAM + +output: + ### TODO nf-core: Add a description of all of the variables used as output + bam: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - "*.bam": + type: file + description: Sorted BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + ontologies: + - edam: "http://edamontology.org/format_2572" # BAM + - edam: "http://edamontology.org/format_2573" # CRAM + - edam: "http://edamontology.org/format_3462" # SAM + versions_masurca: + - - "${task.process}": + type: string + description: The name of the process + - "masurca": + type: string + description: The name of the tool + - "masurca --version": + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - masurca: + type: string + description: The name of the tool + - masurca --version: + type: eval + description: The expression to obtain the version of the tool +authors: + - "@LiaOb21" +maintainers: + - "@LiaOb21" diff --git a/modules/nf-core/masurca/tests/main.nf.test b/modules/nf-core/masurca/tests/main.nf.test new file mode 100644 index 000000000000..1f9d8f181c7e --- /dev/null +++ b/modules/nf-core/masurca/tests/main.nf.test @@ -0,0 +1,318 @@ +nextflow_process { + + name "Test Process MASURCA" + script "../main.nf" + process "MASURCA" + + tag "modules" + tag "modules_nfcore" + tag "masurca" + + test("homo_sapiens - illumina - single_end") { + + when { + process { + """ + input[0] = [ + [ id:'test'], + [file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz", checkIfExists: true)], + [], // no jump reads + [], // no pacbio + [], // no nanopore + [], // no other reads + [] // no reference genome + ] + input[1] = 500 // fragment_mean + input[2] = 50 // fragment_stdev + input[3] = 0 // jump_mean (not used) + input[4] = 0 // jump_stdev (not used) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.scaffolds, + process.out.script, + process.out.log, + process.out.versions_masurca + ).match() } + ) + } + + } + + test("homo_sapiens - illumina - paired_end") { + + when { + process { + """ + input[0] = [ + [ id:'test'], + [ + 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) + ], + [], // no jump reads + [], // no pacbio + [], // no nanopore + [], // no other reads + [] // no reference genome + ] + input[1] = 500 // fragment_mean + input[2] = 50 // fragment_stdev + input[3] = 0 // jump_mean (not used) + input[4] = 0 // jump_stdev (not used) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.scaffolds, + process.out.script, + process.out.log, + process.out.versions_masurca + ).match() } + ) + } + + } + + test("homo_sapiens - illumina - paired_end - with_jump") { + + when { + process { + """ + input[0] = [ + [ id:'test'], + [ + 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) + ], + [ + file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/fastq/test2_germline_1.fq.gz", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/fastq/test2_germline_2.fq.gz", checkIfExists: true) + ], + [], // no pacbio + [], // no nanopore + [], // no other reads + [] // no reference genome + ] + input[1] = 500 // fragment_mean + input[2] = 50 // fragment_stdev + input[3] = 3600 // jump_mean + input[4] = 200 // jump_stdev + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.scaffolds, + process.out.script, + process.out.log, + process.out.versions_masurca + ).match() } + ) + } + + } + + test("genomeassembler - hybrid - illumina_pacbio") { + + when { + process { + """ + input[0] = [ + [ id:'test'], + [ + file("https://raw.githubusercontent.com/nf-core/test-datasets/genomeassembler/A_thaliana_Col-0_2mb/SR_Col-0_test_data_1.fastq.gz", checkIfExists: true), + file("https://raw.githubusercontent.com/nf-core/test-datasets/genomeassembler/A_thaliana_Col-0_2mb/SR_Col-0_test_data_2.fastq.gz", checkIfExists: true) + ], + [], // no jump reads + [file("https://raw.githubusercontent.com/nf-core/test-datasets/genomeassembler/A_thaliana_Col-0_2mb/HiFi-Col-0_test_data.fastq.gz", checkIfExists: true)], + [], // no nanopore + [], // no other reads + [] // no reference genome + ] + input[1] = 500 // fragment_mean + input[2] = 50 // fragment_stdev + input[3] = 0 // jump_mean (not used) + input[4] = 0 // jump_stdev (not used) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.scaffolds, + process.out.script, + process.out.log, + process.out.versions_masurca + ).match() } + ) + } + + } + + test("genomeassembler - hybrid - illumina_nanopore") { + + when { + process { + """ + input[0] = [ + [ id:'test'], + [ + file("https://raw.githubusercontent.com/nf-core/test-datasets/genomeassembler/A_thaliana_Col-0_2mb/SR_Col-0_test_data_1.fastq.gz", checkIfExists: true), + file("https://raw.githubusercontent.com/nf-core/test-datasets/genomeassembler/A_thaliana_Col-0_2mb/SR_Col-0_test_data_2.fastq.gz", checkIfExists: true) + ], + [], // no jump reads + [], // no pacbio + [file("https://raw.githubusercontent.com/nf-core/test-datasets/genomeassembler/A_thaliana_Col-0_2mb/ONT-Col-0_test_data.fastq.gz", checkIfExists: true)], + [], // no other reads + [] // no reference genome + ] + input[1] = 500 // fragment_mean + input[2] = 50 // fragment_stdev + input[3] = 0 // jump_mean (not used) + input[4] = 0 // jump_stdev (not used) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.scaffolds, + process.out.script, + process.out.log, + process.out.versions_masurca + ).match() } + ) + } + + } + + test("genomeassembler - hybrid - illumina_pacbio_nanopore") { + + when { + process { + """ + input[0] = [ + [ id:'test'], + [ + file("https://raw.githubusercontent.com/nf-core/test-datasets/genomeassembler/A_thaliana_Col-0_2mb/SR_Col-0_test_data_1.fastq.gz", checkIfExists: true), + file("https://raw.githubusercontent.com/nf-core/test-datasets/genomeassembler/A_thaliana_Col-0_2mb/SR_Col-0_test_data_2.fastq.gz", checkIfExists: true) + ], + [], // no jump reads + [file("https://raw.githubusercontent.com/nf-core/test-datasets/genomeassembler/A_thaliana_Col-0_2mb/HiFi-Col-0_test_data.fastq.gz", checkIfExists: true)], + [file("https://raw.githubusercontent.com/nf-core/test-datasets/genomeassembler/A_thaliana_Col-0_2mb/ONT-Col-0_test_data.fastq.gz", checkIfExists: true)], + [], // no other reads + [] // no reference genome + ] + input[1] = 500 // fragment_mean + input[2] = 50 // fragment_stdev + input[3] = 0 // jump_mean (not used) + input[4] = 0 // jump_stdev (not used) + """ + } + } + + then { + assertAll( + { assert snapshot( + process.out.scaffolds, + process.out.script, + process.out.log, + process.out.versions_masurca + ).match() } + ) + } + + } + + test("sarscov2 - illumina - with_reference") { + + when { + process { + """ + input[0] = [ + [ id:'test'], + [ + 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) + ], + [], // no jump reads + [], // no pacbio + [], // no nanopore + [], // no other reads + [file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.fasta.gz", checkIfExists: true)] + ] + input[1] = 500 // fragment_mean + input[2] = 50 // fragment_stdev + input[3] = 0 // jump_mean (not used) + input[4] = 0 // jump_stdev (not used) + """ + } + } + + then { + assertAll( + { assert snapshot( + process.out.scaffolds, + process.out.script, + process.out.log, + process.out.versions_masurca + ).match() } + ) + } + + } + + test("sarscov2 - illumina - paired_end - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test'], + [ + file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + ], + [], // no jump reads + [], // no pacbio + [], // no nanopore + [], // no other reads + [] // no reference genome + ] + input[1] = 500 // fragment_mean + input[2] = 50 // fragment_stdev + input[3] = 0 // jump_mean (not used) + input[4] = 0 // jump_stdev (not used) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(sanitizeOutput(process.out)).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/nf-core/masurca/tests/main.nf.test.snap b/modules/nf-core/masurca/tests/main.nf.test.snap new file mode 100644 index 000000000000..d02445871f0e --- /dev/null +++ b/modules/nf-core/masurca/tests/main.nf.test.snap @@ -0,0 +1,450 @@ +{ + "sarscov2 - illumina - paired_end - with_jump": { + "content": [ + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-03-23T16:33:30.420661493" + }, + "homo_sapiens - illumina - single_end": { + "content": [ + [ + [ + { + "id": "test" + }, + "primary.genome.scf.fasta:md5,d3365e7157fb041cb4006a2d11001762" + ] + ], + [ + [ + { + "id": "test" + }, + "assemble.sh:md5,72fb3063dc7370a4b2a95b93234bcf0e" + ] + ], + [ + [ + { + "id": "test" + }, + "test-masurca.log:md5,2a5a4548af7550a71e43cc82068f415f" + ] + ], + [ + [ + "MASURCA", + "masurca", + "4.1.4" + ] + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.4" + }, + "timestamp": "2026-03-25T17:52:08.347930423" + }, + "genomeassembler - hybrid - illumina_pacbio_nanopore": { + "content": [ + [ + [ + { + "id": "test" + }, + "primary.genome.scf.fasta:md5,b4e3d34bb6c27bc38a5e5aafc9367bb1" + ] + ], + [ + [ + { + "id": "test" + }, + "assemble.sh:md5,1e0437f3c91ef409b9b743cc4dc4c3f5" + ] + ], + [ + [ + { + "id": "test" + }, + "test-masurca.log:md5,ef2bb59b6dd640565bad9825c540b032" + ] + ], + [ + [ + "MASURCA", + "masurca", + "4.1.4" + ] + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.4" + }, + "timestamp": "2026-03-25T18:05:57.515112182" + }, + "sarscov2 - illumina - paired_end": { + "content": [ + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-03-23T16:33:21.946468822" + }, + "sarscov2 - illumina - paired_end - stub": { + "content": [ + { + "config": [ + [ + { + "id": "test" + }, + "test_masurca_config.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test" + }, + "test-masurca.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "scaffolds": [ + [ + { + "id": "test" + }, + "primary.genome.scf.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "script": [ + [ + { + "id": "test" + }, + "assemble.sh:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_masurca": [ + [ + "MASURCA", + "masurca", + "4.1.4" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + }, + "timestamp": "2026-03-24T21:44:20.998579705" + }, + "genomeassembler - hybrid - illumina_pacbio": { + "content": [ + [ + [ + { + "id": "test" + }, + "primary.genome.scf.fasta:md5,f15d1bf333065e05cd96d46fe1c45f9f" + ] + ], + [ + [ + { + "id": "test" + }, + "assemble.sh:md5,dfe0ecc3e08715e5fdca93eed0c8f3bd" + ] + ], + [ + [ + { + "id": "test" + }, + "test-masurca.log:md5,e2f44ba808dfd6d759b97fb177d02049" + ] + ], + [ + [ + "MASURCA", + "masurca", + "4.1.4" + ] + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.4" + }, + "timestamp": "2026-03-25T18:01:40.129969288" + }, + "homo_sapiens - illumina - paired_end": { + "content": [ + [ + [ + { + "id": "test" + }, + "primary.genome.scf.fasta:md5,f8e715fa707cf39603cf09b700666d57" + ] + ], + [ + [ + { + "id": "test" + }, + "assemble.sh:md5,c4252fd02352bc365b95ac090c8bda6c" + ] + ], + [ + [ + { + "id": "test" + }, + "test-masurca.log:md5,6e9580c582a91f814b9870238e9d80ca" + ] + ], + [ + [ + "MASURCA", + "masurca", + "4.1.4" + ] + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.4" + }, + "timestamp": "2026-03-25T17:53:33.025513309" + }, + "sarscov2 - hybrid - illumina_nanopore": { + "content": [ + [ + + ], + [ + + ], + [ + + ], + [ + + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.4" + }, + "timestamp": "2026-03-23T16:39:05.105234025" + }, + "sarscov2 - illumina - single_end": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "config": [ + + ], + "contigs": [ + + ], + "flye_assembly": [ + + ], + "scaffolds": [ + + ], + "script": [ + + ], + "versions_masurca": [ + + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-03-20T16:53:14.230197251" + }, + "sarscov2 - hybrid - illumina_pacbio": { + "content": [ + [ + + ], + [ + + ], + [ + + ], + [ + + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.4" + }, + "timestamp": "2026-03-23T16:38:57.588039397" + }, + "homo_sapiens - illumina - paired_end - with_jump": { + "content": [ + [ + [ + { + "id": "test" + }, + "primary.genome.scf.fasta:md5,cae25f87f26c09f972eae5aa1cc65617" + ] + ], + [ + [ + { + "id": "test" + }, + "assemble.sh:md5,a14782d876cbb76684e7599489a84b0b" + ] + ], + [ + [ + { + "id": "test" + }, + "test-masurca.log:md5,7ed0e3502298ef267e4fc61758edb564" + ] + ], + [ + [ + "MASURCA", + "masurca", + "4.1.4" + ] + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.4" + }, + "timestamp": "2026-03-25T17:59:29.231599584" + }, + "genomeassembler - hybrid - illumina_nanopore": { + "content": [ + [ + [ + { + "id": "test" + }, + "primary.genome.scf.fasta:md5,2181552d037a61458d322f732fe814dd" + ] + ], + [ + [ + { + "id": "test" + }, + "assemble.sh:md5,b8268c6dcb9d7b36b7312967359a73b5" + ] + ], + [ + [ + { + "id": "test" + }, + "test-masurca.log:md5,635979d40fc9bc1e159a10185637bcbe" + ] + ], + [ + [ + "MASURCA", + "masurca", + "4.1.4" + ] + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.4" + }, + "timestamp": "2026-03-25T18:03:32.971062838" + }, + "sarscov2 - illumina - with_reference": { + "content": [ + [ + + ], + [ + + ], + [ + + ], + [ + + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.4" + }, + "timestamp": "2026-03-25T15:27:36.181316757" + } +} \ No newline at end of file