diff --git a/bin/juicer_tools.1.8.9_jcuda.0.8.jar b/bin/juicer_tools.1.8.9_jcuda.0.8.jar deleted file mode 100755 index 23e8968d..00000000 Binary files a/bin/juicer_tools.1.8.9_jcuda.0.8.jar and /dev/null differ diff --git a/conf/base.config b/conf/base.config index e4e16f2a..305e63ec 100755 --- a/conf/base.config +++ b/conf/base.config @@ -86,10 +86,6 @@ process { time = { 4.h * task.attempt } } - withName:CUSTOM_DUMPSOFTWAREVERSIONS { - cache = false - } - // IN CASES WHERE THERE IS ONE HIC FILE THIS WILL NEED ALMOST NOTHING withName:SAMTOOLS_MERGE { cpus = { 16 * 1 } @@ -226,7 +222,7 @@ process { memory = { 128.MB * Math.ceil( task.attempt * 1.5 ) } } - withName: JUICER_TOOLS_PRE { + withName: JUICERTOOLS_PRE { cpus = { 20 * task.attempt } memory = { 100.GB * task.attempt } } diff --git a/conf/modules.config b/conf/modules.config index 9905755d..3936d653 100755 --- a/conf/modules.config +++ b/conf/modules.config @@ -11,17 +11,10 @@ */ process { - withName: CUSTOM_DUMPSOFTWAREVERSIONS { - publishDir = [ - path: { "${params.outdir}/${task.process.tokenize(":")[-1].tokenize("_")[0].toLowerCase()}" }, - mode: params.publish_dir_mode, - pattern: "*_versions.yml" - ] - } // Files to be uploaded to the TreeVal JBrowse2 instance // .genome, .gz.{tbi|csi}, .bigBed, .bigWig, .paf - withName: "GENERATE_GENOME|TABIX_BGZIPTABIX|UCSC_BEDTOBIGBED|UCSC_BEDGRAPHTOBIGWIG|BED2BW_NORMAL|.*:SYNTENY:MINIMAP2_ALIGN|.*:.*:GENERATE_SORTED_GENOME:GNU_SORT|CUSTOM_GETCHROMSIZES" { + withName: "GENERATE_GENOME|TABIX_BGZIPTABIX|UCSC_BEDTOBIGBED|UCSC_BEDGRAPHTOBIGWIG|BED2BW_NORMAL|.*:SYNTENY:MINIMAP2_ALIGN" { publishDir = [ path: { "${params.outdir}/treeval_upload" }, mode: params.publish_dir_mode, @@ -94,12 +87,6 @@ process { ext.suffix = 'fasta' } - withName: 'GAWK_CLEAN_TELOMERE' { - ext.args2 = { "'/^>/'" } // Keep lines starting with '>' - ext.prefix = { "${meta.id}_CLEANED" } - ext.suffix = 'telomere' // Must end with telomere otherwise FIND_TELOMERE_WINDOWS will crash - } - withName: 'GAWK_MAP_TELO' { ext.args2 = { "-v OFS=\"\t\" 'BEGIN { sub(/^>/, \"\"); print \$1, \$4, \$5, \$6 }'" } ext.prefix = { "${meta.id}_map_telo" } @@ -201,7 +188,7 @@ process { withName: GNU_SORT_B { ext.args = { "-k1,1 -k2,2n -S${task.memory.mega - 100}M -T ." } - ext.suffix = { "sorted.genome" } + ext.suffix = { "sorted" } } withName: GNU_SORT_C { @@ -257,7 +244,7 @@ process { withName: ".*:.*:(GEN_ALIGNMENTS|RNA_ALIGNMENTS|CDS_ALIGNMENTS):MINIMAP2_ALIGN" { ext.args = {"-x splice ${meta.intron_size ? "-G ${meta.intron_size}" : "" } ${reference.size() > 2.5e9 ? (" -I " + Math.ceil(reference.size()/1e9)+"G") : ""} "} - ext.args2 = { "-T ${meta.id}_tmp" } + // ext.args2 = { "-T ${meta.id}_tmp" } ext.prefix = { "${meta.id}_alignment_${reference.getName().tokenize(".")[0]}" } } @@ -309,7 +296,7 @@ process { // withName: ".*:SYNTENY:MINIMAP2_ALIGN" { ext.args = "-t 8 -x asm10" - ext.args2 = { "-T ${meta.id}_tmp" } + // ext.args2 = { "-T ${meta.id}_tmp" } ext.prefix = { "${meta.id}_synteny_${reference.getName().tokenize(".")[0]}" } } @@ -416,7 +403,7 @@ process { // normal = standard run, pi = "pre-ingestion", hr = High res // withName: PRETEXTMAP_STANDRD { - ext.args = { "${meta.map_order.equals("length") ? "--sortby length": "--sortby nosort" } --mapq 0 --memory ${task.memory.giga}" } + ext.args = { "${meta.map_order.equals("length") ? "--sortby length": "--sortby nosort" } --mapq 0" } ext.prefix = { "${meta.id}_normal_pi" } } @@ -449,14 +436,8 @@ process { ext.prefix = { "${meta.id}_normal" } } - - withName: JUICER_TOOLS_PRE { - ext.juicer_tools_jar = "juicer_tools.1.8.9_jcuda.0.8.jar" - ext.juicer_jvm_params = "-Xms1g -Xmx36g" - } - withName: COOLER_CLOAD { - ext.args = "pairs -0 -c1 3 -p1 4 -c2 7 -p2 8" + ext.args = "-0 -c1 3 -p1 4 -c2 7 -p2 8" } withName: ".*:.*:(HIC_BAMTOBED_COOLER|HIC_BAMTOBED_JUICER):SAMTOOLS_MARKDUP" { @@ -464,11 +445,9 @@ process { } withName: ".*:.*:HIC_BWAMEM2:CRAM_FILTER_ALIGN_BWAMEM2_FIXMATE_SORT" { - ext.args = "" - ext.args1 = "-F0xB00 -nt" - ext.args2 = { "-5SPCp -H'${rglines}'" } - ext.args3 = "-mpu" - ext.args4 = { "--write-index -l1" } + ext.args = "-F0xB00 -nt" + ext.args1 = "-mpu" + ext.args2 = { "--write-index -l1" } } withName: ".*:.*:HIC_BWAMEM2:SAMTOOLS_MERGE" { @@ -476,11 +455,10 @@ process { } withName: ".*:.*:HIC_MINIMAP2:CRAM_FILTER_MINIMAP2_FILTER5END_FIXMATE_SORT" { - ext.args = "" - ext.args1 = "" - ext.args2 = { "-ax sr" } - ext.args3 = "-mpu" - ext.args4 = { "--write-index -l1" } + ext.args = "" + ext.args1 = { "-ax sr" } + ext.args2 = "-mpu" + ext.args3 = { "--write-index -l1" } } withName: ".*:.*:HIC_MINIMAP2:SAMTOOLS_MERGE" { diff --git a/main.nf b/main.nf index 0994dba1..fa402168 100755 --- a/main.nf +++ b/main.nf @@ -26,11 +26,6 @@ workflow { main: - params.mode = params.mode ?: "FULL" - params.binfile = params.binfile ?: false - params.juicer = params.juicer ?: false - params.run_hires = params.run_hires ?: true - // // SUBWORKFLOW: Run initialisation tasks // @@ -54,7 +49,6 @@ workflow { // WORKFLOW: Run main workflow // SANGERTOL_TREEVAL ( - PIPELINE_INITIALISATION.out.assembly_id, PIPELINE_INITIALISATION.out.reference, PIPELINE_INITIALISATION.out.map_order, PIPELINE_INITIALISATION.out.assem_reads, diff --git a/modules.json b/modules.json index a76d85aa..477bcf84 100644 --- a/modules.json +++ b/modules.json @@ -7,219 +7,266 @@ "nf-core": { "bedtools/bamtobed": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", - "installed_by": ["modules"] + "git_sha": "88d43dad73a675e66bff49ebb57fe657a5909018", + "installed_by": [ + "modules" + ] }, "bedtools/genomecov": { "branch": "master", - "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", - "installed_by": ["modules"] + "git_sha": "88d43dad73a675e66bff49ebb57fe657a5909018", + "installed_by": [ + "modules" + ] }, "bedtools/intersect": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "88d43dad73a675e66bff49ebb57fe657a5909018", + "installed_by": [ + "modules" + ] }, "bedtools/makewindows": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "88d43dad73a675e66bff49ebb57fe657a5909018", + "installed_by": [ + "modules" + ] }, "bedtools/map": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "88d43dad73a675e66bff49ebb57fe657a5909018", + "installed_by": [ + "modules" + ] }, "bedtools/merge": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "88d43dad73a675e66bff49ebb57fe657a5909018", + "installed_by": [ + "modules" + ] }, "bedtools/sort": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "88d43dad73a675e66bff49ebb57fe657a5909018", + "installed_by": [ + "modules" + ] }, "busco/busco": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"], - "patch": "modules/nf-core/busco/busco/busco-busco.diff" + "git_sha": "56925dff3062ca9387de65dd763568916b562124", + "installed_by": [ + "modules" + ] }, "bwamem2/index": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "5dd46a36fca68d6ad1a6b22ec47adc8c6863717d", + "installed_by": [ + "modules" + ] }, "cat/cat": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "7ed72ef972290b93d0bdd7c60ff00a693250f77a", + "installed_by": [ + "modules" + ] }, "cooler/cload": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "5d491ae33d61ab37e13850951b92ae7d6e3f4e31", + "installed_by": [ + "modules" + ] }, "cooler/zoomify": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] - }, - "custom/dumpsoftwareversions": { - "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] - }, - "custom/getchromsizes": { - "branch": "master", - "git_sha": "49f4e50534fe4b64101e62ea41d5dc43b1324358", - "installed_by": ["modules"], - "patch": "modules/nf-core/custom/getchromsizes/custom-getchromsizes.diff" + "git_sha": "5d491ae33d61ab37e13850951b92ae7d6e3f4e31", + "installed_by": [ + "modules" + ] }, "fastk/fastk": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"], - "patch": "modules/nf-core/fastk/fastk/fastk-fastk.diff" + "git_sha": "3bed0255027a76609032ebc321465c94207ef8ed", + "installed_by": [ + "modules" + ] }, "gawk": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", - "installed_by": ["modules"] + "git_sha": "76b1f53edcf72798d8515c82f4728ad44b3dd902", + "installed_by": [ + "modules" + ] }, "gnu/sort": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "5e748ff2b0f990949081c9e49792622eb3fe9ee9", + "installed_by": [ + "modules" + ] }, "gunzip": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", - "installed_by": ["modules"] + "git_sha": "96c57dfd98a0641886a67bd449fe33ee2ec0e374", + "installed_by": [ + "modules" + ] + }, + "juicertools/pre": { + "branch": "master", + "git_sha": "559ca10e059b42eaf1ccf580c0193c150ed3dc94", + "installed_by": [ + "modules" + ] }, "merquryfk/merquryfk": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"], - "patch": "modules/nf-core/merquryfk/merquryfk/merquryfk-merquryfk.diff" + "git_sha": "3bed0255027a76609032ebc321465c94207ef8ed", + "installed_by": [ + "modules" + ] }, "minimap2/align": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"], + "git_sha": "5c9f8d5b7671237c906abadc9ff732b301ca15ca", + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/minimap2/align/minimap2-align.diff" }, "minimap2/index": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "14980f759266eec42dac401fcafeb83d6c957b41", + "installed_by": [ + "modules" + ] }, "miniprot/align": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "installed_by": [ + "modules" + ] }, "miniprot/index": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", + "installed_by": [ + "modules" + ] }, "mummer": { "branch": "master", - "git_sha": "a15872dde4c4affaac2dfee6c3c65fadab4719bd", - "installed_by": ["modules"] + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "installed_by": [ + "modules" + ] }, "paftools/sam2paf": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "f84336b7fa91a65aa61d215b8c109fbb8e4b4ac6", + "installed_by": [ + "modules" + ] }, "pretextmap": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"], - "patch": "modules/nf-core/pretextmap/pretextmap.diff" + "git_sha": "000647dd5c075642ac90213b17f67f76236a7346", + "installed_by": [ + "modules" + ] }, "pretextsnapshot": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"], - "patch": "modules/nf-core/pretextsnapshot/pretextsnapshot.diff" + "git_sha": "2d0a16b1118f0112680222beeba2e4393c16dfe4", + "installed_by": [ + "modules" + ] }, "samtools/faidx": { "branch": "master", - "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", - "installed_by": ["modules"] - }, - "samtools/index": { - "branch": "master", - "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", - "installed_by": ["modules"] + "git_sha": "b2e78932ef01165fd85829513eaca29eff8e640a", + "installed_by": [ + "modules" + ] }, "samtools/markdup": { "branch": "master", - "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", - "installed_by": ["modules"] + "git_sha": "18ef126d5c91f6f4ad94fe6b939647771d5bc7b0", + "installed_by": [ + "modules" + ] }, "samtools/merge": { "branch": "master", - "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", - "installed_by": ["modules"] - }, - "samtools/sort": { - "branch": "master", - "git_sha": "b7800db9b069ed505db3f9d91b8c72faea9be17b", - "installed_by": ["modules"] - }, - "samtools/view": { - "branch": "master", - "git_sha": "669eb24fd82a9d3cb18ad0e73673ecb26827f683", - "installed_by": ["modules"] + "git_sha": "b2e78932ef01165fd85829513eaca29eff8e640a", + "installed_by": [ + "modules" + ] }, "seqkit/split2": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", - "installed_by": ["modules"], - "patch": "modules/nf-core/seqkit/split2/seqkit-split2.diff" + "git_sha": "55a02f55949516773979bbff82bf3f6bdb09456e", + "installed_by": [ + "modules" + ] }, "seqtk/cutn": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "a46713779030a5f508117080cbf4b693dd4c6e33", + "installed_by": [ + "modules" + ] }, "tabix/bgziptabix": { "branch": "master", - "git_sha": "f448e846bdadd80fc8be31fbbc78d9f5b5131a45", - "installed_by": ["modules"] + "git_sha": "91a902fb32d6717da38a9694eb4ad3fade53a8db", + "installed_by": [ + "modules" + ] }, "ucsc/bedgraphtobigwig": { "branch": "master", - "git_sha": "49f4e50534fe4b64101e62ea41d5dc43b1324358", - "installed_by": ["modules"] + "git_sha": "51f2b493a7ff28b40a9f99faca64245521f2bb24", + "installed_by": [ + "modules" + ] }, "ucsc/bedtobigbed": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", + "installed_by": [ + "modules" + ] }, "windowmasker/mkcounts": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "ed6f7d2e090911f69f0f3af563f5af9ba1fc1fa0", + "installed_by": [ + "modules" + ] }, "windowmasker/ustat": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "git_sha": "ed6f7d2e090911f69f0f3af563f5af9ba1fc1fa0", + "installed_by": [ + "modules" + ] }, "yahs": { "branch": "master", - "git_sha": "d3a3d04073af68437f07e0fb9b88aa6172c3f678", - "installed_by": ["modules"] + "git_sha": "b9837690be3f0296341829f656347d4662891daa", + "installed_by": [ + "modules" + ] } } } } } -} +} \ No newline at end of file diff --git a/modules/local/assign/ancestral/main.nf b/modules/local/assign/ancestral/main.nf index 5b94e625..c42711cd 100755 --- a/modules/local/assign/ancestral/main.nf +++ b/modules/local/assign/ancestral/main.nf @@ -19,7 +19,6 @@ process ASSIGN_ANCESTRAL { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ diff --git a/modules/local/cram/filter_align_bwamem2_fixmate_sort/main.nf b/modules/local/cram/filter_align_bwamem2_fixmate_sort/main.nf index ca706e28..cb772826 100755 --- a/modules/local/cram/filter_align_bwamem2_fixmate_sort/main.nf +++ b/modules/local/cram/filter_align_bwamem2_fixmate_sort/main.nf @@ -20,16 +20,14 @@ process CRAM_FILTER_ALIGN_BWAMEM2_FIXMATE_SORT { def args = task.ext.args ?: '' def args1 = task.ext.args1 ?: '' def args2 = task.ext.args2 ?: '' - def args3 = task.ext.args3 ?: '' - def args4 = task.ext.args4 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" // Please be aware one of the tools here required mem = 28 * reference size!!! """ cram_filter -n ${from}-${to} ${cramfile} - | \\ - samtools fastq ${args1} | \\ + samtools fastq ${args} | \\ bwa-mem2 mem -p ${bwaprefix} -t${task.cpus} -5SPCp -H'${rglines}' - | \\ - samtools fixmate ${args3} - - | \\ - samtools sort ${args4} -@${task.cpus} -T ${base}_${chunkid}_sort_tmp -o ${prefix}_${base}_${chunkid}_mem.bam - + samtools fixmate ${args1} - - | \\ + samtools sort ${args2} -@${task.cpus} -T ${base}_${chunkid}_sort_tmp -o ${prefix}_${base}_${chunkid}_mem.bam - cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -41,8 +39,6 @@ process CRAM_FILTER_ALIGN_BWAMEM2_FIXMATE_SORT { stub: def prefix = task.ext.prefix ?: "${meta.id}" - def base = "45022_3#2" - def chunkid = "1" """ touch ${prefix}_${base}_${chunkid}_mem.bam diff --git a/modules/local/cram/filter_minimap2_filter5end_fixmate_sort/main.nf b/modules/local/cram/filter_minimap2_filter5end_fixmate_sort/main.nf index 8d8d69e4..36799c72 100755 --- a/modules/local/cram/filter_minimap2_filter5end_fixmate_sort/main.nf +++ b/modules/local/cram/filter_minimap2_filter5end_fixmate_sort/main.nf @@ -8,6 +8,9 @@ process CRAM_FILTER_MINIMAP2_FILTER5END_FIXMATE_SORT { input: tuple val(meta), path(cramfile), path(cramindex), val(from), val(to), val(base), val(chunkid), val(rglines), val(ref), path(reference) + path(grep_pg_program_file) + path(filter_five_end_program_file) + path(awk_filter_reads_program_file) output: tuple val(meta), path("*.bam"), emit: mappedbam @@ -21,18 +24,17 @@ process CRAM_FILTER_MINIMAP2_FILTER5END_FIXMATE_SORT { def args1 = task.ext.args1 ?: '' def args2 = task.ext.args2 ?: '' def args3 = task.ext.args3 ?: '' - def args4 = task.ext.args4 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def VERSION = "1.15" // Staden_io versions break the pipeline """ cram_filter -n ${from}-${to} ${cramfile} - | \\ - samtools fastq ${args1} - | \\ - minimap2 -t${task.cpus} -R '${rglines}' ${args2} ${ref} - | \\ - ${projectDir}/bin/grep_pg.sh | \\ - perl ${projectDir}/bin/filter_five_end.pl | \\ - ${projectDir}/bin/awk_filter_reads.sh | \\ - samtools fixmate ${args3} - - | \\ - samtools sort ${args4} -@${task.cpus} -T ${base}_${chunkid}_sort_tmp -o ${prefix}_${base}_${chunkid}_mm.bam - + samtools fastq ${args} - | \\ + minimap2 -t${task.cpus} -R '${rglines}' ${args1} ${ref} - | \\ + ${grep_pg_program_file} | \\ + perl ${filter_five_end_program_file} | \\ + ${awk_filter_reads_program_file} | \\ + samtools fixmate ${args2} - - | \\ + samtools sort ${args3} -@${task.cpus} -T ${base}_${chunkid}_sort_tmp -o ${prefix}_${base}_${chunkid}_mm.bam - cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -44,8 +46,7 @@ process CRAM_FILTER_MINIMAP2_FILTER5END_FIXMATE_SORT { stub: def prefix = task.ext.prefix ?: "${meta.id}" - def base = "45022_3#2" - def chunkid = "1" + def VERSION = "1.15" // Staden_io versions break the pipeline """ touch ${prefix}_${base}_${chunkid}_mm.bam diff --git a/modules/local/extract/ancestral/main.nf b/modules/local/extract/ancestral/main.nf index eccf9d7f..23806814 100755 --- a/modules/local/extract/ancestral/main.nf +++ b/modules/local/extract/ancestral/main.nf @@ -21,9 +21,6 @@ process EXTRACT_ANCESTRAL { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - """ buscopainter.py -r $ancestraltable -q $fulltable diff --git a/modules/local/find/half_coverage/main.nf b/modules/local/find/half_coverage/main.nf index dd0a4d0c..0b4612d3 100755 --- a/modules/local/find/half_coverage/main.nf +++ b/modules/local/find/half_coverage/main.nf @@ -20,7 +20,6 @@ process FIND_HALF_COVERAGE { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "halfcoverage" """ findHalfcoverage.py -c $bedfile -m $my_genome -d $depthgraph > ${prefix}.bed diff --git a/modules/local/find/telomere_regions/main.nf b/modules/local/find/telomere_regions/main.nf index e5d9687f..aaa554e2 100755 --- a/modules/local/find/telomere_regions/main.nf +++ b/modules/local/find/telomere_regions/main.nf @@ -14,8 +14,6 @@ process FIND_TELOMERE_REGIONS { script: def prefix = task.ext.prefix ?: "${meta.id}" - def VERSION = "1.0" // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. - def find_telomere = task.ext.find_telomere ?: '' """ find_telomere ${file} $telomereseq > ${prefix}.telomere @@ -27,8 +25,6 @@ process FIND_TELOMERE_REGIONS { stub: def prefix = task.ext.prefix ?: "${meta.id}" - def VERSION = "1.0" // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. - def find_telomere = task.ext.find_telomere ?: '' """ touch ${prefix}.telomere diff --git a/modules/local/find/telomere_windows/main.nf b/modules/local/find/telomere_windows/main.nf index 2fcd0022..44fed6cd 100755 --- a/modules/local/find/telomere_windows/main.nf +++ b/modules/local/find/telomere_windows/main.nf @@ -10,6 +10,7 @@ process FIND_TELOMERE_WINDOWS { input: tuple val( meta ), path( file ) + path(telomere_jar_program_file) output: tuple val( meta ), file( "*.windows" ) , emit: windows @@ -18,11 +19,10 @@ process FIND_TELOMERE_WINDOWS { script: def prefix = task.ext.prefix ?: "${meta.id}" def VERSION = "1.0" // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. - def telomere_jar = task.ext.telomere_jar ?: '' def telomere_jvm_params = task.ext.telomere_jvm_params ?: '' def telomere_window_cut = task.ext.telomere_window_cut ?: 99.9 """ - java ${telomere_jvm_params} -cp ${projectDir}/bin/${telomere_jar} FindTelomereWindows $file $telomere_window_cut > ${prefix}.windows + java ${telomere_jvm_params} -cp ${telomere_jar_program_file} FindTelomereWindows $file $telomere_window_cut > ${prefix}.windows cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -33,7 +33,6 @@ process FIND_TELOMERE_WINDOWS { stub: def prefix = task.ext.prefix ?: "${meta.id}" def VERSION = "1.0" // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. - def telomere = task.ext.telomere ?: '' """ touch ${prefix}.windows diff --git a/modules/local/get/largest_scaffold/main.nf b/modules/local/get/largest_scaffold/main.nf deleted file mode 100755 index 646a2198..00000000 --- a/modules/local/get/largest_scaffold/main.nf +++ /dev/null @@ -1,40 +0,0 @@ -process GET_LARGEST_SCAFFOLD { - - tag "$meta.id" - label 'process_low' - - conda "conda-forge::coreutils=9.1" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : - 'docker.io/ubuntu:20.04' }" - - input: - tuple val( meta ), path( file ) - - output: - env largest_scaff , emit: scaff_size - path "versions.yml" , emit: versions - - script: - def VERSION = "9.1" // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. - """ - largest_scaff=\$(head -n 1 "${file}" | cut -d\$'\t' -f2) - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - coreutils: $VERSION - END_VERSIONS - """ - - stub: - def prefix = task.ext.prefix ?: "${meta.id}" - def VERSION = "9.1" // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. - """ - largest_scaff=1000000 - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - coreutils: $VERSION - END_VERSIONS - """ -} diff --git a/modules/local/get/paired_contact_bed/main.nf b/modules/local/get/paired_contact_bed/main.nf index e6d3a135..57b0b6a9 100755 --- a/modules/local/get/paired_contact_bed/main.nf +++ b/modules/local/get/paired_contact_bed/main.nf @@ -15,7 +15,6 @@ process GET_PAIRED_CONTACT_BED { path "versions.yml" , emit: versions script: - def pulled = '-T sort_tmp' """ bed_to_contacts.sh $file > pre.bed diff --git a/modules/local/graph/overall_coverage/main.nf b/modules/local/graph/overall_coverage/main.nf index 91949aac..1864b91e 100755 --- a/modules/local/graph/overall_coverage/main.nf +++ b/modules/local/graph/overall_coverage/main.nf @@ -18,7 +18,6 @@ process GRAPH_OVERALL_COVERAGE { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ graph_overall_coverage.pl $bed > ${prefix}.part diff --git a/modules/local/juicer/tools_pre/main.nf b/modules/local/juicer/tools_pre/main.nf deleted file mode 100755 index 12b46ce8..00000000 --- a/modules/local/juicer/tools_pre/main.nf +++ /dev/null @@ -1,40 +0,0 @@ -// Branched from https://github.com/sanger-tol/genomeassembly/blob/dev/modules/local/juicer_tools_pre.nf - -process JUICER_TOOLS_PRE { - tag "$meta.id" - label 'process_medium' - - conda "bioconda::java-jdk=8.0.112" - container "${ workflow.containerEngine == 'singularity' && - !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/java-jdk:8.0.112--1' : - 'biocontainers/java-jdk:8.0.112--1' }" - - input: - tuple val(meta), path(pairs) - path sizes - val prefix - - output: - tuple val(meta), path("*hic"), emit: hic - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def juicer_tools_jar = task.ext.juicer_tools_jar ?: '' - def juicer_jvm_params = task.ext.juicer_jvm_params ?: '' - """ - java ${juicer_jvm_params} \\ - -jar ${projectDir}/bin/${juicer_tools_jar} pre \\ - ${pairs} \\ - ${prefix}.hic \\ - ${sizes} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - juicer tools: \$(java ${juicer_jvm_params} -jar ${projectDir}/bin/${juicer_tools_jar} -V | grep "Juicer Tools Version" | sed 's/Juicer Tools Version //') - END_VERSIONS - """ -} diff --git a/modules/local/makecmap/cmap2bed/main.nf b/modules/local/makecmap/cmap2bed/main.nf index 8d7914db..f1e7147c 100755 --- a/modules/local/makecmap/cmap2bed/main.nf +++ b/modules/local/makecmap/cmap2bed/main.nf @@ -19,7 +19,6 @@ process MAKECMAP_CMAP2BED { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ grep -v '#' $cmap > ${prefix}_${enzyme}_edited.cmap diff --git a/modules/local/selfcomp/mapids/main.nf b/modules/local/selfcomp/mapids/main.nf index be40c76e..f3d41243 100755 --- a/modules/local/selfcomp/mapids/main.nf +++ b/modules/local/selfcomp/mapids/main.nf @@ -19,7 +19,6 @@ process SELFCOMP_MAPIDS { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ mapids.py -i $bed -r $agp > ${prefix}_mapped.bed @@ -32,7 +31,6 @@ process SELFCOMP_MAPIDS { """ stub: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}_mapped.bed diff --git a/modules/local/selfcomp/mummer2bed/main.nf b/modules/local/selfcomp/mummer2bed/main.nf index afac7c77..bbc060bd 100755 --- a/modules/local/selfcomp/mummer2bed/main.nf +++ b/modules/local/selfcomp/mummer2bed/main.nf @@ -32,7 +32,6 @@ process SELFCOMP_MUMMER2BED { """ stub: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.bed diff --git a/modules/local/selfcomp/splitfasta/main.nf b/modules/local/selfcomp/splitfasta/main.nf index 222d66a4..75999b80 100755 --- a/modules/local/selfcomp/splitfasta/main.nf +++ b/modules/local/selfcomp/splitfasta/main.nf @@ -19,7 +19,6 @@ process SELFCOMP_SPLITFASTA { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def VERSION = "1.7.8-1" """ @@ -34,7 +33,6 @@ process SELFCOMP_SPLITFASTA { """ stub: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def VERSION = "1.7.8-1" """ diff --git a/modules/local/subsample/bam/main.nf b/modules/local/subsample/bam/main.nf index 63419064..20431b11 100755 --- a/modules/local/subsample/bam/main.nf +++ b/modules/local/subsample/bam/main.nf @@ -15,7 +15,6 @@ process SUBSAMPLE_BAM { path "versions.yml", emit: versions script: - def prefix = task.ext.prefix ?: "${meta.id}" """ percentage=\$(wc -c ${mergedbam} | cut -d' ' -f1 | awk '{printf "%.2f\\n", 50000000000 / \$0}') diff --git a/modules/nf-core/bedtools/bamtobed/environment.yml b/modules/nf-core/bedtools/bamtobed/environment.yml index 5683bc05..45c307b0 100644 --- a/modules/nf-core/bedtools/bamtobed/environment.yml +++ b/modules/nf-core/bedtools/bamtobed/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/bedtools/bamtobed/main.nf b/modules/nf-core/bedtools/bamtobed/main.nf index bb8295dc..61c3e94a 100644 --- a/modules/nf-core/bedtools/bamtobed/main.nf +++ b/modules/nf-core/bedtools/bamtobed/main.nf @@ -1,18 +1,18 @@ process BEDTOOLS_BAMTOBED { - tag "$meta.id" + tag "${meta.id}" label 'process_medium' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' : - 'biocontainers/bedtools:2.31.1--hf5e1c6e_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' + : 'biocontainers/bedtools:2.31.1--hf5e1c6e_0'}" input: tuple val(meta), path(bam) output: tuple val(meta), path("*.bed"), emit: bed - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('bedtools'), eval("bedtools --version | sed -e 's/bedtools v//g'"), topic: versions, emit: versions_bedtools when: task.ext.when == null || task.ext.when @@ -23,24 +23,14 @@ process BEDTOOLS_BAMTOBED { """ bedtools \\ bamtobed \\ - $args \\ - -i $bam \\ + ${args} \\ + -i ${bam} \\ > ${prefix}.bed - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.bed - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ } diff --git a/modules/nf-core/bedtools/bamtobed/meta.yml b/modules/nf-core/bedtools/bamtobed/meta.yml index 20171885..4068f694 100644 --- a/modules/nf-core/bedtools/bamtobed/meta.yml +++ b/modules/nf-core/bedtools/bamtobed/meta.yml @@ -23,9 +23,10 @@ input: type: file description: Input BAM file pattern: "*.{bam}" + ontologies: [] output: - - bed: - - meta: + bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -34,11 +35,28 @@ output: type: file description: Bed file containing genomic intervals. pattern: "*.{bed}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_bedtools: + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool authors: - "@yuukiiwa" - "@drpatelh" diff --git a/modules/nf-core/bedtools/bamtobed/tests/main.nf.test b/modules/nf-core/bedtools/bamtobed/tests/main.nf.test index 297f1813..a8988d44 100644 --- a/modules/nf-core/bedtools/bamtobed/tests/main.nf.test +++ b/modules/nf-core/bedtools/bamtobed/tests/main.nf.test @@ -11,7 +11,7 @@ nextflow_process { test("sarscov2 - bam") { when { process { - """ + """ input[0] = [ [ id:'test' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.bam', checkIfExists: true) @@ -26,16 +26,15 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } test("stub") { options "-stub" - + when { process { - """ + """ input[0] = [ [ id:'test' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.bam', checkIfExists: true) @@ -47,10 +46,8 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.bed[0][1]).name).match() } + { assert snapshot(process.out).match() } ) } - } - } diff --git a/modules/nf-core/bedtools/bamtobed/tests/main.nf.test.snap b/modules/nf-core/bedtools/bamtobed/tests/main.nf.test.snap index d28ddd3e..07474690 100644 --- a/modules/nf-core/bedtools/bamtobed/tests/main.nf.test.snap +++ b/modules/nf-core/bedtools/bamtobed/tests/main.nf.test.snap @@ -1,9 +1,44 @@ { "stub": { "content": [ - "test.bed" + { + "0": [ + [ + { + "id": "test" + }, + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + "BEDTOOLS_BAMTOBED", + "bedtools", + "2.31.1" + ] + ], + "bed": [ + [ + { + "id": "test" + }, + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_bedtools": [ + [ + "BEDTOOLS_BAMTOBED", + "bedtools", + "2.31.1" + ] + ] + } ], - "timestamp": "2023-12-05T17:37:27.785556" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-01-21T10:40:40.234185059" }, "sarscov2 - bam": { "content": [ @@ -17,7 +52,11 @@ ] ], "1": [ - "versions.yml:md5,90a53b0acd234b4f7d125dadd0dbbdfb" + [ + "BEDTOOLS_BAMTOBED", + "bedtools", + "2.31.1" + ] ], "bed": [ [ @@ -27,11 +66,19 @@ "test.bed:md5,a6a299bd39dc56225f8029c05ea97dcb" ] ], - "versions": [ - "versions.yml:md5,90a53b0acd234b4f7d125dadd0dbbdfb" + "versions_bedtools": [ + [ + "BEDTOOLS_BAMTOBED", + "bedtools", + "2.31.1" + ] ] } ], - "timestamp": "2023-12-05T17:37:20.997988" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-01-21T10:40:32.731340605" } } \ No newline at end of file diff --git a/modules/nf-core/bedtools/bamtobed/tests/tags.yml b/modules/nf-core/bedtools/bamtobed/tests/tags.yml deleted file mode 100644 index 54510dda..00000000 --- a/modules/nf-core/bedtools/bamtobed/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -bedtools/bamtobed: - - "modules/nf-core/bedtools/bamtobed/**" diff --git a/modules/nf-core/bedtools/genomecov/main.nf b/modules/nf-core/bedtools/genomecov/main.nf index 35e2ab14..710da5b4 100644 --- a/modules/nf-core/bedtools/genomecov/main.nf +++ b/modules/nf-core/bedtools/genomecov/main.nf @@ -1,66 +1,57 @@ process BEDTOOLS_GENOMECOV { - tag "$meta.id" + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/63/6397750e9730a3fbcc5b4c43f14bd141c64c723fd7dad80e47921a68a7c3cd21/data': - 'community.wave.seqera.io/library/bedtools_coreutils:a623c13f66d5262b' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/63/6397750e9730a3fbcc5b4c43f14bd141c64c723fd7dad80e47921a68a7c3cd21/data' + : 'community.wave.seqera.io/library/bedtools_coreutils:a623c13f66d5262b'}" input: tuple val(meta), path(intervals), val(scale) - path sizes - val extension - val sort + path sizes + val extension + val sort output: tuple val(meta), path("*.${extension}"), emit: genomecov - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('bedtools'), eval("bedtools --version | sed -e 's/bedtools v//g'"), topic: versions, emit: versions_bedtools when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def args_list = args.tokenize() - args += (scale > 0 && scale != 1) ? " -scale $scale" : "" + args += scale > 0 && scale != 1 ? " -scale ${scale}" : "" if (!args_list.contains('-bg') && (scale > 0 && scale != 1)) { args += " -bg" } // Sorts output file by chromosome and position using additional options for performance and consistency // See https://www.biostars.org/p/66927/ for further details - def buffer = task.memory ? "--buffer-size=${task.memory.toGiga().intdiv(2)}G" : '' - def sort_cmd = sort ? "| LC_ALL=C sort --parallel=$task.cpus $buffer -k1,1 -k2,2n" : '' + def buffer = task.memory ? "--buffer-size=${task.memory.toGiga().intdiv(2)}G" : '' + def sort_cmd = sort ? "| LC_ALL=C sort --parallel=${task.cpus} ${buffer} -k1,1 -k2,2n" : '' def prefix = task.ext.prefix ?: "${meta.id}" if (intervals.name =~ /\.bam/) { """ bedtools \\ genomecov \\ - -ibam $intervals \\ - $args \\ - $sort_cmd \\ + -ibam ${intervals} \\ + ${args} \\ + ${sort_cmd} \\ > ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ - } else { + } + else { """ bedtools \\ genomecov \\ - -i $intervals \\ - -g $sizes \\ - $args \\ - $sort_cmd \\ + -i ${intervals} \\ + -g ${sizes} \\ + ${args} \\ + ${sort_cmd} \\ > ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ } @@ -68,10 +59,5 @@ process BEDTOOLS_GENOMECOV { def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ } diff --git a/modules/nf-core/bedtools/genomecov/meta.yml b/modules/nf-core/bedtools/genomecov/meta.yml index 9be3b3f9..69b911c2 100644 --- a/modules/nf-core/bedtools/genomecov/meta.yml +++ b/modules/nf-core/bedtools/genomecov/meta.yml @@ -55,13 +55,27 @@ output: description: Computed genome coverage file pattern: "*.${extension}" ontologies: [] + versions_bedtools: + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool +topics: versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool authors: - "@edmundmiller" - "@sruthipsuresh" diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap b/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap index da6dbe87..4175ae7c 100644 --- a/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ], "1": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ], "genomecov": [ [ @@ -21,16 +25,20 @@ "test.coverage.txt:md5,01291b6e1beab72e046653e709eb0e10" ] ], - "versions": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + "versions_bedtools": [ + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-05T11:59:33.898146" + "timestamp": "2026-01-21T11:30:01.187722797" }, "sarscov2 - no scale - stub": { "content": [ @@ -44,7 +52,11 @@ ] ], "1": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ], "genomecov": [ [ @@ -54,16 +66,20 @@ "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + "versions_bedtools": [ + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-05T11:59:52.483371" + "timestamp": "2026-01-21T11:30:16.248235814" }, "sarscov2 - scale": { "content": [ @@ -77,7 +93,11 @@ ] ], "1": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ], "genomecov": [ [ @@ -87,16 +107,20 @@ "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" ] ], - "versions": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + "versions_bedtools": [ + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-05T11:59:43.69501" + "timestamp": "2026-01-21T11:30:08.76325362" }, "sarscov2 - scale - stub": { "content": [ @@ -110,7 +134,11 @@ ] ], "1": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ], "genomecov": [ [ @@ -120,16 +148,20 @@ "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + "versions_bedtools": [ + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-05T12:00:09.930036" + "timestamp": "2026-01-21T11:30:32.324649338" }, "sarscov2 - no scale": { "content": [ @@ -143,7 +175,11 @@ ] ], "1": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ], "genomecov": [ [ @@ -153,16 +189,20 @@ "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" ] ], - "versions": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + "versions_bedtools": [ + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-05T11:59:25.448817" + "timestamp": "2026-01-21T11:29:54.109132031" }, "sarscov2 - dummy sizes - stub": { "content": [ @@ -176,7 +216,11 @@ ] ], "1": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ], "genomecov": [ [ @@ -186,15 +230,19 @@ "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + "versions_bedtools": [ + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-05T12:00:01.086433" + "timestamp": "2026-01-21T11:30:23.839839194" } } \ No newline at end of file diff --git a/modules/nf-core/bedtools/intersect/environment.yml b/modules/nf-core/bedtools/intersect/environment.yml index 5683bc05..45c307b0 100644 --- a/modules/nf-core/bedtools/intersect/environment.yml +++ b/modules/nf-core/bedtools/intersect/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/bedtools/intersect/main.nf b/modules/nf-core/bedtools/intersect/main.nf index d9e79e7f..4f7b1dac 100644 --- a/modules/nf-core/bedtools/intersect/main.nf +++ b/modules/nf-core/bedtools/intersect/main.nf @@ -1,11 +1,11 @@ process BEDTOOLS_INTERSECT { - tag "$meta.id" + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' : - 'biocontainers/bedtools:2.31.1--hf5e1c6e_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' + : 'biocontainers/bedtools:2.31.1--hf5e1c6e_0'}" input: tuple val(meta), path(intervals1), path(intervals2) @@ -13,7 +13,7 @@ process BEDTOOLS_INTERSECT { output: tuple val(meta), path("*.${extension}"), emit: intersect - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('bedtools'), eval("bedtools --version | sed -e 's/bedtools v//g'"), topic: versions, emit: versions_bedtools when: task.ext.when == null || task.ext.when @@ -24,36 +24,26 @@ process BEDTOOLS_INTERSECT { //Extension of the output file. It is set by the user via "ext.suffix" in the config. Corresponds to the file format which depends on arguments (e. g., ".bed", ".bam", ".txt", etc.). extension = task.ext.suffix ?: "${intervals1.extension}" def sizes = chrom_sizes ? "-g ${chrom_sizes}" : '' - if ("$intervals1" == "${prefix}.${extension}" || - "$intervals2" == "${prefix}.${extension}") - error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + if ("${intervals1}" == "${prefix}.${extension}" || "${intervals2}" == "${prefix}.${extension}") { + error("Input and output names are the same, use \"task.ext.prefix\" to disambiguate!") + } """ bedtools \\ intersect \\ - -a $intervals1 \\ - -b $intervals2 \\ - $args \\ - $sizes \\ + -a ${intervals1} \\ + -b ${intervals2} \\ + ${args} \\ + ${sizes} \\ > ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" extension = task.ext.suffix ?: "bed" - if ("$intervals1" == "${prefix}.${extension}" || - "$intervals2" == "${prefix}.${extension}") - error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + if ("${intervals1}" == "${prefix}.${extension}" || "${intervals2}" == "${prefix}.${extension}") { + error("Input and output names are the same, use \"task.ext.prefix\" to disambiguate!") + } """ touch ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ } diff --git a/modules/nf-core/bedtools/intersect/meta.yml b/modules/nf-core/bedtools/intersect/meta.yml index 45ecf377..0500efb9 100644 --- a/modules/nf-core/bedtools/intersect/meta.yml +++ b/modules/nf-core/bedtools/intersect/meta.yml @@ -21,10 +21,12 @@ input: type: file description: BAM/BED/GFF/VCF pattern: "*.{bam|bed|gff|vcf}" + ontologies: [] - intervals2: type: file description: BAM/BED/GFF/VCF pattern: "*.{bam|bed|gff|vcf}" + ontologies: [] - - meta2: type: map description: | @@ -34,23 +36,41 @@ input: type: file description: Chromosome sizes file pattern: "*{.sizes,.txt}" + ontologies: [] output: - - intersect: - - meta: + intersect: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.${extension}": type: file - description: File containing the description of overlaps found between the two - features + description: File containing the description of overlaps found between the + two features pattern: "*.${extension}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_bedtools: + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool authors: - "@edmundmiller" - "@sruthipsuresh" diff --git a/modules/nf-core/bedtools/intersect/tests/main.nf.test.snap b/modules/nf-core/bedtools/intersect/tests/main.nf.test.snap index b748dd49..30da8be1 100644 --- a/modules/nf-core/bedtools/intersect/tests/main.nf.test.snap +++ b/modules/nf-core/bedtools/intersect/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ], "1": [ - "versions.yml:md5,42ba439339672f4a9193f0f0fe7a7f64" + [ + "BEDTOOLS_INTERSECT", + "bedtools", + "2.31.1" + ] ], "intersect": [ [ @@ -21,16 +25,20 @@ "test_out.bam:md5,738324efe2b1e442ceb6539a630c3fe6" ] ], - "versions": [ - "versions.yml:md5,42ba439339672f4a9193f0f0fe7a7f64" + "versions_bedtools": [ + [ + "BEDTOOLS_INTERSECT", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-09-17T20:55:57.454847668" + "timestamp": "2026-01-21T11:31:18.811473651" }, "sarscov2 - bed - bed": { "content": [ @@ -44,7 +52,11 @@ ] ], "1": [ - "versions.yml:md5,42ba439339672f4a9193f0f0fe7a7f64" + [ + "BEDTOOLS_INTERSECT", + "bedtools", + "2.31.1" + ] ], "intersect": [ [ @@ -54,16 +66,20 @@ "test_out.bed:md5,afcbf01c2f2013aad71dbe8e34f2c15c" ] ], - "versions": [ - "versions.yml:md5,42ba439339672f4a9193f0f0fe7a7f64" + "versions_bedtools": [ + [ + "BEDTOOLS_INTERSECT", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-09-17T20:55:49.072132931" + "timestamp": "2026-01-21T11:31:11.122621263" }, "sarscov2 - bed - stub": { "content": [ @@ -77,7 +93,11 @@ ] ], "1": [ - "versions.yml:md5,42ba439339672f4a9193f0f0fe7a7f64" + [ + "BEDTOOLS_INTERSECT", + "bedtools", + "2.31.1" + ] ], "intersect": [ [ @@ -87,15 +107,19 @@ "test_out.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,42ba439339672f4a9193f0f0fe7a7f64" + "versions_bedtools": [ + [ + "BEDTOOLS_INTERSECT", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-09-17T20:56:06.259192552" + "timestamp": "2026-01-21T11:31:27.957038806" } } \ No newline at end of file diff --git a/modules/nf-core/bedtools/intersect/tests/tags.yml b/modules/nf-core/bedtools/intersect/tests/tags.yml deleted file mode 100644 index 6219cc40..00000000 --- a/modules/nf-core/bedtools/intersect/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -bedtools/intersect: - - "modules/nf-core/bedtools/intersect/**" diff --git a/modules/nf-core/bedtools/makewindows/environment.yml b/modules/nf-core/bedtools/makewindows/environment.yml index 5683bc05..45c307b0 100644 --- a/modules/nf-core/bedtools/makewindows/environment.yml +++ b/modules/nf-core/bedtools/makewindows/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/bedtools/makewindows/main.nf b/modules/nf-core/bedtools/makewindows/main.nf index 36d6cac2..db1343f8 100644 --- a/modules/nf-core/bedtools/makewindows/main.nf +++ b/modules/nf-core/bedtools/makewindows/main.nf @@ -1,18 +1,18 @@ process BEDTOOLS_MAKEWINDOWS { - tag "$meta.id" + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' : - 'biocontainers/bedtools:2.31.1--hf5e1c6e_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' + : 'biocontainers/bedtools:2.31.1--hf5e1c6e_0'}" input: tuple val(meta), path(regions) output: tuple val(meta), path("*.bed"), emit: bed - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('bedtools'), eval("bedtools --version | sed -e 's/bedtools v//g'"), topic: versions, emit: versions_bedtools when: task.ext.when == null || task.ext.when @@ -21,29 +21,23 @@ process BEDTOOLS_MAKEWINDOWS { def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def arg_input = regions.extension in ["bed", "tab"] ? "-b ${regions}" : "-g ${regions}" - if ("${regions}" == "${prefix}.bed") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + if ("${regions}" == "${prefix}.bed") { + error("Input and output names are the same, set prefix in module configuration to disambiguate!") + } """ bedtools \\ makewindows \\ ${arg_input} \\ ${args} \\ > ${prefix}.bed - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" - if ("${regions}" == "${prefix}.bed") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + if ("${regions}" == "${prefix}.bed") { + error("Input and output names are the same, set prefix in module configuration to disambiguate!") + } """ touch ${prefix}.bed - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ } diff --git a/modules/nf-core/bedtools/makewindows/meta.yml b/modules/nf-core/bedtools/makewindows/meta.yml index df047f66..bb695f48 100644 --- a/modules/nf-core/bedtools/makewindows/meta.yml +++ b/modules/nf-core/bedtools/makewindows/meta.yml @@ -24,9 +24,11 @@ input: type: file description: BED file OR Genome details file () pattern: "*.{bed,tab,fai}" + ontologies: + - edam: http://edamontology.org/format_3475 # TSV output: - - bed: - - meta: + bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -35,11 +37,28 @@ output: type: file description: BED file containing the windows pattern: "*.bed" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_bedtools: + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool authors: - "@kevbrick" - "@nvnieuwk" diff --git a/modules/nf-core/bedtools/makewindows/tests/main.nf.test b/modules/nf-core/bedtools/makewindows/tests/main.nf.test index b27e59b6..38302541 100644 --- a/modules/nf-core/bedtools/makewindows/tests/main.nf.test +++ b/modules/nf-core/bedtools/makewindows/tests/main.nf.test @@ -1,4 +1,3 @@ - nextflow_process { name "Test Process BEDTOOLS_MAKEWINDOWS" @@ -17,10 +16,9 @@ nextflow_process { process { """ input[0] = [ - [ id:'test2'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) - ] - + [ id:'test2'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ] """ } } @@ -39,10 +37,30 @@ nextflow_process { process { """ input[0] = [ - [ id:'test2'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) - ] + [ id:'test2'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-bedtools-makewindows-bed -- stub") { + options "-stub" + when { + process { + """ + input[0] = [ + [ id:'test2'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ] """ } } diff --git a/modules/nf-core/bedtools/makewindows/tests/main.nf.test.snap b/modules/nf-core/bedtools/makewindows/tests/main.nf.test.snap index 22cfbc17..51717ca1 100644 --- a/modules/nf-core/bedtools/makewindows/tests/main.nf.test.snap +++ b/modules/nf-core/bedtools/makewindows/tests/main.nf.test.snap @@ -1,4 +1,45 @@ { + "test-bedtools-makewindows-bed -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test2" + }, + "test2.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + "BEDTOOLS_MAKEWINDOWS", + "bedtools", + "2.31.1" + ] + ], + "bed": [ + [ + { + "id": "test2" + }, + "test2.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_bedtools": [ + [ + "BEDTOOLS_MAKEWINDOWS", + "bedtools", + "2.31.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-01-21T11:40:48.35416302" + }, "test-bedtools-makewindows-fai": { "content": [ { @@ -11,7 +52,11 @@ ] ], "1": [ - "versions.yml:md5,f797078cc8b8bac7e6906685d4867be5" + [ + "BEDTOOLS_MAKEWINDOWS", + "bedtools", + "2.31.1" + ] ], "bed": [ [ @@ -21,16 +66,20 @@ "test2.bed:md5,622d1f62786fe4239b76c53168f21c54" ] ], - "versions": [ - "versions.yml:md5,f797078cc8b8bac7e6906685d4867be5" + "versions_bedtools": [ + [ + "BEDTOOLS_MAKEWINDOWS", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-08-26T14:03:31.430455" + "timestamp": "2026-01-21T11:31:58.740645963" }, "test-bedtools-makewindows-bed": { "content": [ @@ -44,7 +93,11 @@ ] ], "1": [ - "versions.yml:md5,f797078cc8b8bac7e6906685d4867be5" + [ + "BEDTOOLS_MAKEWINDOWS", + "bedtools", + "2.31.1" + ] ], "bed": [ [ @@ -54,15 +107,19 @@ "test2.bed:md5,0cf6ed2b6f470cd44a247da74ca4fe4e" ] ], - "versions": [ - "versions.yml:md5,f797078cc8b8bac7e6906685d4867be5" + "versions_bedtools": [ + [ + "BEDTOOLS_MAKEWINDOWS", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-08-26T14:03:27.118372" + "timestamp": "2026-01-21T11:31:51.390932315" } } \ No newline at end of file diff --git a/modules/nf-core/bedtools/map/environment.yml b/modules/nf-core/bedtools/map/environment.yml index 5683bc05..45c307b0 100644 --- a/modules/nf-core/bedtools/map/environment.yml +++ b/modules/nf-core/bedtools/map/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/bedtools/map/main.nf b/modules/nf-core/bedtools/map/main.nf index 59281e8b..ef4b4372 100644 --- a/modules/nf-core/bedtools/map/main.nf +++ b/modules/nf-core/bedtools/map/main.nf @@ -1,11 +1,11 @@ process BEDTOOLS_MAP { - tag "$meta.id" + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' : - 'biocontainers/bedtools:2.31.1--hf5e1c6e_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' + : 'biocontainers/bedtools:2.31.1--hf5e1c6e_0'}" input: tuple val(meta), path(intervals1), path(intervals2) @@ -13,7 +13,7 @@ process BEDTOOLS_MAP { output: tuple val(meta), path("*.${extension}"), emit: mapped - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('bedtools'), eval("bedtools --version | sed -e 's/bedtools v//g'"), topic: versions, emit: versions_bedtools when: task.ext.when == null || task.ext.when @@ -23,36 +23,26 @@ process BEDTOOLS_MAP { def prefix = task.ext.prefix ?: "${meta.id}" extension = intervals1.getExtension() def sizes = chrom_sizes ? "-g ${chrom_sizes}" : '' - if ("$intervals1" == "${prefix}.${extension}" || - "$intervals2" == "${prefix}.${extension}") - error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + if ("${intervals1}" == "${prefix}.${extension}" || "${intervals2}" == "${prefix}.${extension}") { + error("Input and output names are the same, use \"task.ext.prefix\" to disambiguate!") + } """ bedtools \\ map \\ - -a $intervals1 \\ - -b $intervals2 \\ - $args \\ - $sizes \\ + -a ${intervals1} \\ + -b ${intervals2} \\ + ${args} \\ + ${sizes} \\ > ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" extension = intervals1.getExtension() - if ("$intervals1" == "${prefix}.${extension}" || - "$intervals2" == "${prefix}.${extension}") - error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + if ("${intervals1}" == "${prefix}.${extension}" || "${intervals2}" == "${prefix}.${extension}") { + error("Input and output names are the same, use \"task.ext.prefix\" to disambiguate!") + } """ touch ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ } diff --git a/modules/nf-core/bedtools/map/meta.yml b/modules/nf-core/bedtools/map/meta.yml index 4e56bb94..2635b63c 100644 --- a/modules/nf-core/bedtools/map/meta.yml +++ b/modules/nf-core/bedtools/map/meta.yml @@ -23,10 +23,12 @@ input: type: file description: BAM/BED/GFF/VCF pattern: "*.{bed|gff|vcf}" + ontologies: [] - intervals2: type: file description: BAM/BED/GFF/VCF pattern: "*.{bed|gff|vcf}" + ontologies: [] - - meta2: type: map description: | @@ -36,23 +38,41 @@ input: type: file description: Chromosome sizes file pattern: "*{.sizes,.txt}" + ontologies: [] output: - - mapped: - - meta: + mapped: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.${extension}": type: file - description: File containing the description of overlaps found between the features - in A and the features in B, with statistics + description: File containing the description of overlaps found between the + features in A and the features in B, with statistics pattern: "*.${extension}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_bedtools: + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool authors: - "@ekushele" maintainers: diff --git a/modules/nf-core/bedtools/map/tests/main.nf.test.snap b/modules/nf-core/bedtools/map/tests/main.nf.test.snap index 48ea6b2c..d95adc3d 100644 --- a/modules/nf-core/bedtools/map/tests/main.nf.test.snap +++ b/modules/nf-core/bedtools/map/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ], "1": [ - "versions.yml:md5,1a9145744687b0d2191491d534697dc4" + [ + "BEDTOOLS_MAP", + "bedtools", + "2.31.1" + ] ], "mapped": [ [ @@ -21,21 +25,31 @@ "test_out.bed:md5,d3aeb1ec7b90e0d5a6d1b9a4614ab96a" ] ], - "versions": [ - "versions.yml:md5,1a9145744687b0d2191491d534697dc4" + "versions_bedtools": [ + [ + "BEDTOOLS_MAP", + "bedtools", + "2.31.1" + ] ] } ], - "timestamp": "2023-11-30T09:46:52.843854571" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-01-21T11:32:13.585932455" }, "sarscov2 - [bed1, bed2], [] - stub": { "content": [ "test_out.bed", - [ - "versions.yml:md5,1a9145744687b0d2191491d534697dc4" - ] + null ], - "timestamp": "2023-11-30T09:56:57.011945259" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-01-21T11:32:28.971257714" }, "sarscov2 - [bed, vcf], []": { "content": [ @@ -49,7 +63,11 @@ ] ], "1": [ - "versions.yml:md5,1a9145744687b0d2191491d534697dc4" + [ + "BEDTOOLS_MAP", + "bedtools", + "2.31.1" + ] ], "mapped": [ [ @@ -59,11 +77,19 @@ "test_out.bed:md5,cabd34d1132834581e31f53dfa66ec03" ] ], - "versions": [ - "versions.yml:md5,1a9145744687b0d2191491d534697dc4" + "versions_bedtools": [ + [ + "BEDTOOLS_MAP", + "bedtools", + "2.31.1" + ] ] } ], - "timestamp": "2023-11-30T09:46:58.912139308" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-01-21T11:32:21.316572693" } } \ No newline at end of file diff --git a/modules/nf-core/bedtools/map/tests/nextflow.config b/modules/nf-core/bedtools/map/tests/nextflow.config index df373958..3d2eea40 100644 --- a/modules/nf-core/bedtools/map/tests/nextflow.config +++ b/modules/nf-core/bedtools/map/tests/nextflow.config @@ -1,3 +1,3 @@ process { ext.prefix = { "${meta.id}_out" } -} \ No newline at end of file +} diff --git a/modules/nf-core/bedtools/map/tests/tags.yml b/modules/nf-core/bedtools/map/tests/tags.yml deleted file mode 100644 index 3554664e..00000000 --- a/modules/nf-core/bedtools/map/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -bedtools/map: - - "modules/nf-core/bedtools/map/**" diff --git a/modules/nf-core/bedtools/merge/environment.yml b/modules/nf-core/bedtools/merge/environment.yml index 5683bc05..45c307b0 100644 --- a/modules/nf-core/bedtools/merge/environment.yml +++ b/modules/nf-core/bedtools/merge/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/bedtools/merge/main.nf b/modules/nf-core/bedtools/merge/main.nf index 5310647d..8b39a86c 100644 --- a/modules/nf-core/bedtools/merge/main.nf +++ b/modules/nf-core/bedtools/merge/main.nf @@ -1,18 +1,18 @@ process BEDTOOLS_MERGE { - tag "$meta.id" + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' : - 'biocontainers/bedtools:2.31.1--hf5e1c6e_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' + : 'biocontainers/bedtools:2.31.1--hf5e1c6e_0'}" input: tuple val(meta), path(bed) output: tuple val(meta), path('*.bed'), emit: bed - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('bedtools'), eval("bedtools --version | sed -e 's/bedtools v//g'"), topic: versions, emit: versions_bedtools when: task.ext.when == null || task.ext.when @@ -20,28 +20,20 @@ process BEDTOOLS_MERGE { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - if ("$bed" == "${prefix}.bed") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + if ("${bed}" == "${prefix}.bed") { + error("Input and output names are the same, use \"task.ext.prefix\" to disambiguate!") + } """ bedtools \\ merge \\ - -i $bed \\ - $args \\ + -i ${bed} \\ + ${args} \\ > ${prefix}.bed - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.bed - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ } diff --git a/modules/nf-core/bedtools/merge/meta.yml b/modules/nf-core/bedtools/merge/meta.yml index 6da54205..31c31ca2 100644 --- a/modules/nf-core/bedtools/merge/meta.yml +++ b/modules/nf-core/bedtools/merge/meta.yml @@ -23,9 +23,10 @@ input: type: file description: Input BED file pattern: "*.{bed}" + ontologies: [] output: - - bed: - - meta: + bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -34,11 +35,28 @@ output: type: file description: Overlapped bed file with combined features pattern: "*.{bed}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_bedtools: + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool authors: - "@edmundmiller" - "@sruthipsuresh" diff --git a/modules/nf-core/bedtools/merge/tests/main.nf.test b/modules/nf-core/bedtools/merge/tests/main.nf.test index 2959d6b9..a9c9a0cf 100644 --- a/modules/nf-core/bedtools/merge/tests/main.nf.test +++ b/modules/nf-core/bedtools/merge/tests/main.nf.test @@ -31,4 +31,4 @@ nextflow_process { } -} \ No newline at end of file +} diff --git a/modules/nf-core/bedtools/merge/tests/main.nf.test.snap b/modules/nf-core/bedtools/merge/tests/main.nf.test.snap index ee6c4e63..dec7037c 100644 --- a/modules/nf-core/bedtools/merge/tests/main.nf.test.snap +++ b/modules/nf-core/bedtools/merge/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ], "1": [ - "versions.yml:md5,2d134badb4cd1e4e903696c7967f28d6" + [ + "BEDTOOLS_MERGE", + "bedtools", + "2.31.1" + ] ], "bed": [ [ @@ -21,15 +25,19 @@ "test_out.bed:md5,0cf6ed2b6f470cd44a247da74ca4fe4e" ] ], - "versions": [ - "versions.yml:md5,2d134badb4cd1e4e903696c7967f28d6" + "versions_bedtools": [ + [ + "BEDTOOLS_MERGE", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-03-18T17:07:09.721153" + "timestamp": "2026-01-21T11:32:43.625892195" } } \ No newline at end of file diff --git a/modules/nf-core/bedtools/merge/tests/tags.yml b/modules/nf-core/bedtools/merge/tests/tags.yml deleted file mode 100644 index 60c8cad1..00000000 --- a/modules/nf-core/bedtools/merge/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -bedtools/merge: - - "modules/nf-core/bedtools/merge/**" diff --git a/modules/nf-core/bedtools/sort/environment.yml b/modules/nf-core/bedtools/sort/environment.yml index 5683bc05..45c307b0 100644 --- a/modules/nf-core/bedtools/sort/environment.yml +++ b/modules/nf-core/bedtools/sort/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/bedtools/sort/main.nf b/modules/nf-core/bedtools/sort/main.nf index b833150a..9a9db359 100644 --- a/modules/nf-core/bedtools/sort/main.nf +++ b/modules/nf-core/bedtools/sort/main.nf @@ -1,11 +1,11 @@ process BEDTOOLS_SORT { - tag "$meta.id" + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' : - 'biocontainers/bedtools:2.31.1--hf5e1c6e_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' + : 'biocontainers/bedtools:2.31.1--hf5e1c6e_0'}" input: tuple val(meta), path(intervals) @@ -13,42 +13,32 @@ process BEDTOOLS_SORT { output: tuple val(meta), path("*.${extension}"), emit: sorted - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('bedtools'), eval("bedtools --version | sed -e 's/bedtools v//g'"), topic: versions, emit: versions_bedtools when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def genome_cmd = genome_file ? "-g $genome_file" : "" - extension = task.ext.suffix ?: intervals.extension - if ("$intervals" == "${prefix}.${extension}") { - error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def genome_cmd = genome_file ? "-g ${genome_file}" : "" + extension = task.ext.suffix ?: intervals.extension + if ("${intervals}" == "${prefix}.${extension}") { + error("Input and output names are the same, use \"task.ext.prefix\" to disambiguate!") } """ bedtools \\ sort \\ - -i $intervals \\ - $genome_cmd \\ - $args \\ + -i ${intervals} \\ + ${genome_cmd} \\ + ${args} \\ > ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" - extension = task.ext.suffix ?: intervals.extension + extension = task.ext.suffix ?: intervals.extension """ touch ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ } diff --git a/modules/nf-core/bedtools/sort/meta.yml b/modules/nf-core/bedtools/sort/meta.yml index 313698f1..83933fbe 100644 --- a/modules/nf-core/bedtools/sort/meta.yml +++ b/modules/nf-core/bedtools/sort/meta.yml @@ -22,14 +22,16 @@ input: type: file description: BED/BEDGRAPH pattern: "*.{bed|bedGraph}" - - - genome_file: - type: file - description: | - Optional reference genome 2 column file that defines the expected chromosome order. - pattern: "*.{fai,txt,chromsizes}" + ontologies: [] + - genome_file: + type: file + description: | + Optional reference genome 2 column file that defines the expected chromosome order. + pattern: "*.{fai,txt,chromsizes}" + ontologies: [] output: - - sorted: - - meta: + sorted: + - - meta: type: map description: | Groovy Map containing sample information @@ -38,11 +40,28 @@ output: type: file description: Sorted output file pattern: "*.${extension}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_bedtools: + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool authors: - "@edmundmiller" - "@sruthipsuresh" diff --git a/modules/nf-core/bedtools/sort/tests/main.nf.test b/modules/nf-core/bedtools/sort/tests/main.nf.test index b1f36dd9..3345c9cd 100644 --- a/modules/nf-core/bedtools/sort/tests/main.nf.test +++ b/modules/nf-core/bedtools/sort/tests/main.nf.test @@ -55,4 +55,4 @@ nextflow_process { } -} \ No newline at end of file +} diff --git a/modules/nf-core/bedtools/sort/tests/main.nf.test.snap b/modules/nf-core/bedtools/sort/tests/main.nf.test.snap index f10e8b98..411bfca9 100644 --- a/modules/nf-core/bedtools/sort/tests/main.nf.test.snap +++ b/modules/nf-core/bedtools/sort/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ], "1": [ - "versions.yml:md5,cdbae2c7ebc41e534aaf0835779061f8" + [ + "BEDTOOLS_SORT", + "bedtools", + "2.31.1" + ] ], "sorted": [ [ @@ -21,16 +25,20 @@ "test_out.testtext:md5,fe4053cf4de3aebbdfc3be2efb125a74" ] ], - "versions": [ - "versions.yml:md5,cdbae2c7ebc41e534aaf0835779061f8" + "versions_bedtools": [ + [ + "BEDTOOLS_SORT", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-03-19T10:13:11.830452" + "timestamp": "2026-01-21T11:43:51.322851825" }, "test_bedtools_sort": { "content": [ @@ -44,7 +52,11 @@ ] ], "1": [ - "versions.yml:md5,cdbae2c7ebc41e534aaf0835779061f8" + [ + "BEDTOOLS_SORT", + "bedtools", + "2.31.1" + ] ], "sorted": [ [ @@ -54,15 +66,19 @@ "test_out.testtext:md5,fe4053cf4de3aebbdfc3be2efb125a74" ] ], - "versions": [ - "versions.yml:md5,cdbae2c7ebc41e534aaf0835779061f8" + "versions_bedtools": [ + [ + "BEDTOOLS_SORT", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-03-19T10:16:40.535947" + "timestamp": "2026-01-21T11:43:43.827943601" } } \ No newline at end of file diff --git a/modules/nf-core/bedtools/sort/tests/nextflow.config b/modules/nf-core/bedtools/sort/tests/nextflow.config index f203c99c..b0379c58 100644 --- a/modules/nf-core/bedtools/sort/tests/nextflow.config +++ b/modules/nf-core/bedtools/sort/tests/nextflow.config @@ -4,5 +4,5 @@ process { ext.prefix = { "${meta.id}_out" } ext.suffix = "testtext" } - -} \ No newline at end of file + +} diff --git a/modules/nf-core/bedtools/sort/tests/tags.yml b/modules/nf-core/bedtools/sort/tests/tags.yml deleted file mode 100644 index 47c85eea..00000000 --- a/modules/nf-core/bedtools/sort/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -bedtools/sort: - - "modules/nf-core/bedtools/sort/**" diff --git a/modules/nf-core/busco/busco/environment.yml b/modules/nf-core/busco/busco/environment.yml index 5b918b45..861982d0 100644 --- a/modules/nf-core/busco/busco/environment.yml +++ b/modules/nf-core/busco/busco/environment.yml @@ -1,5 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::busco=5.7.1 + - bioconda::busco=6.0.0 diff --git a/modules/nf-core/busco/busco/main.nf b/modules/nf-core/busco/busco/main.nf index f7c1a662..aab5920e 100644 --- a/modules/nf-core/busco/busco/main.nf +++ b/modules/nf-core/busco/busco/main.nf @@ -1,51 +1,70 @@ process BUSCO_BUSCO { - tag "$meta.id" + tag "${meta.id}" label 'process_medium' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/busco:5.7.1--pyhdfd78af_0': - 'biocontainers/busco:5.7.1--pyhdfd78af_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/41/4137d65ab5b90d2ae4fa9d3e0e8294ddccc287e53ca653bb3c63b8fdb03e882f/data' + : 'community.wave.seqera.io/library/busco:6.0.0--a9a1426105f81165'}" + // Note: one test had to be disabled when switching to Busco 6.0.0, cf https://github.com/nf-core/modules/pull/8781/files + // Try to restore it when upgrading Busco to a later version input: - tuple val(meta), path(fasta, stageAs:'tmp_input/*') - val mode // Required: One of genome, proteins, or transcriptome - val lineage // Required: lineage to check against, "auto" enables --auto-lineage instead - path busco_lineages_path // Recommended: path to busco lineages - downloads if not set - path config_file // Optional: busco configuration file + tuple val(meta), path(fasta, stageAs: 'tmp_input/*') + // Required: One of genome, proteins, or transcriptome + val mode + // Required: lineage for checking against, or "auto/auto_prok/auto_euk" for enabling auto-lineage + val lineage + // Recommended: BUSCO lineages file - downloads if not set + path busco_lineages_path + // Optional: BUSCO configuration file + path config_file + val clean_intermediates output: - tuple val(meta), path("*-busco.batch_summary.txt") , emit: batch_summary - tuple val(meta), path("short_summary.*.txt") , emit: short_summaries_txt , optional: true - tuple val(meta), path("short_summary.*.json") , emit: short_summaries_json , optional: true - tuple val(meta), path("*-busco/*/run_*/full_table.tsv") , emit: full_table , optional: true - tuple val(meta), path("*-busco/*/run_*/missing_busco_list.tsv") , emit: missing_busco_list , optional: true - tuple val(meta), path("*-busco/*/run_*/single_copy_proteins.faa") , emit: single_copy_proteins , optional: true - tuple val(meta), path("*-busco/*/run_*/busco_sequences") , emit: seq_dir - tuple val(meta), path("*-busco/*/translated_proteins") , emit: translated_dir , optional: true - tuple val(meta), path("*-busco") , emit: busco_dir - path "versions.yml" , emit: versions + tuple val(meta), path("*-busco.batch_summary.txt"), emit: batch_summary + tuple val(meta), path("short_summary.*.txt"), emit: short_summaries_txt, optional: true + tuple val(meta), path("short_summary.*.json"), emit: short_summaries_json, optional: true + tuple val(meta), path("*-busco.log"), emit: log, optional: true + tuple val(meta), path("*-busco/*/run_*/full_table.tsv"), emit: full_table, optional: true + tuple val(meta), path("*-busco/*/run_*/missing_busco_list.tsv"), emit: missing_busco_list, optional: true + tuple val(meta), path("*-busco/*/run_*/single_copy_proteins.faa"), emit: single_copy_proteins, optional: true + tuple val(meta), path("*-busco/*/run_*/busco_sequences"), emit: seq_dir, optional: true + tuple val(meta), path("*-busco/*/translated_proteins"), emit: translated_dir, optional: true + tuple val(meta), path("*-busco"), emit: busco_dir + tuple val(meta), path("busco_downloads/lineages/*"), emit: downloaded_lineages, optional: true + tuple val(meta), path("*-busco/*/run_*/busco_sequences/single_copy_busco_sequences/*.faa"), emit: single_copy_faa, optional: true + tuple val(meta), path("*-busco/*/run_*/busco_sequences/single_copy_busco_sequences/*.fna"), emit: single_copy_fna, optional: true + tuple val("${task.process}"), val('busco'), eval("busco --version 2> /dev/null | sed 's/BUSCO //g'"), emit: versions_busco, topic: versions when: task.ext.when == null || task.ext.when script: - if ( mode !in [ 'genome', 'proteins', 'transcriptome' ] ) { - error "Mode must be one of 'genome', 'proteins', or 'transcriptome'." + if (mode !in ['genome', 'proteins', 'transcriptome']) { + error("Mode must be one of 'genome', 'proteins', or 'transcriptome'.") } def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}-${lineage}" - def busco_config = config_file ? "--config $config_file" : '' - def busco_lineage = lineage.equals('auto') ? '--auto-lineage' : "--lineage_dataset ${lineage}" + def busco_config = config_file ? "--config ${config_file}" : '' + def busco_lineage = lineage in ['auto', 'auto_prok', 'auto_euk'] + ? lineage.replaceFirst('auto', '--auto-lineage').replaceAll('_', '-') + : "--lineage_dataset ${lineage}" def busco_lineage_dir = busco_lineages_path ? "--download_path ${busco_lineages_path}" : '' + def intermediate_files = [ + './*-busco/*/auto_lineage', + './*-busco/*/**/{miniprot,hmmer,.bbtools}_output', + './*-busco/*/prodigal_output/predicted_genes/tmp/', + ] + def clean_cmd = clean_intermediates ? "rm -fr ${intermediate_files.join(' ')}" : '' """ - # 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 + # Fix Augustus for Apptainer + ENV_AUGUSTUS=/opt/conda/etc/conda/activate.d/augustus.sh + set +u + if [ -z "\${AUGUSTUS_CONFIG_PATH}" ] && [ -f "\${ENV_AUGUSTUS}" ]; then + source "\${ENV_AUGUSTUS}" fi + set -u # If the augustus config directory is not writable, then copy to writeable area if [ ! -w "\${AUGUSTUS_CONFIG_PATH}" ]; then @@ -70,38 +89,38 @@ process BUSCO_BUSCO { cd .. busco \\ - --cpu $task.cpus \\ + --cpu ${task.cpus} \\ --in "\$INPUT_SEQS" \\ --out ${prefix}-busco \\ - --mode $mode \\ - $busco_lineage \\ - $busco_lineage_dir \\ - $busco_config \\ - $args + --mode ${mode} \\ + ${busco_lineage} \\ + ${busco_lineage_dir} \\ + ${busco_config} \\ + ${args} # clean up rm -rf "\$INPUT_SEQS" + ${clean_cmd} + # find and remove broken symlinks from the cleanup + find . -xtype l -delete # Move files to avoid staging/publishing issues mv ${prefix}-busco/batch_summary.txt ${prefix}-busco.batch_summary.txt mv ${prefix}-busco/*/short_summary.*.{json,txt} . || echo "Short summaries were not available: No genes were found." + mv ${prefix}-busco/logs/busco.log ${prefix}-busco.log - cat <<-END_VERSIONS > versions.yml - "${task.process}": - busco: \$( busco --version 2>&1 | sed 's/^BUSCO //' ) - END_VERSIONS + if grep 'Run failed; check logs' ${prefix}-busco.batch_summary.txt > /dev/null + then + echo "Busco run failed" + exit 1 + fi """ stub: - def prefix = task.ext.prefix ?: "${meta.id}-${lineage}" - def fasta_name = files(fasta).first().name - '.gz' + def prefix = task.ext.prefix ?: "${meta.id}-${lineage}" + def fasta_name = files(fasta).first().name - '.gz' """ touch ${prefix}-busco.batch_summary.txt - mkdir -p ${prefix}-busco/$fasta_name/run_${lineage}/busco_sequences - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - busco: \$( busco --version 2>&1 | sed 's/^BUSCO //' ) - END_VERSIONS + mkdir -p ${prefix}-busco/${fasta_name}/run_${lineage}/busco_sequences """ } diff --git a/modules/nf-core/busco/busco/meta.yml b/modules/nf-core/busco/busco/meta.yml index 7cb6d69c..0ec0e158 100644 --- a/modules/nf-core/busco/busco/meta.yml +++ b/modules/nf-core/busco/busco/meta.yml @@ -7,14 +7,16 @@ keywords: - proteome tools: - busco: - description: BUSCO provides measures for quantitative assessment of genome assembly, - gene set, and transcriptome completeness based on evolutionarily informed expectations - of gene content from near-universal single-copy orthologs selected from OrthoDB. + description: BUSCO provides measures for quantitative assessment of genome + assembly, gene set, and transcriptome completeness based on evolutionarily + informed expectations of gene content from near-universal single-copy + orthologs selected from OrthoDB. homepage: https://busco.ezlab.org/ documentation: https://busco.ezlab.org/busco_userguide.html tool_dev_url: https://gitlab.com/ezlab/busco doi: "10.1007/978-1-4939-9173-0_14" - licence: ["MIT"] + licence: + - "MIT" identifier: biotools:busco input: - - meta: @@ -26,116 +28,192 @@ input: type: file description: Nucleic or amino acid sequence file in FASTA format. pattern: "*.{fasta,fna,fa,fasta.gz,fna.gz,fa.gz}" - - - mode: - type: string - description: The mode to run Busco in. One of genome, proteins, or transcriptome - pattern: "{genome,proteins,transcriptome}" - - - lineage: - type: string - description: The BUSCO lineage to use, or "auto" to automatically select lineage - - - busco_lineages_path: - type: directory - description: Path to local BUSCO lineages directory. - - - config_file: - type: file - description: Path to BUSCO config file. + ontologies: [] + - mode: + type: string + description: The mode to run Busco in. One of genome, proteins, or + transcriptome + pattern: "{genome,proteins,transcriptome}" + - lineage: + type: string + description: The BUSCO lineage to use, or "auto", "auto_prok" or "auto_euk" + to automatically select lineage + - busco_lineages_path: + type: directory + description: Path to local BUSCO lineages directory. + - config_file: + type: file + description: Path to BUSCO config file. + ontologies: [] + - clean_intermediates: + type: boolean + description: Flag to remove intermediate files. output: - - batch_summary: - - meta: + batch_summary: + - - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - "*-busco.batch_summary.txt": type: file description: Summary of all sequence files analyzed pattern: "*-busco.batch_summary.txt" - - short_summaries_txt: - - meta: + ontologies: [] + short_summaries_txt: + - - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - short_summary.*.txt: type: file description: Short Busco summary in plain text format pattern: "short_summary.*.txt" - - short_summaries_json: - - meta: + ontologies: [] + short_summaries_json: + - - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - short_summary.*.json: type: file description: Short Busco summary in JSON format pattern: "short_summary.*.json" - - full_table: - - meta: + ontologies: + - edam: http://edamontology.org/format_3464 + log: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*-busco.log": + type: file + description: BUSCO main log + pattern: "*-busco.log" + ontologies: [] + full_table: + - - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - "*-busco/*/run_*/full_table.tsv": type: file description: Full BUSCO results table pattern: "full_table.tsv" - - missing_busco_list: - - meta: + ontologies: + - edam: http://edamontology.org/format_3475 + missing_busco_list: + - - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - "*-busco/*/run_*/missing_busco_list.tsv": type: file description: List of missing BUSCOs pattern: "missing_busco_list.tsv" - - single_copy_proteins: - - meta: + ontologies: + - edam: http://edamontology.org/format_3475 + single_copy_proteins: + - - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - "*-busco/*/run_*/single_copy_proteins.faa": type: file description: Fasta file of single copy proteins (transcriptome mode) pattern: "single_copy_proteins.faa" - - seq_dir: - - meta: + ontologies: [] + seq_dir: + - - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - "*-busco/*/run_*/busco_sequences": type: directory description: BUSCO sequence directory pattern: "busco_sequences" - - translated_dir: - - meta: + translated_dir: + - - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - "*-busco/*/translated_proteins": type: directory - description: Six frame translations of each transcript made by the transcriptome - mode + description: Six frame translations of each transcript made by the + transcriptome mode pattern: "translated_dir" - - busco_dir: - - meta: + busco_dir: + - - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - "*-busco": type: directory description: BUSCO lineage specific output pattern: "*-busco" - - versions: - - versions.yml: + downloaded_lineages: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - busco_downloads/lineages/*: + type: directory + description: Lineages downloaded by BUSCO when running the analysis, for + example bacteria_odb12 + pattern: "busco_downloads/lineages/*" + single_copy_faa: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*-busco/*/run_*/busco_sequences/single_copy_busco_sequences/*.faa": + type: file + description: Single copy .faa sequence files + pattern: "*-busco/*/run_*/busco_sequences/single_copy_busco_sequences/*.faa" + ontologies: [] + single_copy_fna: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*-busco/*/run_*/busco_sequences/single_copy_busco_sequences/*.fna": type: file - description: File containing software versions - pattern: "versions.yml" + description: Single copy .fna sequence files + pattern: "*-busco/*/run_*/busco_sequences/single_copy_busco_sequences/*.fna" + ontologies: [] + versions_busco: + - - ${task.process}: + type: string + description: The name of the process + - busco: + type: string + description: The name of the tool + - busco --version 2> /dev/null | sed 's/BUSCO //g': + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - busco: + type: string + description: The name of the tool + - busco --version 2> /dev/null | sed 's/BUSCO //g': + type: eval + description: The expression to obtain the version of the tool authors: - "@priyanka-surana" - "@charles-plessy" diff --git a/modules/nf-core/busco/busco/tests/main.nf.test b/modules/nf-core/busco/busco/tests/main.nf.test index bb7b49a9..3f1ad0d0 100644 --- a/modules/nf-core/busco/busco/tests/main.nf.test +++ b/modules/nf-core/busco/busco/tests/main.nf.test @@ -14,6 +14,9 @@ nextflow_process { config './nextflow.config' when { + params { + busco_args = '--tar' + } process { """ input[0] = [ @@ -24,6 +27,7 @@ nextflow_process { input[2] = 'bacteria_odb10' // Launch with 'auto' to use --auto-lineage, and specified lineages // 'auto' removed from test due to memory issues input[3] = [] // Download busco lineage input[4] = [] // No config + input[5] = false // Clean intermediates """ } } @@ -50,7 +54,7 @@ nextflow_process { process.out.batch_summary[0][1], process.out.full_table[0][1], process.out.missing_busco_list[0][1], - process.out.versions[0] + process.out.findAll { key, val -> key.startsWith("versions")} ).match() with(file(process.out.seq_dir[0][1]).listFiles().collect { it.name }) { @@ -59,7 +63,7 @@ nextflow_process { assert contains('fragmented_busco_sequences.tar.gz') } - with(path("${process.out.busco_dir[0][1]}/logs/busco.log").text) { + with(path(process.out.log[0][1]).text) { assert contains('DEBUG:busco.run_BUSCO') assert contains('Results from dataset') assert contains('how to cite BUSCO') @@ -75,6 +79,9 @@ nextflow_process { config './nextflow.config' when { + params { + busco_args = '--tar' + } process { """ input[0] = [ @@ -88,6 +95,7 @@ nextflow_process { input[2] = 'bacteria_odb10' input[3] = [] input[4] = [] + input[5] = false """ } } @@ -126,10 +134,9 @@ nextflow_process { } assert snapshot( - process.out.batch_summary[0][1], process.out.full_table[0][1], process.out.missing_busco_list[0][1], - process.out.versions[0] + process.out.findAll { key, val -> key.startsWith("versions")} ).match() with(file(process.out.seq_dir[0][1][0]).listFiles().collect { it.name }) { @@ -144,7 +151,7 @@ nextflow_process { assert contains('fragmented_busco_sequences.tar.gz') } - with(path("${process.out.busco_dir[0][1]}/logs/busco.log").text) { + with(path(process.out.log[0][1]).text) { assert contains('DEBUG:busco.run_BUSCO') assert contains('Results from dataset') assert contains('how to cite BUSCO') @@ -156,74 +163,15 @@ nextflow_process { } - test("test_busco_eukaryote_metaeuk") { - - config './nextflow.metaeuk.config' - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ] - input[1] = 'genome' - input[2] = 'eukaryota_odb10' - input[3] = [] - input[4] = [] - """ - } - } - - then { - assert process.success - - with(path(process.out.short_summaries_txt[0][1]).text) { - assert contains('BUSCO version') - assert contains('The lineage dataset is') - assert contains('BUSCO was run in mode') - assert contains('Complete BUSCOs') - assert contains('Missing BUSCOs') - assert contains('Dependencies and versions') - } - - with(path(process.out.short_summaries_json[0][1]).text) { - assert contains('one_line_summary') - assert contains('mode') - assert contains('dataset') - } - - assert snapshot( - process.out.batch_summary[0][1], - process.out.full_table[0][1], - process.out.missing_busco_list[0][1], - process.out.versions[0] - ).match() - - with(file(process.out.seq_dir[0][1]).listFiles().collect { it.name }) { - assert contains('single_copy_busco_sequences.tar.gz') - assert contains('multi_copy_busco_sequences.tar.gz') - assert contains('fragmented_busco_sequences.tar.gz') - } - - with(path("${process.out.busco_dir[0][1]}/logs/busco.log").text) { - assert contains('DEBUG:busco.run_BUSCO') - assert contains('Results from dataset') - assert contains('how to cite BUSCO') - - } - - assert process.out.single_copy_proteins == [] - assert process.out.translated_dir == [] - } - - } test("test_busco_eukaryote_augustus") { - config './nextflow.augustus.config' + config './nextflow.config' when { + params { + busco_args = '--tar --augustus' + } process { """ input[0] = [ @@ -234,6 +182,7 @@ nextflow_process { input[2] = 'eukaryota_odb10' input[3] = [] input[4] = [] + input[5] = false """ } } @@ -243,10 +192,10 @@ nextflow_process { assert snapshot( process.out.batch_summary[0][1], - process.out.versions[0] + process.out.findAll { key, val -> key.startsWith("versions")} ).match() - with(path("${process.out.busco_dir[0][1]}/logs/busco.log").text) { + with(path(process.out.log[0][1]).text) { assert contains('DEBUG:busco.run_BUSCO') assert contains('Augustus did not recognize any genes') @@ -267,6 +216,9 @@ nextflow_process { config './nextflow.config' when { + params { + busco_args = '--tar' + } process { """ input[0] = [ @@ -277,6 +229,7 @@ nextflow_process { input[2] = 'bacteria_odb10' input[3] = [] input[4] = [] + input[5] = false """ } } @@ -303,7 +256,7 @@ nextflow_process { process.out.batch_summary[0][1], process.out.full_table[0][1], process.out.missing_busco_list[0][1], - process.out.versions[0] + process.out.findAll { key, val -> key.startsWith("versions")} ).match() with(file(process.out.seq_dir[0][1]).listFiles().collect { it.name }) { @@ -312,7 +265,7 @@ nextflow_process { assert contains('fragmented_busco_sequences.tar.gz') } - with(path("${process.out.busco_dir[0][1]}/logs/busco.log").text) { + with(path(process.out.log[0][1]).text) { assert contains('DEBUG:busco.run_BUSCO') assert contains('Results from dataset') assert contains('how to cite BUSCO') @@ -329,6 +282,9 @@ nextflow_process { config './nextflow.config' when { + params { + busco_args = '--tar' + } process { """ input[0] = [ @@ -339,6 +295,7 @@ nextflow_process { input[2] = 'bacteria_odb10' input[3] = [] input[4] = [] + input[5] = false """ } } @@ -367,7 +324,7 @@ nextflow_process { process.out.missing_busco_list[0][1], process.out.translated_dir[0][1], process.out.single_copy_proteins[0][1], - process.out.versions[0] + process.out.findAll { key, val -> key.startsWith("versions")} ).match() with(file(process.out.seq_dir[0][1]).listFiles().collect { it.name }) { @@ -376,7 +333,7 @@ nextflow_process { assert contains('fragmented_busco_sequences.tar.gz') } - with(path("${process.out.busco_dir[0][1]}/logs/busco.log").text) { + with(path(process.out.log[0][1]).text) { assert contains('DEBUG:busco.run_BUSCO') assert contains('Results from dataset') assert contains('how to cite BUSCO') @@ -385,6 +342,53 @@ nextflow_process { } + test("test_busco_cleanup") { + + config './nextflow.config' + + when { + params { + busco_args = '--tar' + } + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true) + ] + input[1] = 'genome' + input[2] = 'bacteria_odb10' + input[3] = [] + input[4] = [] + input[5] = true + """ + } + } + + then { + assert process.success + + assert snapshot( + process.out.batch_summary[0][1], + process.out.full_table[0][1], + process.out.missing_busco_list[0][1], + process.out.findAll { key, val -> key.startsWith("versions")} + ).match() + + with(path(process.out.log[0][1]).text) { + assert contains('DEBUG:busco.run_BUSCO') + assert contains('Results from dataset') + assert contains('how to cite BUSCO') + } + + assert path("${process.out.busco_dir[0][1]}/*/auto_lineage").exists() == false + assert path("${process.out.busco_dir[0][1]}/*/**/{miniprot,hmmer,.bbtools}_output").exists() == false + + assert process.out.single_copy_proteins == [] + assert process.out.translated_dir == [] + } + } + test("minimal-stub") { options '-stub' @@ -400,6 +404,7 @@ nextflow_process { input[2] = 'bacteria_odb10' input[3] = [] input[4] = [] + input[5] = false """ } } @@ -407,9 +412,11 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.batch_summary, + process.out.findAll { key, val -> key.startsWith("versions")} + ).match() } ) } } - } diff --git a/modules/nf-core/busco/busco/tests/main.nf.test.snap b/modules/nf-core/busco/busco/tests/main.nf.test.snap index 1b6411bc..88d87bf9 100644 --- a/modules/nf-core/busco/busco/tests/main.nf.test.snap +++ b/modules/nf-core/busco/busco/tests/main.nf.test.snap @@ -1,186 +1,122 @@ { "minimal-stub": { "content": [ + [ + [ + { + "id": "test" + }, + "test-bacteria_odb10-busco.batch_summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], { - "0": [ - [ - { - "id": "test" - }, - "test-bacteria_odb10-busco.batch_summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - - ], - "6": [ - [ - { - "id": "test" - }, - [ - - ] - ] - ], - "7": [ - - ], - "8": [ - [ - { - "id": "test" - }, - [ - [ - [ - [ - - ] - ] - ] - ] - ] - ], - "9": [ - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" - ], - "batch_summary": [ - [ - { - "id": "test" - }, - "test-bacteria_odb10-busco.batch_summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "busco_dir": [ + "versions_busco": [ [ - { - "id": "test" - }, - [ - [ - [ - [ - - ] - ] - ] - ] + "BUSCO_BUSCO", + "busco", + "6.0.0" ] - ], - "full_table": [ - - ], - "missing_busco_list": [ - - ], - "seq_dir": [ - [ - { - "id": "test" - }, - [ - - ] - ] - ], - "short_summaries_json": [ - - ], - "short_summaries_txt": [ - - ], - "single_copy_proteins": [ - - ], - "translated_dir": [ - - ], - "versions": [ - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-05-03T13:28:04.451297" + "timestamp": "2026-02-10T14:56:39.925901" }, "test_busco_eukaryote_augustus": { "content": [ "test-eukaryota_odb10-busco.batch_summary.txt:md5,3ea3bdc423a461dae514d816bdc61c89", - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" + { + "versions_busco": [ + [ + "BUSCO_BUSCO", + "busco", + "6.0.0" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-05-03T13:26:36.974986" + "timestamp": "2026-02-10T14:55:25.677229" }, "test_busco_genome_single_fasta": { "content": [ - "test-bacteria_odb10-busco.batch_summary.txt:md5,21b3fb771cf36be917cc451540d999be", - "full_table.tsv:md5,638fe7590f442c57361554dae330eca1", - "missing_busco_list.tsv:md5,1530af4fe7673a6d001349537bcd410a", - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" + "test-bacteria_odb10-busco.batch_summary.txt:md5,12e911830d66bab6dbf3523ac4392597", + "full_table.tsv:md5,660e2f556ca6efa97f0c2a8cebd94786", + "missing_busco_list.tsv:md5,0e08587f4dc65d9226a31433c1f9ba25", + { + "versions_busco": [ + [ + "BUSCO_BUSCO", + "busco", + "6.0.0" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-05-03T13:22:45.07816" + "timestamp": "2026-02-10T14:54:16.672124" }, "test_busco_genome_multi_fasta": { "content": [ - "test-bacteria_odb10-busco.batch_summary.txt:md5,fcd3c208913e8abda3d6742c43fec5fa", [ - "full_table.tsv:md5,c657edcc7d0de0175869717551df6e83", - "full_table.tsv:md5,638fe7590f442c57361554dae330eca1" + "full_table.tsv:md5,26b1d35d975593834acb4d4a91e225a1", + "full_table.tsv:md5,660e2f556ca6efa97f0c2a8cebd94786" ], [ - "missing_busco_list.tsv:md5,aceb66e347a353cb7fca8e2a725f9112", - "missing_busco_list.tsv:md5,1530af4fe7673a6d001349537bcd410a" + "missing_busco_list.tsv:md5,5dcdc7707035904a7d467ca1026b399a", + "missing_busco_list.tsv:md5,0e08587f4dc65d9226a31433c1f9ba25" ], - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" + { + "versions_busco": [ + [ + "BUSCO_BUSCO", + "busco", + "6.0.0" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-05-03T13:23:50.255602" + "timestamp": "2026-02-10T14:55:02.956339" }, - "test_busco_eukaryote_metaeuk": { + "test_busco_cleanup": { "content": [ - "test-eukaryota_odb10-busco.batch_summary.txt:md5,ff6d8277e452a83ce9456bbee666feb6", - "full_table.tsv:md5,92b1b1d5cb5ea0e2093d16f00187e8c7", - "missing_busco_list.tsv:md5,0352e563de290bf804c708323c35a9e3", - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" + "test-bacteria_odb10-busco.batch_summary.txt:md5,12e911830d66bab6dbf3523ac4392597", + "full_table.tsv:md5,660e2f556ca6efa97f0c2a8cebd94786", + "missing_busco_list.tsv:md5,0e08587f4dc65d9226a31433c1f9ba25", + { + "versions_busco": [ + [ + "BUSCO_BUSCO", + "busco", + "6.0.0" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-05-03T13:25:38.159041" + "timestamp": "2026-02-10T14:56:34.94761" }, "test_busco_transcriptome": { "content": [ "test-bacteria_odb10-busco.batch_summary.txt:md5,8734b3f379c4c0928e5dd4ea1873dc64", - "full_table.tsv:md5,1b2ce808fdafa744c56b5f781551272d", - "missing_busco_list.tsv:md5,a6931b6470262b997b8b99ea0f1d14a4", + "full_table.tsv:md5,645b65b725fd8b30ff6808e0ac671a73", + "missing_busco_list.tsv:md5,b1cc1c22d484439ac128af2290d7d9dd", [ "1024388at2.faa:md5,797d603d262a6595a112e25b73e878b0", "1054741at2.faa:md5,cd4b928cba6b19b4437746ba507e7195", @@ -206,25 +142,41 @@ "95696at2.faa:md5,247bfd1aef432f7b5456307768e9149c" ], "single_copy_proteins.faa:md5,73e2c5d6a9b0f01f2deea3cc5f21b764", - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" + { + "versions_busco": [ + [ + "BUSCO_BUSCO", + "busco", + "6.0.0" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-05-03T13:27:53.992893" + "timestamp": "2026-02-10T14:55:59.115826" }, "test_busco_protein": { "content": [ - "test-bacteria_odb10-busco.batch_summary.txt:md5,f5a782378f9f94a748aa907381fdef91", - "full_table.tsv:md5,812ab6a0496fccab774643cf40c4f2a8", - "missing_busco_list.tsv:md5,aceb66e347a353cb7fca8e2a725f9112", - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" + "test-bacteria_odb10-busco.batch_summary.txt:md5,942dbb2d8ff26240860a794213db14a8", + "full_table.tsv:md5,4db33686f2755a09fdc9521ca89411bc", + "missing_busco_list.tsv:md5,5dcdc7707035904a7d467ca1026b399a", + { + "versions_busco": [ + [ + "BUSCO_BUSCO", + "busco", + "6.0.0" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-05-03T13:27:12.724862" + "timestamp": "2026-02-10T14:55:41.794334" } } \ No newline at end of file diff --git a/modules/nf-core/busco/busco/tests/nextflow.augustus.config b/modules/nf-core/busco/busco/tests/nextflow.augustus.config deleted file mode 100644 index 84daa69d..00000000 --- a/modules/nf-core/busco/busco/tests/nextflow.augustus.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: 'BUSCO_BUSCO' { - ext.args = '--tar --augustus' - } -} diff --git a/modules/nf-core/busco/busco/tests/nextflow.config b/modules/nf-core/busco/busco/tests/nextflow.config index 1ec3fec0..db73a7ee 100644 --- a/modules/nf-core/busco/busco/tests/nextflow.config +++ b/modules/nf-core/busco/busco/tests/nextflow.config @@ -1,5 +1,5 @@ process { withName: 'BUSCO_BUSCO' { - ext.args = '--tar' + ext.args = params.busco_args } } diff --git a/modules/nf-core/busco/busco/tests/nextflow.metaeuk.config b/modules/nf-core/busco/busco/tests/nextflow.metaeuk.config deleted file mode 100644 index c1418445..00000000 --- a/modules/nf-core/busco/busco/tests/nextflow.metaeuk.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: 'BUSCO_BUSCO' { - ext.args = '--tar --metaeuk' - } -} diff --git a/modules/nf-core/busco/busco/tests/old_test.yml b/modules/nf-core/busco/busco/tests/old_test.yml deleted file mode 100644 index 75177f5d..00000000 --- a/modules/nf-core/busco/busco/tests/old_test.yml +++ /dev/null @@ -1,624 +0,0 @@ -- name: busco test_busco_genome_single_fasta - command: nextflow run ./tests/modules/nf-core/busco -entry test_busco_genome_single_fasta -c ./tests/config/nextflow.config - tags: - - busco - files: - - path: output/busco/short_summary.specific.bacteria_odb10.genome.fna.json - contains: - - "one_line_summary" - - "mode" - - "dataset" - - path: output/busco/short_summary.specific.bacteria_odb10.genome.fna.txt - contains: - - "BUSCO version" - - "The lineage dataset is" - - "BUSCO was run in mode" - - "Complete BUSCOs" - - "Missing BUSCOs" - - "Dependencies and versions" - - path: output/busco/test-bacteria_odb10-busco.batch_summary.txt - md5sum: bc2440f8a68d7fbf931ff911c1c3fdfa - - path: output/busco/test-bacteria_odb10-busco/genome.fna/logs/bbtools_err.log - - path: output/busco/test-bacteria_odb10-busco/genome.fna/logs/bbtools_out.log - md5sum: 9caf1a1434414c78562eb0bbb9c0e53f - - path: output/busco/test-bacteria_odb10-busco/genome.fna/logs/hmmsearch_err.log - - path: output/busco/test-bacteria_odb10-busco/genome.fna/logs/hmmsearch_out.log - contains: - - "# hmmsearch :: search profile(s) against a sequence database" - - "# target sequence database:" - - "Internal pipeline statistics summary:" - - "[ok]" - - path: output/busco/test-bacteria_odb10-busco/genome.fna/logs/prodigal_err.log - md5sum: 538510cfc7483498210f01e53fe035ad - - path: output/busco/test-bacteria_odb10-busco/genome.fna/logs/prodigal_out.log - md5sum: 61050b0706addc9498b2088a2d6efa9a - - path: output/busco/test-bacteria_odb10-busco/genome.fna/prodigal_output/.checkpoint - contains: - - "Tool: prodigal" - - "Completed" - - "jobs" - - path: output/busco/test-bacteria_odb10-busco/genome.fna/prodigal_output/predicted_genes/predicted.faa - md5sum: 836e9a80d33d8b89168f07ddc13ee991 - - path: output/busco/test-bacteria_odb10-busco/genome.fna/prodigal_output/predicted_genes/predicted.fna - md5sum: 20eeb75f86842e6e136f02bca8b73a9f - - path: output/busco/test-bacteria_odb10-busco/genome.fna/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_11.faa - md5sum: 836e9a80d33d8b89168f07ddc13ee991 - - path: output/busco/test-bacteria_odb10-busco/genome.fna/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_11.fna - md5sum: 20eeb75f86842e6e136f02bca8b73a9f - - path: output/busco/test-bacteria_odb10-busco/genome.fna/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_11_err.log - md5sum: 538510cfc7483498210f01e53fe035ad - - path: output/busco/test-bacteria_odb10-busco/genome.fna/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_11_out.log - md5sum: 61050b0706addc9498b2088a2d6efa9a - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/.bbtools_output/.checkpoint - contains: - - "Tool: bbtools" - - "Completed" - - "jobs" - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/busco_sequences/fragmented_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/busco_sequences/multi_copy_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/busco_sequences/single_copy_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/full_table.tsv - md5sum: c56edab1dc1522e993c25ae2b730799f - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/hmmer_output.tar.gz - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/missing_busco_list.tsv - md5sum: b533ef30270f27160acce85a22d01bf5 - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/short_summary.json - contains: - - "one_line_summary" - - "mode" - - "lineage_dataset" - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/short_summary.txt - contains: - - "# BUSCO version is:" - - "Results:" - - "busco:" - - path: output/busco/test-bacteria_odb10-busco/logs/busco.log - contains: - - "DEBUG:busco.run_BUSCO" - - "Results from dataset" - - "how to cite BUSCO" - - path: output/busco/versions.yml - -- name: busco test_busco_genome_multi_fasta - command: nextflow run ./tests/modules/nf-core/busco -entry test_busco_genome_multi_fasta -c ./tests/config/nextflow.config - tags: - - busco - files: - - path: output/busco/short_summary.specific.bacteria_odb10.genome.fasta.json - contains: - - "one_line_summary" - - "mode" - - "dataset" - - path: output/busco/short_summary.specific.bacteria_odb10.genome.fasta.txt - contains: - - "BUSCO version" - - "The lineage dataset is" - - "BUSCO was run in mode" - - "Complete BUSCOs" - - "Missing BUSCOs" - - "Dependencies and versions" - - path: output/busco/short_summary.specific.bacteria_odb10.genome.fna.json - contains: - - "one_line_summary" - - "mode" - - "dataset" - - path: output/busco/short_summary.specific.bacteria_odb10.genome.fna.txt - contains: - - "BUSCO version" - - "The lineage dataset is" - - "BUSCO was run in mode" - - "Complete BUSCOs" - - "Missing BUSCOs" - - "Dependencies and versions" - - path: output/busco/test-bacteria_odb10-busco.batch_summary.txt - md5sum: 8c64c1a28b086ef2ee444f99cbed5f7d - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/logs/bbtools_err.log - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/logs/bbtools_out.log - md5sum: 8f047bdb33264d22a83920bc2c63f29a - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/logs/hmmsearch_err.log - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/logs/hmmsearch_out.log - contains: - - "# hmmsearch :: search profile(s) against a sequence database" - - "# target sequence database:" - - "Internal pipeline statistics summary:" - - "[ok]" - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/logs/prodigal_err.log - md5sum: c1fdc6977332f53dfe7f632733bb4585 - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/logs/prodigal_out.log - md5sum: 50752acb1c5a20be886bfdfc06635bcb - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/prodigal_output/.checkpoint - contains: - - "Tool: prodigal" - - "Completed" - - "jobs" - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/prodigal_output/predicted_genes/predicted.faa - md5sum: 8166471fc5f08c82fd5643ab42327f9d - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/prodigal_output/predicted_genes/predicted.fna - md5sum: ddc508a18f60e7f3314534df50cdf8ca - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_11.faa - md5sum: 8166471fc5f08c82fd5643ab42327f9d - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_11.fna - md5sum: ddc508a18f60e7f3314534df50cdf8ca - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_11_err.log - md5sum: c1fdc6977332f53dfe7f632733bb4585 - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_11_out.log - md5sum: 50752acb1c5a20be886bfdfc06635bcb - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_4.faa - md5sum: e56fd59c38248dc21ac94355dca98121 - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_4.fna - md5sum: b365f84bf99c68357952e0b98ed7ce42 - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_4_err.log - md5sum: e5f14d7925ba14a0f9850542f3739894 - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_4_out.log - md5sum: d41971bfc1b621d4ffd2633bc47017ea - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/run_bacteria_odb10/.bbtools_output/.checkpoint - contains: - - "Tool: bbtools" - - "Completed" - - "jobs" - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/run_bacteria_odb10/busco_sequences/fragmented_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/run_bacteria_odb10/busco_sequences/multi_copy_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/run_bacteria_odb10/busco_sequences/single_copy_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/run_bacteria_odb10/full_table.tsv - md5sum: c9651b88b10871abc260ee655898e828 - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/run_bacteria_odb10/hmmer_output.tar.gz - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/run_bacteria_odb10/missing_busco_list.tsv - md5sum: 9939309df2da5419de88c32d1435c779 - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/run_bacteria_odb10/short_summary.json - contains: - - "one_line_summary" - - "mode" - - "dataset" - - path: output/busco/test-bacteria_odb10-busco/genome.fasta/run_bacteria_odb10/short_summary.txt - contains: - - "# BUSCO version is:" - - "Results:" - - "busco:" - - path: output/busco/test-bacteria_odb10-busco/genome.fna/logs/bbtools_err.log - - path: output/busco/test-bacteria_odb10-busco/genome.fna/logs/bbtools_out.log - md5sum: 9caf1a1434414c78562eb0bbb9c0e53f - - path: output/busco/test-bacteria_odb10-busco/genome.fna/logs/hmmsearch_err.log - - path: output/busco/test-bacteria_odb10-busco/genome.fna/logs/hmmsearch_out.log - contains: - - "# hmmsearch :: search profile(s) against a sequence database" - - "# target sequence database:" - - "Internal pipeline statistics summary:" - - "[ok]" - - path: output/busco/test-bacteria_odb10-busco/genome.fna/logs/prodigal_err.log - md5sum: 538510cfc7483498210f01e53fe035ad - - path: output/busco/test-bacteria_odb10-busco/genome.fna/logs/prodigal_out.log - md5sum: 61050b0706addc9498b2088a2d6efa9a - - path: output/busco/test-bacteria_odb10-busco/genome.fna/prodigal_output/.checkpoint - contains: - - "Tool: prodigal" - - "Completed" - - "jobs" - - path: output/busco/test-bacteria_odb10-busco/genome.fna/prodigal_output/predicted_genes/predicted.faa - md5sum: 836e9a80d33d8b89168f07ddc13ee991 - - path: output/busco/test-bacteria_odb10-busco/genome.fna/prodigal_output/predicted_genes/predicted.fna - md5sum: 20eeb75f86842e6e136f02bca8b73a9f - - path: output/busco/test-bacteria_odb10-busco/genome.fna/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_11.faa - md5sum: 836e9a80d33d8b89168f07ddc13ee991 - - path: output/busco/test-bacteria_odb10-busco/genome.fna/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_11.fna - md5sum: 20eeb75f86842e6e136f02bca8b73a9f - - path: output/busco/test-bacteria_odb10-busco/genome.fna/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_11_err.log - md5sum: 538510cfc7483498210f01e53fe035ad - - path: output/busco/test-bacteria_odb10-busco/genome.fna/prodigal_output/predicted_genes/tmp/prodigal_mode_single_code_11_out.log - md5sum: 61050b0706addc9498b2088a2d6efa9a - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/.bbtools_output/.checkpoint - contains: - - "Tool: bbtools" - - "Completed" - - "jobs" - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/busco_sequences/fragmented_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/busco_sequences/multi_copy_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/busco_sequences/single_copy_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/full_table.tsv - md5sum: c56edab1dc1522e993c25ae2b730799f - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/hmmer_output.tar.gz - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/missing_busco_list.tsv - md5sum: b533ef30270f27160acce85a22d01bf5 - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/short_summary.json - contains: - - "one_line_summary" - - "mode" - - "dataset" - - path: output/busco/test-bacteria_odb10-busco/genome.fna/run_bacteria_odb10/short_summary.txt - contains: - - "# BUSCO version is:" - - "Results:" - - "busco:" - - path: output/busco/test-bacteria_odb10-busco/logs/busco.log - contains: - - "DEBUG:busco.run_BUSCO" - - "Results from dataset" - - "how to cite BUSCO" - - path: output/busco/versions.yml - -- name: busco test_busco_eukaryote_metaeuk - command: nextflow run ./tests/modules/nf-core/busco -entry test_busco_eukaryote_metaeuk -c ./tests/config/nextflow.config - tags: - - busco - files: - - path: output/busco/short_summary.specific.eukaryota_odb10.genome.fasta.json - contains: - - "one_line_summary" - - "mode" - - "dataset" - - path: output/busco/short_summary.specific.eukaryota_odb10.genome.fasta.txt - contains: - - "BUSCO version" - - "The lineage dataset is" - - "BUSCO was run in mode" - - "Complete BUSCOs" - - "Missing BUSCOs" - - "Dependencies and versions" - - path: output/busco/test-eukaryota_odb10-busco.batch_summary.txt - md5sum: ff6d8277e452a83ce9456bbee666feb6 - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/bbtools_err.log - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/bbtools_out.log - md5sum: e63debaa653f18f7405d936050abc093 - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/hmmsearch_err.log - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/hmmsearch_out.log - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/metaeuk_run1_err.log - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/metaeuk_run1_out.log - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/metaeuk_run2_err.log - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/metaeuk_run2_out.log - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/.bbtools_output/.checkpoint - contains: - - "Tool: bbtools" - - "Completed" - - "jobs" - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/busco_sequences/fragmented_busco_sequences.tar.gz - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/busco_sequences/multi_copy_busco_sequences.tar.gz - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/busco_sequences/single_copy_busco_sequences.tar.gz - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/full_table.tsv - md5sum: bd880e90b9e5620a58943a3e0f9ff16b - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/hmmer_output.tar.gz - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/.checkpoint - contains: - - "Tool: metaeuk" - - "Completed" - - "jobs" - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/combined_pred_proteins.fas - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/initial_results/genome.fasta.codon.fas - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/initial_results/genome.fasta.fas - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/initial_results/genome.fasta.gff - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/initial_results/genome.fasta.headersMap.tsv - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/refseq_db_rerun.faa - md5sum: d80b8fa4cb5ed0d47d63d6aa93635bc2 - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/rerun_results/genome.fasta.codon.fas - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/rerun_results/genome.fasta.fas - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/rerun_results/genome.fasta.gff - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/rerun_results/genome.fasta.headersMap.tsv - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/missing_busco_list.tsv - md5sum: 1e8e79c540fd2e69ba0d2659d9eb2988 - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/short_summary.json - contains: - - "one_line_summary" - - "mode" - - "dataset" - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/short_summary.txt - contains: - - "# BUSCO version is:" - - "Results:" - - "busco:" - - path: output/busco/test-eukaryota_odb10-busco/logs/busco.log - contains: - - "DEBUG:busco.run_BUSCO" - - "Results from dataset" - - "how to cite BUSCO" - - path: output/busco/versions.yml - -- name: busco test_busco_eukaryote_augustus - command: nextflow run ./tests/modules/nf-core/busco -entry test_busco_eukaryote_augustus -c ./tests/config/nextflow.config - tags: - - busco - files: - - path: output/busco/short_summary.specific.eukaryota_odb10.genome.fasta.json - contains: - - "one_line_summary" - - "mode" - - "dataset" - - path: output/busco/short_summary.specific.eukaryota_odb10.genome.fasta.txt - contains: - - "BUSCO version" - - "The lineage dataset is" - - "BUSCO was run in mode" - - "Complete BUSCOs" - - "Missing BUSCOs" - - "Dependencies and versions" - - path: output/busco/test-eukaryota_odb10-busco.batch_summary.txt - md5sum: ff6d8277e452a83ce9456bbee666feb6 - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/bbtools_err.log - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/bbtools_out.log - md5sum: e63debaa653f18f7405d936050abc093 - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/hmmsearch_err.log - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/hmmsearch_out.log - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/metaeuk_run1_err.log - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/metaeuk_run1_out.log - contains: - - "metaeuk" - - "easy-predict" - - "Compute score and coverage" - - "Time for processing:" - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/metaeuk_run2_err.log - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/logs/metaeuk_run2_out.log - contains: - - "metaeuk" - - "easy-predict" - - "Compute score and coverage" - - "Time for processing:" - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/.bbtools_output/.checkpoint - contains: - - "Tool: bbtools" - - "Completed" - - "jobs" - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/busco_sequences/fragmented_busco_sequences.tar.gz - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/busco_sequences/multi_copy_busco_sequences.tar.gz - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/busco_sequences/single_copy_busco_sequences.tar.gz - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/full_table.tsv - md5sum: bd880e90b9e5620a58943a3e0f9ff16b - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/hmmer_output.tar.gz - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/.checkpoint - contains: - - "Tool: metaeuk" - - "Completed" - - "jobs" - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/combined_pred_proteins.fas - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/initial_results/genome.fasta.codon.fas - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/initial_results/genome.fasta.fas - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/initial_results/genome.fasta.gff - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/initial_results/genome.fasta.headersMap.tsv - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/refseq_db_rerun.faa - md5sum: d80b8fa4cb5ed0d47d63d6aa93635bc2 - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/rerun_results/genome.fasta.codon.fas - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/rerun_results/genome.fasta.fas - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/rerun_results/genome.fasta.gff - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/metaeuk_output/rerun_results/genome.fasta.headersMap.tsv - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/missing_busco_list.tsv - md5sum: 1e8e79c540fd2e69ba0d2659d9eb2988 - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/short_summary.json - contains: - - "one_line_summary" - - "mode" - - "dataset" - - path: output/busco/test-eukaryota_odb10-busco/genome.fasta/run_eukaryota_odb10/short_summary.txt - contains: - - "# BUSCO version is:" - - "Results:" - - "busco:" - - path: output/busco/test-eukaryota_odb10-busco/logs/busco.log - contains: - - "DEBUG:busco.run_BUSCO" - - "Results from dataset" - - "how to cite BUSCO" - - path: output/busco/versions.yml - -- name: busco test_busco_protein - command: nextflow run ./tests/modules/nf-core/busco -entry test_busco_protein -c ./tests/config/nextflow.config - tags: - - busco - files: - - path: output/busco/short_summary.specific.bacteria_odb10.proteome.fasta.json - contains: - - "one_line_summary" - - "mode" - - "dataset" - - path: output/busco/short_summary.specific.bacteria_odb10.proteome.fasta.txt - contains: - - "BUSCO version" - - "The lineage dataset is" - - "BUSCO was run in mode" - - "Complete BUSCOs" - - "Missing BUSCOs" - - "Dependencies and versions" - - path: output/busco/test-bacteria_odb10-busco.batch_summary.txt - md5sum: 7a65e6cbb6c56a2ea4e739ae0aa3297d - - path: output/busco/test-bacteria_odb10-busco/logs/busco.log - contains: - - "DEBUG:busco.run_BUSCO" - - "Results from dataset" - - "how to cite BUSCO" - - path: output/busco/test-bacteria_odb10-busco/proteome.fasta/logs/hmmsearch_err.log - - path: output/busco/test-bacteria_odb10-busco/proteome.fasta/logs/hmmsearch_out.log - contains: - - "# hmmsearch :: search profile(s) against a sequence database" - - "# target sequence database:" - - "Internal pipeline statistics summary:" - - "[ok]" - - path: output/busco/test-bacteria_odb10-busco/proteome.fasta/run_bacteria_odb10/busco_sequences/fragmented_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/proteome.fasta/run_bacteria_odb10/busco_sequences/multi_copy_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/proteome.fasta/run_bacteria_odb10/busco_sequences/single_copy_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/proteome.fasta/run_bacteria_odb10/full_table.tsv - md5sum: 0e34f1011cd83ea1d5d5103ec62b8922 - - path: output/busco/test-bacteria_odb10-busco/proteome.fasta/run_bacteria_odb10/hmmer_output.tar.gz - - path: output/busco/test-bacteria_odb10-busco/proteome.fasta/run_bacteria_odb10/missing_busco_list.tsv - md5sum: 9939309df2da5419de88c32d1435c779 - - path: output/busco/test-bacteria_odb10-busco/proteome.fasta/run_bacteria_odb10/short_summary.json - contains: - - "one_line_summary" - - "mode" - - "dataset" - - path: output/busco/test-bacteria_odb10-busco/proteome.fasta/run_bacteria_odb10/short_summary.txt - contains: - - "# BUSCO version is:" - - "Results:" - - "busco:" - - path: output/busco/versions.yml - -- name: busco test_busco_transcriptome - command: nextflow run ./tests/modules/nf-core/busco -entry test_busco_transcriptome -c ./tests/config/nextflow.config - tags: - - busco - files: - - path: output/busco/short_summary.specific.bacteria_odb10.test1.contigs.fa.json - contains: - - "one_line_summary" - - "mode" - - "dataset" - - path: output/busco/short_summary.specific.bacteria_odb10.test1.contigs.fa.txt - contains: - - "BUSCO version" - - "The lineage dataset is" - - "BUSCO was run in mode" - - "Complete BUSCOs" - - "Missing BUSCOs" - - "Dependencies and versions" - - path: output/busco/test-bacteria_odb10-busco.batch_summary.txt - md5sum: 46118ecf60d1b87d22b96d80f4f03632 - - path: output/busco/test-bacteria_odb10-busco/logs/busco.log - contains: - - "DEBUG:busco.run_BUSCO" - - "Results from dataset" - - "how to cite BUSCO" - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/blast_db/.checkpoint - contains: - - "Tool: makeblastdb" - - "Completed" - - "jobs" - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/blast_db/test1.contigs.fa.ndb - md5sum: 3788c017fe5e6f0f58224e9cdd21822b - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/blast_db/test1.contigs.fa.nhr - md5sum: 8ecd2ce392bb5e25ddbe1d85f879582e - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/blast_db/test1.contigs.fa.nin - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/blast_db/test1.contigs.fa.njs - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/blast_db/test1.contigs.fa.not - md5sum: 0c340e376c7e85d19f82ec1a833e6a6e - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/blast_db/test1.contigs.fa.nsq - md5sum: 532d5c0a7ea00fe95ca3c97cb3be6198 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/blast_db/test1.contigs.fa.ntf - md5sum: de1250813f0c7affc6d12dac9d0fb6bb - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/blast_db/test1.contigs.fa.nto - md5sum: ff74bd41f9cc9b011c63a32c4f7693bf - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/logs/hmmsearch_err.log - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/logs/hmmsearch_out.log - contains: - - "# hmmsearch :: search profile(s) against a sequence database" - - "# target sequence database:" - - "Internal pipeline statistics summary:" - - "[ok]" - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/logs/makeblastdb_err.log - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/logs/makeblastdb_out.log - contains: - - "Building a new DB" - - "Adding sequences from FASTA" - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/logs/tblastn_err.log - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/logs/tblastn_out.log - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/.checkpoint - contains: - - "Tool: tblastn" - - "Completed" - - "jobs" - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/coordinates.tsv - md5sum: cc30eed321944af293452bdbcfc24292 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_101.temp - md5sum: 73e9c65fc83fedc58f57f09b08f08238 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_119.temp - md5sum: 7fa4cc7955ec0cc36330a221c579b975 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_129.temp - md5sum: 6f1601c875d019e3f6f1f98ed8e988d4 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_138.temp - md5sum: 3f8e034686cd240c2330650d791bcae2 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_143.temp - md5sum: df3dfa8e9ba30ed70cf75b5e7abf2179 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_172.temp - md5sum: 7d463e0e6cf7169bc9077d8dc776dda1 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_178.temp - md5sum: 2288edf7fa4f88f51b4cf4d94086f77e - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_188.temp - md5sum: 029906abbad6d87fc57830dd548cac24 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_195.temp - md5sum: 4937f3b348774a31b1160a00297c29cc - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_210.temp - md5sum: afcb20ba4c466479d6b91c8c62251e1f - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_232.temp - md5sum: 2e1e823ce017345bd998191a39fa9924 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_268.temp - md5sum: 08c2d82c34ecffbe1c638b410349412e - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_29.temp - md5sum: cd9b63cf93524284781535c888313764 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_44.temp - md5sum: d1929b742b24ebe379bf4801ca882dca - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_58.temp - md5sum: 69215765b010c05336538cb322c900b3 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_72.temp - md5sum: 6feaa1cc3b0899a147ea9d466878f3e3 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_80.temp - md5sum: 13625eae14e860a96ce17cd4e37e9d01 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_81.temp - md5sum: e14b2484649b0dbc8926815c207b806d - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_93.temp - md5sum: 6902c93691df00e690faea914c71839e - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/sequences/k141_97.temp - md5sum: 0a0d9d38a83acbd5ad43c29cdf429988 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/blast_output/tblastn.tsv - contains: - - "TBLASTN" - - "BLAST processed" - - "queries" - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/busco_sequences/fragmented_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/busco_sequences/multi_copy_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/busco_sequences/single_copy_busco_sequences.tar.gz - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/full_table.tsv - md5sum: 24df25199e13c88bd892fc3e7b541ca0 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/hmmer_output.tar.gz - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/missing_busco_list.tsv - md5sum: e7232e2b8cca4fdfdd9e363b39ebbc81 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/short_summary.json - contains: - - "one_line_summary" - - "mode" - - "dataset" - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/short_summary.txt - contains: - - "# BUSCO version is:" - - "Results:" - - "busco:" - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/run_bacteria_odb10/single_copy_proteins.faa - md5sum: e04b9465733577ae6e4bccb7aa01e720 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/1024388at2.faa - md5sum: 7333c39a20258f20c7019ea0cd83157c - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/1054741at2.faa - md5sum: ebb481e77a824685fbe04d8a2f3a0d7d - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/1093223at2.faa - md5sum: 34621c7d499034e8f8e6b92fd4020a93 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/1151822at2.faa - md5sum: aa89ca381c1c70c9c4e1380351ca7c2a - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/143460at2.faa - md5sum: f2e91d78b8dd3722840378789f29e8c8 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/1491686at2.faa - md5sum: 73c25aef5c9cba7f4151804941b146ea - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/1504821at2.faa - md5sum: cda556018d1f84ebe517e89f6fc107d0 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/1574817at2.faa - md5sum: a9096c9fb8b25c78a72871ab0463acdc - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/1592033at2.faa - md5sum: e463d25ce186c0cebfd749474f3a4c64 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/1623045at2.faa - md5sum: f2cfd241590c6d8377286d6135480937 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/1661836at2.faa - md5sum: 586569546fb9861502468e3d9ba2775c - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/1674344at2.faa - md5sum: 24c658bee14ad84b062d81ad96642eb8 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/1698718at2.faa - md5sum: 0b8e26ddf5149bbd8805be7af125208d - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/1990650at2.faa - md5sum: 159320712ee01fb2ccb31a25df44eead - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/223233at2.faa - md5sum: 812629c0b06ac3d18661c2ca78de0c08 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/402899at2.faa - md5sum: f7ff4e1591342d30b77392a2e84b57d9 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/505485at2.faa - md5sum: 7b34a24fc49c540d46fcf96ff5129564 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/665824at2.faa - md5sum: 4cff2df64f6bcaff8bc19c234c8bcccd - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/776861at2.faa - md5sum: 613af7a3fea30ea2bece66f603b9284a - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/874197at2.faa - md5sum: a7cd1b13c9ef91c7ef4e31614166f197 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/932854at2.faa - md5sum: fe313ffd5efdb0fed887a04fba352552 - - path: output/busco/test-bacteria_odb10-busco/test1.contigs.fa/translated_proteins/95696at2.faa - md5sum: 4e1f30a2fea4dfbf9bb7fae2700622a0 - - path: output/busco/versions.yml diff --git a/modules/nf-core/busco/busco/tests/tags.yml b/modules/nf-core/busco/busco/tests/tags.yml deleted file mode 100644 index 7c4d2835..00000000 --- a/modules/nf-core/busco/busco/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -busco/busco: - - "modules/nf-core/busco/busco/**" diff --git a/modules/nf-core/bwamem2/index/environment.yml b/modules/nf-core/bwamem2/index/environment.yml index 15cee238..f3637444 100644 --- a/modules/nf-core/bwamem2/index/environment.yml +++ b/modules/nf-core/bwamem2/index/environment.yml @@ -1,5 +1,13 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda + dependencies: - - bioconda::bwa-mem2=2.2.1 + # renovate: datasource=conda depName=bioconda/bwa-mem2 + - bwa-mem2=2.3 + # renovate: datasource=conda depName=bioconda/htslib + - htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - samtools=1.22.1 diff --git a/modules/nf-core/bwamem2/index/main.nf b/modules/nf-core/bwamem2/index/main.nf index b7688285..cb2c4bb2 100644 --- a/modules/nf-core/bwamem2/index/main.nf +++ b/modules/nf-core/bwamem2/index/main.nf @@ -1,18 +1,20 @@ process BWAMEM2_INDEX { tag "$fasta" - label 'process_single' + // NOTE Requires 28N GB memory where N is the size of the reference sequence, floor of 280M + // source: https://github.com/bwa-mem2/bwa-mem2/issues/9 + memory { 280.MB * Math.ceil(fasta.size() / 10000000) * task.attempt } conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bwa-mem2:2.2.1--he513fc3_0' : - 'biocontainers/bwa-mem2:2.2.1--he513fc3_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/e0/e05ce34b46ad42810eb29f74e4e304c0cb592b2ca15572929ed8bbaee58faf01/data' : + 'community.wave.seqera.io/library/bwa-mem2_htslib_samtools:db98f81f55b64113' }" input: tuple val(meta), path(fasta) output: tuple val(meta), path("bwamem2"), emit: index - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('bwamem2'), eval('bwa-mem2 version | grep -o -E "[0-9]+(\\.[0-9]+)+"'), emit: versions_bwamem2, topic: versions when: task.ext.when == null || task.ext.when @@ -25,12 +27,8 @@ process BWAMEM2_INDEX { bwa-mem2 \\ index \\ $args \\ - $fasta -p bwamem2/${prefix} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bwamem2: \$(echo \$(bwa-mem2 version 2>&1) | sed 's/.* //') - END_VERSIONS + -p bwamem2/${prefix} \\ + $fasta """ stub: @@ -43,10 +41,5 @@ process BWAMEM2_INDEX { touch bwamem2/${prefix}.pac touch bwamem2/${prefix}.amb touch bwamem2/${prefix}.bwt.2bit.64 - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bwamem2: \$(echo \$(bwa-mem2 version 2>&1) | sed 's/.* //') - END_VERSIONS """ } diff --git a/modules/nf-core/bwamem2/index/meta.yml b/modules/nf-core/bwamem2/index/meta.yml index 74f54ef0..12074860 100644 --- a/modules/nf-core/bwamem2/index/meta.yml +++ b/modules/nf-core/bwamem2/index/meta.yml @@ -12,8 +12,9 @@ tools: a large reference genome, such as the human genome. homepage: https://github.com/bwa-mem2/bwa-mem2 documentation: https://github.com/bwa-mem2/bwa-mem2#usage - licence: ["MIT"] - identifier: "" + licence: + - "MIT" + identifier: "biotools:bwa-mem2" input: - - meta: type: map @@ -23,22 +24,49 @@ input: - fasta: type: file description: Input genome fasta file + ontologies: + - edam: "http://edamontology.org/data_2044" + - edam: "http://edamontology.org/format_1929" output: - - index: - - meta: + index: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - bwamem2: - type: file + type: string description: BWA genome index files pattern: "*.{0123,amb,ann,bwt.2bit.64,pac}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: "http://edamontology.org/data_3210" + versions_bwamem2: + - - ${task.process}: + type: string + description: The name of the process + - bwamem2: + type: string + description: BWA genome index files + pattern: "*.{0123,amb,ann,bwt.2bit.64,pac}" + ontologies: + - edam: "http://edamontology.org/data_3210" + - bwa-mem2 version | grep -o -E "[0-9]+(\.[0-9]+)+": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - bwamem2: + type: string + description: BWA genome index files + pattern: "*.{0123,amb,ann,bwt.2bit.64,pac}" + ontologies: + - edam: "http://edamontology.org/data_3210" + - bwa-mem2 version | grep -o -E "[0-9]+(\.[0-9]+)+": + type: eval + description: The expression to obtain the version of the tool authors: - "@maxulysse" maintainers: diff --git a/modules/nf-core/bwamem2/index/tests/main.nf.test b/modules/nf-core/bwamem2/index/tests/main.nf.test index dbf11132..3ee91048 100644 --- a/modules/nf-core/bwamem2/index/tests/main.nf.test +++ b/modules/nf-core/bwamem2/index/tests/main.nf.test @@ -8,7 +8,30 @@ nextflow_process { script "../main.nf" process "BWAMEM2_INDEX" - test("BWAMEM2 index") { + test("fasta") { + + when { + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("fasta - stub") { + + options "-stub" when { process { diff --git a/modules/nf-core/bwamem2/index/tests/main.nf.test.snap b/modules/nf-core/bwamem2/index/tests/main.nf.test.snap index 69b268ee..776e87be 100644 --- a/modules/nf-core/bwamem2/index/tests/main.nf.test.snap +++ b/modules/nf-core/bwamem2/index/tests/main.nf.test.snap @@ -1,5 +1,58 @@ { - "BWAMEM2 index": { + "fasta - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "genome.fasta.0123:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.amb:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.ann:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.bwt.2bit.64:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.pac:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + [ + "BWAMEM2_INDEX", + "bwamem2", + "2.2.1" + ] + ], + "index": [ + [ + { + "id": "test" + }, + [ + "genome.fasta.0123:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.amb:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.ann:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.bwt.2bit.64:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.pac:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions_bwamem2": [ + [ + "BWAMEM2_INDEX", + "bwamem2", + "2.2.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-09T16:19:38.013344" + }, + "fasta": { "content": [ { "0": [ @@ -17,7 +70,11 @@ ] ], "1": [ - "versions.yml:md5,9ffd13d12e7108ed15c58566bc4717d6" + [ + "BWAMEM2_INDEX", + "bwamem2", + "2.2.1" + ] ], "index": [ [ @@ -33,15 +90,19 @@ ] ] ], - "versions": [ - "versions.yml:md5,9ffd13d12e7108ed15c58566bc4717d6" + "versions_bwamem2": [ + [ + "BWAMEM2_INDEX", + "bwamem2", + "2.2.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.02.0" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-03-18T12:59:39.132616" + "timestamp": "2026-02-09T16:19:32.542622" } } \ No newline at end of file diff --git a/modules/nf-core/bwamem2/index/tests/tags.yml b/modules/nf-core/bwamem2/index/tests/tags.yml deleted file mode 100644 index 3953018e..00000000 --- a/modules/nf-core/bwamem2/index/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -bwamem2/index: - - modules/nf-core/bwamem2/index/** diff --git a/modules/nf-core/cat/cat/environment.yml b/modules/nf-core/cat/cat/environment.yml index 9b01c865..98511769 100644 --- a/modules/nf-core/cat/cat/environment.yml +++ b/modules/nf-core/cat/cat/environment.yml @@ -1,5 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - conda-forge::pigz=2.3.4 + - conda-forge::pigz=2.8 diff --git a/modules/nf-core/cat/cat/main.nf b/modules/nf-core/cat/cat/main.nf index 2862c64c..15274c4c 100644 --- a/modules/nf-core/cat/cat/main.nf +++ b/modules/nf-core/cat/cat/main.nf @@ -4,15 +4,15 @@ process CAT_CAT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/pigz:2.3.4' : - 'biocontainers/pigz:2.3.4' }" + 'https://depot.galaxyproject.org/singularity/pigz:2.8' : + 'biocontainers/pigz:2.8' }" input: tuple val(meta), path(files_in) output: tuple val(meta), path("${prefix}"), emit: file_out - path "versions.yml" , emit: versions + tuple val("${task.process}"), val("pigz"), eval("pigz --version 2>&1 | sed 's/pigz //g'"), topic: versions, emit: versions_cat when: task.ext.when == null || task.ext.when @@ -20,7 +20,7 @@ process CAT_CAT { script: def args = task.ext.args ?: '' def args2 = task.ext.args2 ?: '' - def file_list = files_in.collect { it.toString() } + def file_list = files_in.collect { file -> file.toString() } // choose appropriate concatenation tool depending on input and output format @@ -55,7 +55,7 @@ process CAT_CAT { """ stub: - def file_list = files_in.collect { it.toString() } + def file_list = files_in.collect { file -> file.toString() } prefix = task.ext.prefix ?: "${meta.id}${file_list[0].substring(file_list[0].lastIndexOf('.'))}" if(file_list.contains(prefix.trim())) { error "The name of the input file can't be the same as for the output prefix in the " + diff --git a/modules/nf-core/cat/cat/meta.yml b/modules/nf-core/cat/cat/meta.yml index 81778a06..36a7359b 100644 --- a/modules/nf-core/cat/cat/meta.yml +++ b/modules/nf-core/cat/cat/meta.yml @@ -20,21 +20,41 @@ input: type: file description: List of compressed / uncompressed files pattern: "*" + ontologies: [] output: - - file_out: - - meta: - type: file - description: Concatenated file. Will be gzipped if file_out ends with ".gz" - pattern: "${file_out}" + file_out: + - - meta: + type: map + description: Groovy Map containing sample information - ${prefix}: type: file - description: Concatenated file. Will be gzipped if file_out ends with ".gz" + description: Concatenated file. Will be gzipped if file_out ends with + ".gz" pattern: "${file_out}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_cat: + - - ${task.process}: + type: string + description: The name of the process + - pigz: + type: string + description: The name of the tool + - "pigz --version 2>&1 | sed 's/pigz //g'": + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - pigz: + type: string + description: The name of the tool + - "pigz --version 2>&1 | sed 's/pigz //g'": + type: eval + description: The expression to obtain the version of the tool + authors: - "@erikrikarddaniel" - "@FriederikeHanssen" diff --git a/modules/nf-core/cat/cat/tests/main.nf.test b/modules/nf-core/cat/cat/tests/main.nf.test index 9cb16178..030c6649 100644 --- a/modules/nf-core/cat/cat/tests/main.nf.test +++ b/modules/nf-core/cat/cat/tests/main.nf.test @@ -3,16 +3,14 @@ nextflow_process { name "Test Process CAT_CAT" script "../main.nf" process "CAT_CAT" + tag "modules" tag "modules_nfcore" tag "cat" tag "cat/cat" - test("test_cat_name_conflict") { + test("sarscov2 - genome - error: name conflict") { when { - params { - outdir = "${outputDir}" - } process { """ input[0] = @@ -30,16 +28,13 @@ nextflow_process { assertAll( { assert !process.success }, { assert process.stdout.toString().contains("The name of the input file can't be the same as for the output prefix") }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(process.out).match() } ) } } - test("test_cat_unzipped_unzipped") { + test("sarscov2 - [ fasta, sizes ] - unzipped") { when { - params { - outdir = "${outputDir}" - } process { """ input[0] = @@ -62,11 +57,8 @@ nextflow_process { } - test("test_cat_zipped_zipped") { + test("sarscov2 - [ gff3_gz, maf_gz ] - zipped") { when { - params { - outdir = "${outputDir}" - } process { """ input[0] = @@ -81,25 +73,20 @@ nextflow_process { } } then { - def lines = path(process.out.file_out.get(0).get(1)).linesGzip assertAll( { assert process.success }, - { assert snapshot( - lines[0..5], - lines.size(), - process.out.versions - ).match() + { assert snapshot(process.out).match() } ) } } - test("test_cat_zipped_unzipped") { - config './nextflow_zipped_unzipped.config' + test("sarscov2 - [ gff3_gz, maf_gz ] - unzipped") { + config './nextflow.config' when { params { - outdir = "${outputDir}" + cat_prefix = "cat.txt" } process { """ @@ -124,11 +111,12 @@ nextflow_process { } - test("test_cat_unzipped_zipped") { - config './nextflow_unzipped_zipped.config' + test("sarscov2 - [ fasta, sizes ] - zipped") { + config './nextflow.config' + when { params { - outdir = "${outputDir}" + cat_prefix = "cat.txt.gz" } process { """ @@ -144,24 +132,19 @@ nextflow_process { } } then { - def lines = path(process.out.file_out.get(0).get(1)).linesGzip assertAll( { assert process.success }, - { assert snapshot( - lines[0..5], - lines.size(), - process.out.versions - ).match() - } + { assert snapshot(process.out).match() } ) } } - test("test_cat_one_file_unzipped_zipped") { - config './nextflow_unzipped_zipped.config' + test("sarscov2 - fasta - zipped") { + config './nextflow.config' + when { params { - outdir = "${outputDir}" + cat_prefix = "cat.txt.gz" } process { """ @@ -176,15 +159,33 @@ nextflow_process { } } then { - def lines = path(process.out.file_out.get(0).get(1)).linesGzip assertAll( { assert process.success }, - { assert snapshot( - lines[0..5], - lines.size(), - process.out.versions - ).match() - } + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 - fasta - unzipped - stub") { + options "-stub" + + when { + process { + """ + input[0] = + [ + [ id:'test', single_end:true ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/cat/cat/tests/main.nf.test.snap b/modules/nf-core/cat/cat/tests/main.nf.test.snap index b7623ee6..5b4e4cc3 100644 --- a/modules/nf-core/cat/cat/tests/main.nf.test.snap +++ b/modules/nf-core/cat/cat/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "test_cat_unzipped_unzipped": { + "sarscov2 - [ gff3_gz, maf_gz ] - unzipped": { "content": [ { "0": [ @@ -8,11 +8,15 @@ "id": "test", "single_end": true }, - "test.fasta:md5,f44b33a0e441ad58b2d3700270e2dbe2" + "cat.txt:md5,c439d3b60e7bc03e8802a451a0d9a5d9" ] ], "1": [ - "versions.yml:md5,115ed6177ebcff24eb99d503fa5ef894" + [ + "CAT_CAT", + "pigz", + "2.8" + ] ], "file_out": [ [ @@ -20,21 +24,25 @@ "id": "test", "single_end": true }, - "test.fasta:md5,f44b33a0e441ad58b2d3700270e2dbe2" + "cat.txt:md5,c439d3b60e7bc03e8802a451a0d9a5d9" ] ], - "versions": [ - "versions.yml:md5,115ed6177ebcff24eb99d503fa5ef894" + "versions_cat": [ + [ + "CAT_CAT", + "pigz", + "2.8" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2023-10-16T14:32:18.500464399" + "timestamp": "2025-12-10T09:08:31.479828" }, - "test_cat_zipped_unzipped": { + "sarscov2 - fasta - unzipped - stub": { "content": [ { "0": [ @@ -43,11 +51,15 @@ "id": "test", "single_end": true }, - "cat.txt:md5,c439d3b60e7bc03e8802a451a0d9a5d9" + "test.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ - "versions.yml:md5,115ed6177ebcff24eb99d503fa5ef894" + [ + "CAT_CAT", + "pigz", + "2.8" + ] ], "file_out": [ [ @@ -55,93 +67,217 @@ "id": "test", "single_end": true }, - "cat.txt:md5,c439d3b60e7bc03e8802a451a0d9a5d9" + "test.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,115ed6177ebcff24eb99d503fa5ef894" + "versions_cat": [ + [ + "CAT_CAT", + "pigz", + "2.8" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2023-10-16T14:32:49.642741302" + "timestamp": "2025-12-10T16:16:28.118094" }, - "test_cat_zipped_zipped": { + "sarscov2 - [ fasta, sizes ] - zipped": { "content": [ - [ - "MT192765.1\tGenbank\ttranscript\t259\t29667\t.\t+\t.\tID=unknown_transcript_1;geneID=orf1ab;gene_name=orf1ab", - "MT192765.1\tGenbank\tgene\t259\t21548\t.\t+\t.\tParent=unknown_transcript_1", - "MT192765.1\tGenbank\tCDS\t259\t13461\t.\t+\t0\tParent=unknown_transcript_1;exception=\"ribosomal slippage\";gbkey=CDS;gene=orf1ab;note=\"pp1ab;translated=by -1 ribosomal frameshift\";product=\"orf1ab polyprotein\";protein_id=QIK50426.1", - "MT192765.1\tGenbank\tCDS\t13461\t21548\t.\t+\t0\tParent=unknown_transcript_1;exception=\"ribosomal slippage\";gbkey=CDS;gene=orf1ab;note=\"pp1ab;translated=by -1 ribosomal frameshift\";product=\"orf1ab polyprotein\";protein_id=QIK50426.1", - "MT192765.1\tGenbank\tCDS\t21556\t25377\t.\t+\t0\tParent=unknown_transcript_1;gbkey=CDS;gene=S;note=\"structural protein\";product=\"surface glycoprotein\";protein_id=QIK50427.1", - "MT192765.1\tGenbank\tgene\t21556\t25377\t.\t+\t.\tParent=unknown_transcript_1" - ], - 78, - [ - "versions.yml:md5,115ed6177ebcff24eb99d503fa5ef894" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "cat.txt.gz:md5,f44b33a0e441ad58b2d3700270e2dbe2" + ] + ], + "1": [ + [ + "CAT_CAT", + "pigz", + "2.8" + ] + ], + "file_out": [ + [ + { + "id": "test", + "single_end": true + }, + "cat.txt.gz:md5,f44b33a0e441ad58b2d3700270e2dbe2" + ] + ], + "versions_cat": [ + [ + "CAT_CAT", + "pigz", + "2.8" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2025-12-10T16:15:56.529595" + }, + "sarscov2 - genome - error: name conflict": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "file_out": [ + + ], + "versions_cat": [ + + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-22T11:51:46.802978" + "timestamp": "2025-12-10T16:14:54.496538" }, - "test_cat_name_conflict": { + "sarscov2 - [ fasta, sizes ] - unzipped": { "content": [ - [ - - ] + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fasta:md5,f44b33a0e441ad58b2d3700270e2dbe2" + ] + ], + "1": [ + [ + "CAT_CAT", + "pigz", + "2.8" + ] + ], + "file_out": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fasta:md5,f44b33a0e441ad58b2d3700270e2dbe2" + ] + ], + "versions_cat": [ + [ + "CAT_CAT", + "pigz", + "2.8" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-22T11:51:29.45394" + "timestamp": "2025-12-10T11:26:29.942203" }, - "test_cat_one_file_unzipped_zipped": { + "sarscov2 - [ gff3_gz, maf_gz ] - zipped": { "content": [ - [ - ">MT192765.1 Severe acute respiratory syndrome coronavirus 2 isolate SARS-CoV-2/human/USA/PC00101P/2020, complete genome", - "GTTTATACCTTCCCAGGTAACAAACCAACCAACTTTCGATCTCTTGTAGATCTGTTCTCTAAACGAACTTTAAAATCTGT", - "GTGGCTGTCACTCGGCTGCATGCTTAGTGCACTCACGCAGTATAATTAATAACTAATTACTGTCGTTGACAGGACACGAG", - "TAACTCGTCTATCTTCTGCAGGCTGCTTACGGTTTCGTCCGTGTTGCAGCCGATCATCAGCACATCTAGGTTTTGTCCGG", - "GTGTGACCGAAAGGTAAGATGGAGAGCCTTGTCCCTGGTTTCAACGAGAAAACACACGTCCAACTCAGTTTGCCTGTTTT", - "ACAGGTTCGCGACGTGCTCGTACGTGGCTTTGGAGACTCCGTGGAGGAGGTCTTATCAGAGGCACGTCAACATCTTAAAG" - ], - 374, - [ - "versions.yml:md5,115ed6177ebcff24eb99d503fa5ef894" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.gff3.gz:md5,c439d3b60e7bc03e8802a451a0d9a5d9" + ] + ], + "1": [ + [ + "CAT_CAT", + "pigz", + "2.8" + ] + ], + "file_out": [ + [ + { + "id": "test", + "single_end": true + }, + "test.gff3.gz:md5,c439d3b60e7bc03e8802a451a0d9a5d9" + ] + ], + "versions_cat": [ + [ + "CAT_CAT", + "pigz", + "2.8" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-22T11:52:02.774016" + "timestamp": "2025-12-10T11:26:45.679401" }, - "test_cat_unzipped_zipped": { + "sarscov2 - fasta - zipped": { "content": [ - [ - ">MT192765.1 Severe acute respiratory syndrome coronavirus 2 isolate SARS-CoV-2/human/USA/PC00101P/2020, complete genome", - "GTTTATACCTTCCCAGGTAACAAACCAACCAACTTTCGATCTCTTGTAGATCTGTTCTCTAAACGAACTTTAAAATCTGT", - "GTGGCTGTCACTCGGCTGCATGCTTAGTGCACTCACGCAGTATAATTAATAACTAATTACTGTCGTTGACAGGACACGAG", - "TAACTCGTCTATCTTCTGCAGGCTGCTTACGGTTTCGTCCGTGTTGCAGCCGATCATCAGCACATCTAGGTTTTGTCCGG", - "GTGTGACCGAAAGGTAAGATGGAGAGCCTTGTCCCTGGTTTCAACGAGAAAACACACGTCCAACTCAGTTTGCCTGTTTT", - "ACAGGTTCGCGACGTGCTCGTACGTGGCTTTGGAGACTCCGTGGAGGAGGTCTTATCAGAGGCACGTCAACATCTTAAAG" - ], - 375, - [ - "versions.yml:md5,115ed6177ebcff24eb99d503fa5ef894" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "cat.txt.gz:md5,6e9fe4042a72f2345f644f239272b7e6" + ] + ], + "1": [ + [ + "CAT_CAT", + "pigz", + "2.8" + ] + ], + "file_out": [ + [ + { + "id": "test", + "single_end": true + }, + "cat.txt.gz:md5,6e9fe4042a72f2345f644f239272b7e6" + ] + ], + "versions_cat": [ + [ + "CAT_CAT", + "pigz", + "2.8" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-22T11:51:57.581523" + "timestamp": "2025-12-10T16:16:12.439911" } } \ No newline at end of file diff --git a/modules/nf-core/cat/cat/tests/nextflow.config b/modules/nf-core/cat/cat/tests/nextflow.config new file mode 100644 index 00000000..5bc9bf50 --- /dev/null +++ b/modules/nf-core/cat/cat/tests/nextflow.config @@ -0,0 +1,6 @@ + +process { + withName: CAT_CAT { + ext.prefix = "${params.cat_prefix}" + } +} diff --git a/modules/nf-core/cat/cat/tests/nextflow_unzipped_zipped.config b/modules/nf-core/cat/cat/tests/nextflow_unzipped_zipped.config deleted file mode 100644 index ec26b0fd..00000000 --- a/modules/nf-core/cat/cat/tests/nextflow_unzipped_zipped.config +++ /dev/null @@ -1,6 +0,0 @@ - -process { - withName: CAT_CAT { - ext.prefix = 'cat.txt.gz' - } -} diff --git a/modules/nf-core/cat/cat/tests/nextflow_zipped_unzipped.config b/modules/nf-core/cat/cat/tests/nextflow_zipped_unzipped.config deleted file mode 100644 index fbc79783..00000000 --- a/modules/nf-core/cat/cat/tests/nextflow_zipped_unzipped.config +++ /dev/null @@ -1,8 +0,0 @@ - -process { - - withName: CAT_CAT { - ext.prefix = 'cat.txt' - } - -} diff --git a/modules/nf-core/cat/cat/tests/tags.yml b/modules/nf-core/cat/cat/tests/tags.yml deleted file mode 100644 index 37b578f5..00000000 --- a/modules/nf-core/cat/cat/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -cat/cat: - - modules/nf-core/cat/cat/** diff --git a/modules/nf-core/cooler/cload/environment.yml b/modules/nf-core/cooler/cload/environment.yml index f8165ca9..0a8647f5 100644 --- a/modules/nf-core/cooler/cload/environment.yml +++ b/modules/nf-core/cooler/cload/environment.yml @@ -1,5 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::cooler=0.9.2 + - bioconda::cooler=0.10.4 diff --git a/modules/nf-core/cooler/cload/main.nf b/modules/nf-core/cooler/cload/main.nf index b170a5d0..109beac6 100644 --- a/modules/nf-core/cooler/cload/main.nf +++ b/modules/nf-core/cooler/cload/main.nf @@ -1,50 +1,41 @@ process COOLER_CLOAD { - tag "$meta.id" + 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/cooler:0.9.2--pyh7cba7a3_0' : - 'biocontainers/cooler:0.9.2--pyh7cba7a3_0' }" + 'https://depot.galaxyproject.org/singularity/cooler:0.10.4--pyhdfd78af_0' : + 'biocontainers/cooler:0.10.4--pyhdfd78af_0' }" input: - tuple val(meta), path(pairs), path(index), val(cool_bin) - path chromsizes + tuple val(meta), path(contacts), path(index) + tuple val(meta2), path(chromsizes) + val(mode) + val(cool_bin) output: - tuple val(meta), path("*.cool"), val(cool_bin), emit: cool - path "versions.yml" , emit: versions + tuple val(meta), path("*.cool"), emit: cool + tuple val("${task.process}"), val('cooler'), eval('cooler --version 2>&1 | sed "s/cooler, version //"'), emit: versions_cooler, topic: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def nproc = args.contains('pairix') || args.contains('tabix')? "--nproc $task.cpus" : '' - + def nproc = mode in ["pairix", "tabix"] ? "--nproc ${task.cpus}" : "" """ - cooler cload \\ - $args \\ - $nproc \\ + cooler cload ${mode} \\ + ${args} \\ + ${nproc} \\ ${chromsizes}:${cool_bin} \\ - $pairs \\ + ${contacts} \\ ${prefix}.cool - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - cooler: \$(cooler --version 2>&1 | sed 's/cooler, version //') - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.cool - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - cooler: \$(cooler --version 2>&1 | sed 's/cooler, version //') - END_VERSIONS """ } diff --git a/modules/nf-core/cooler/cload/meta.yml b/modules/nf-core/cooler/cload/meta.yml index 1bb9f748..e7a79b15 100644 --- a/modules/nf-core/cooler/cload/meta.yml +++ b/modules/nf-core/cooler/cload/meta.yml @@ -20,21 +20,36 @@ input: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - pairs: + - contacts: type: file - description: Path to contacts (i.e. read pairs) file. + description: Path to contacts (e.g. read pairs, pairix, tabix) file. + ontologies: + - edam: http://edamontology.org/format_3475 # TSV - index: type: file description: Path to index file of the contacts. - - cool_bin: - type: integer - description: Bins size in bp - - - chromsizes: + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + - - meta2: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - chromsizes: type: file description: Path to a chromsizes file. + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + - mode: + type: integer + description: | + Input mode for cooler cload - one of pairs, pairix, tabix + - cool_bin: + type: integer + description: Bins size in bp output: - - cool: - - meta: + cool: + - - meta: type: map description: | Groovy Map containing sample information @@ -43,15 +58,28 @@ output: type: file description: Output COOL file path pattern: "*.cool" - - cool_bin: - type: file - description: Output COOL file path - pattern: "*.cool" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_cooler: + - - ${task.process}: + type: string + description: The name of the process + - cooler: + type: string + description: The name of the tool + - cooler --version 2>&1 | sed "s/cooler, 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 + - cooler: + type: string + description: The name of the tool + - cooler --version 2>&1 | sed "s/cooler, version //": + type: eval + description: The expression to obtain the version of the tool authors: - "@jianhong" - "@muffato" diff --git a/modules/nf-core/cooler/cload/tests/main.nf.test b/modules/nf-core/cooler/cload/tests/main.nf.test new file mode 100644 index 00000000..7ee4ec86 --- /dev/null +++ b/modules/nf-core/cooler/cload/tests/main.nf.test @@ -0,0 +1,167 @@ +nextflow_process { + + name "Test Process COOLER_CLOAD" + config "./nextflow.config" + script "../main.nf" + process "COOLER_CLOAD" + + tag "modules" + tag "modules_nfcore" + tag "cooler" + tag "cooler/cload" + tag "cooler/dump" + + test("test_cooler_cload_pairix") { + when { + + params { + module_args = "" + } + + process { + """ + input[0] = [ + [id:'test_pairix', single_end:false],// meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.GM12878-MboI.pairs.subsample.blksrt.txt.gz', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.GM12878-MboI.pairs.subsample.blksrt.txt.gz.px2', checkIfExists:true) + ] + input[1] = [ + [id:'test_pairix', single_end:false], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.chrom.sizes', checkIfExists:true) + ] + input[2] = "pairix" + input[3] = 2000000 + """ + } + } + + then { + + assertAll( + { assert process.success }, + { assert snapshot( + process.out.findAll { key, val -> key.startsWith("versions")}, + process.out.cool.collect{file(it[1]).name} + ).match() } + ) + + } + } + + + test("test_cooler_cload_pairs") { + + when { + + params { + module_args = '--chrom1 1 --pos1 2 --chrom2 4 --pos2 5 -N' + } + + process { + """ + input[0] = [ + [id:'test_pairs', single_end:false],// meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.sample1.pairs', checkIfExists:true), + [] + ] + input[1] = [ + [id:'test_pairs', single_end:false], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.chrom.sizes', checkIfExists:true) + ] + input[2] = "pairs" + input[3] = 2000000 + """ + } + } + + then { + + assertAll( + { assert process.success }, + { assert snapshot( + process.out.findAll { key, val -> key.startsWith("versions")}, + process.out.cool.collect{file(it[1]).name} + ).match() } + ) + + } + } + + + test("test_cooler_cload_tabix") { + + when { + + params { + module_args = "" + } + + process { + """ + input[0] = [ + [id:'test_tabix', single_end:false],// meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.GM12878-MboI.pairs.subsample.sorted.possrt.txt.gz', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.GM12878-MboI.pairs.subsample.sorted.possrt.txt.gz.tbi', checkIfExists:true) + ] + input[1] = [ + [id:'test_tabix', single_end:false], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.chrom.sizes',checkIfExists:true) + ] + input[2] = "tabix" + input[3] = 2000000 + """ + } + } + + then { + + assertAll( + { assert process.success }, + { assert snapshot( + process.out.findAll { key, val -> key.startsWith("versions")}, + process.out.cool.collect{file(it[1]).name} + ).match() } + ) + + } + + } + + + test("test_cooler_cload_pairix - stub") { + + options '-stub' + + when { + + params { + module_args = "" + } + + process { + """ + input[0] = [ + [id:'test_pairix', single_end:false],// meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.GM12878-MboI.pairs.subsample.blksrt.txt.gz', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.GM12878-MboI.pairs.subsample.blksrt.txt.gz.px2', checkIfExists:true) + ] + input[1] = [ + [id:'test_pairix', single_end:false], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.chrom.sizes', checkIfExists:true) + ] + input[2] = "pairix" + input[3] = 2000000 + """ + } + } + + then { + + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + + } + } +} diff --git a/modules/nf-core/cooler/cload/tests/main.nf.test.snap b/modules/nf-core/cooler/cload/tests/main.nf.test.snap new file mode 100644 index 00000000..80476396 --- /dev/null +++ b/modules/nf-core/cooler/cload/tests/main.nf.test.snap @@ -0,0 +1,108 @@ +{ + "test_cooler_cload_pairs": { + "content": [ + { + "versions_cooler": [ + [ + "COOLER_CLOAD", + "cooler", + "0.10.4" + ] + ] + }, + [ + "test_pairs.cool" + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T12:57:13.675799" + }, + "test_cooler_cload_tabix": { + "content": [ + { + "versions_cooler": [ + [ + "COOLER_CLOAD", + "cooler", + "0.10.4" + ] + ] + }, + [ + "test_tabix.cool" + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T12:57:23.827346" + }, + "test_cooler_cload_pairix": { + "content": [ + { + "versions_cooler": [ + [ + "COOLER_CLOAD", + "cooler", + "0.10.4" + ] + ] + }, + [ + "test_pairix.cool" + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T12:57:05.111461" + }, + "test_cooler_cload_pairix - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test_pairix", + "single_end": false + }, + "test_pairix.cool:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + "COOLER_CLOAD", + "cooler", + "0.10.4" + ] + ], + "cool": [ + [ + { + "id": "test_pairix", + "single_end": false + }, + "test_pairix.cool:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_cooler": [ + [ + "COOLER_CLOAD", + "cooler", + "0.10.4" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T12:57:29.005184" + } +} \ No newline at end of file diff --git a/modules/nf-core/cooler/cload/tests/nextflow.config b/modules/nf-core/cooler/cload/tests/nextflow.config new file mode 100644 index 00000000..095becee --- /dev/null +++ b/modules/nf-core/cooler/cload/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: "COOLER_CLOAD" { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/cooler/zoomify/environment.yml b/modules/nf-core/cooler/zoomify/environment.yml index f8165ca9..be496d89 100644 --- a/modules/nf-core/cooler/zoomify/environment.yml +++ b/modules/nf-core/cooler/zoomify/environment.yml @@ -1,5 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::cooler=0.9.2 + - bioconda::cooler=0.10.4 + - conda-forge::numpy=1.26.4 diff --git a/modules/nf-core/cooler/zoomify/main.nf b/modules/nf-core/cooler/zoomify/main.nf index f9933dff..b2a5b2b7 100644 --- a/modules/nf-core/cooler/zoomify/main.nf +++ b/modules/nf-core/cooler/zoomify/main.nf @@ -4,15 +4,15 @@ process COOLER_ZOOMIFY { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cooler:0.9.2--pyh7cba7a3_0' : - 'biocontainers/cooler:0.9.2--pyh7cba7a3_0' }" + 'https://depot.galaxyproject.org/singularity/cooler:0.10.4--pyhdfd78af_0' : + 'biocontainers/cooler:0.10.4--pyhdfd78af_0' }" input: tuple val(meta), path(cool) output: tuple val(meta), path("*.mcool"), emit: mcool - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('cooler'), eval('cooler --version 2>&1 | sed "s/cooler, version //"'), emit: versions_cooler, topic: versions when: task.ext.when == null || task.ext.when @@ -26,21 +26,11 @@ process COOLER_ZOOMIFY { -n $task.cpus \\ -o ${prefix}.mcool \\ $cool - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - cooler: \$(cooler --version 2>&1 | sed 's/cooler, version //') - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.mcool - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - cooler: \$(cooler --version 2>&1 | sed 's/cooler, version //') - END_VERSIONS """ } diff --git a/modules/nf-core/cooler/zoomify/meta.yml b/modules/nf-core/cooler/zoomify/meta.yml index 3f928781..4bfc50ce 100644 --- a/modules/nf-core/cooler/zoomify/meta.yml +++ b/modules/nf-core/cooler/zoomify/meta.yml @@ -23,9 +23,10 @@ input: type: file description: Path to COOL file pattern: "*.{cool,mcool}" + ontologies: [] output: - - mcool: - - meta: + mcool: + - - meta: type: map description: | Groovy Map containing sample information @@ -34,11 +35,28 @@ output: type: file description: Output mcool file pattern: "*.mcool" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_cooler: + - - ${task.process}: + type: string + description: The name of the process + - cooler: + type: string + description: The name of the tool + - cooler --version 2>&1 | sed "s/cooler, 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 + - cooler: + type: string + description: The name of the tool + - cooler --version 2>&1 | sed "s/cooler, version //": + type: eval + description: The expression to obtain the version of the tool authors: - "@jianhong" maintainers: diff --git a/modules/nf-core/cooler/zoomify/tests/main.nf.test b/modules/nf-core/cooler/zoomify/tests/main.nf.test new file mode 100644 index 00000000..bc8ae4c1 --- /dev/null +++ b/modules/nf-core/cooler/zoomify/tests/main.nf.test @@ -0,0 +1,64 @@ +nextflow_process { + + name "Test Process COOLER_ZOOMIFY" + config "./nextflow.config" + script "../main.nf" + process "COOLER_ZOOMIFY" + + tag "modules" + tag "modules_nfcore" + tag "cooler" + tag "cooler/zoomify" + + test("test_cooler_zoomify") { + + when { + params { + module_args = '-r 2,4,8' + } + process { + """ + input[0] = [ + [id:'test'],// meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/merge/toy/toy.symm.upper.2.cool', checkIfExists:true) + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.findAll { key, val -> key.startsWith("versions")}, + process.out.mcool.collect{ file(it[1]).name } + ).match() } + ) + } + } + + + test("test_cooler_zoomify -- stub") { + + options '-stub' + + when { + params { + module_args = '-r 2,4,8' + } + process { + """ + input[0] = [ + [id:'test'],// meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/merge/toy/toy.symm.upper.2.cool', checkIfExists:true) + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/cooler/zoomify/tests/main.nf.test.snap b/modules/nf-core/cooler/zoomify/tests/main.nf.test.snap new file mode 100644 index 00000000..5d5a207b --- /dev/null +++ b/modules/nf-core/cooler/zoomify/tests/main.nf.test.snap @@ -0,0 +1,64 @@ +{ + "test_cooler_zoomify -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.mcool:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + "COOLER_ZOOMIFY", + "cooler", + "0.10.4" + ] + ], + "mcool": [ + [ + { + "id": "test" + }, + "test.mcool:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_cooler": [ + [ + "COOLER_ZOOMIFY", + "cooler", + "0.10.4" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T12:59:02.183744" + }, + "test_cooler_zoomify": { + "content": [ + { + "versions_cooler": [ + [ + "COOLER_ZOOMIFY", + "cooler", + "0.10.4" + ] + ] + }, + [ + "test.mcool" + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T12:58:56.885229" + } +} \ No newline at end of file diff --git a/modules/nf-core/cooler/zoomify/tests/nextflow.config b/modules/nf-core/cooler/zoomify/tests/nextflow.config new file mode 100644 index 00000000..606da9f6 --- /dev/null +++ b/modules/nf-core/cooler/zoomify/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: "COOLER_ZOOMIFY" { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/custom/dumpsoftwareversions/environment.yml b/modules/nf-core/custom/dumpsoftwareversions/environment.yml deleted file mode 100644 index 9d79af93..00000000 --- a/modules/nf-core/custom/dumpsoftwareversions/environment.yml +++ /dev/null @@ -1,5 +0,0 @@ -channels: - - conda-forge - - bioconda -dependencies: - - bioconda::multiqc=1.20 diff --git a/modules/nf-core/custom/dumpsoftwareversions/main.nf b/modules/nf-core/custom/dumpsoftwareversions/main.nf deleted file mode 100644 index 105f9265..00000000 --- a/modules/nf-core/custom/dumpsoftwareversions/main.nf +++ /dev/null @@ -1,24 +0,0 @@ -process CUSTOM_DUMPSOFTWAREVERSIONS { - label 'process_single' - - // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.20--pyhdfd78af_0' : - 'biocontainers/multiqc:1.20--pyhdfd78af_0' }" - - input: - path versions - - output: - path "software_versions.yml" , emit: yml - path "software_versions_mqc.yml", emit: mqc_yml - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - template 'dumpsoftwareversions.py' -} diff --git a/modules/nf-core/custom/dumpsoftwareversions/meta.yml b/modules/nf-core/custom/dumpsoftwareversions/meta.yml deleted file mode 100644 index dc1e412f..00000000 --- a/modules/nf-core/custom/dumpsoftwareversions/meta.yml +++ /dev/null @@ -1,43 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json -name: custom_dumpsoftwareversions -description: Custom module used to dump software versions within the nf-core pipeline - template -keywords: - - custom - - dump - - version -tools: - - custom: - description: Custom module used to dump software versions within the nf-core pipeline - template - homepage: https://github.com/nf-core/tools - documentation: https://github.com/nf-core/tools - licence: ["MIT"] - identifier: "" -input: - - - versions: - type: file - description: YML file containing software versions - pattern: "*.yml" -output: - - yml: - - software_versions.yml: - type: file - description: Standard YML file containing software versions - pattern: "software_versions.yml" - - mqc_yml: - - software_versions_mqc.yml: - type: file - description: MultiQC custom content YML file containing software versions - pattern: "software_versions_mqc.yml" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@drpatelh" - - "@grst" -maintainers: - - "@drpatelh" - - "@grst" diff --git a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py deleted file mode 100755 index b83b32c4..00000000 --- a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env python - - -"""Provide functions to merge multiple versions.yml files.""" - -import platform -from textwrap import dedent - -import yaml - - -def _make_versions_html(versions): - """Generate a tabular HTML output of all versions for MultiQC.""" - html = [ - dedent( - """\\ - - - - - - - - - - """ - ) - ] - for process, tmp_versions in sorted(versions.items()): - html.append("") - for i, (tool, version) in enumerate(sorted(tmp_versions.items())): - html.append( - dedent( - f"""\\ - - - - - - """ - ) - ) - html.append("") - html.append("
Process Name Software Version
{process if (i == 0) else ''}{tool}{version}
") - return "\\n".join(html) - - -def main(): - """Load all version files and generate merged output.""" - versions_this_module = {} - versions_this_module["${task.process}"] = { - "python": platform.python_version(), - "yaml": yaml.__version__, - } - - with open("$versions") as f: - versions_by_process = yaml.load(f, Loader=yaml.BaseLoader) | versions_this_module - - # aggregate versions by the module name (derived from fully-qualified process name) - versions_by_module = {} - for process, process_versions in versions_by_process.items(): - module = process.split(":")[-1] - try: - if versions_by_module[module] != process_versions: - raise AssertionError( - "We assume that software versions are the same between all modules. " - "If you see this error-message it means you discovered an edge-case " - "and should open an issue in nf-core/tools. " - ) - except KeyError: - versions_by_module[module] = process_versions - - versions_by_module["Workflow"] = { - "Nextflow": "$workflow.nextflow.version", - "$workflow.manifest.name": "$workflow.manifest.version", - } - - versions_mqc = { - "id": "software_versions", - "section_name": "${workflow.manifest.name} Software Versions", - "section_href": "https://github.com/${workflow.manifest.name}", - "plot_type": "html", - "description": "are collected at run time from the software output.", - "data": _make_versions_html(versions_by_module), - } - - with open("software_versions.yml", "w") as f: - yaml.dump(versions_by_module, f, default_flow_style=False) - with open("software_versions_mqc.yml", "w") as f: - yaml.dump(versions_mqc, f, default_flow_style=False) - - with open("versions.yml", "w") as f: - yaml.dump(versions_this_module, f, default_flow_style=False) - - -if __name__ == "__main__": - main() diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test deleted file mode 100644 index b1e1630b..00000000 --- a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test +++ /dev/null @@ -1,43 +0,0 @@ -nextflow_process { - - name "Test Process CUSTOM_DUMPSOFTWAREVERSIONS" - script "../main.nf" - process "CUSTOM_DUMPSOFTWAREVERSIONS" - tag "modules" - tag "modules_nfcore" - tag "custom" - tag "dumpsoftwareversions" - tag "custom/dumpsoftwareversions" - - test("Should run without failures") { - when { - process { - """ - def tool1_version = ''' - TOOL1: - tool1: 0.11.9 - '''.stripIndent() - - def tool2_version = ''' - TOOL2: - tool2: 1.9 - '''.stripIndent() - - input[0] = Channel.of(tool1_version, tool2_version).collectFile() - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot( - process.out.versions, - file(process.out.mqc_yml[0]).readLines()[0..10], - file(process.out.yml[0]).readLines()[0..7] - ).match() - } - ) - } - } -} diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap deleted file mode 100644 index 5f59a936..00000000 --- a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap +++ /dev/null @@ -1,33 +0,0 @@ -{ - "Should run without failures": { - "content": [ - [ - "versions.yml:md5,76d454d92244589d32455833f7c1ba6d" - ], - [ - "data: \"\\n\\n \\n \\n \\n \\n \\n \\n \\n\\", - " \\n\\n\\n \\n \\n\\", - " \\ \\n\\n\\n\\n \\n \\", - " \\ \\n \\n\\n\\n\\n\\", - " \\n\\n \\n \\n\\", - " \\ \\n\\n\\n\\n\\n\\n \\n\\", - " \\ \\n \\n\\n\\n\\n\\", - " \\n\\n \\n \\n\\" - ], - [ - "CUSTOM_DUMPSOFTWAREVERSIONS:", - " python: 3.11.7", - " yaml: 5.4.1", - "TOOL1:", - " tool1: 0.11.9", - "TOOL2:", - " tool2: '1.9'", - "Workflow:" - ] - ], - "timestamp": "2024-01-09T23:01:18.710682" - } -} \ No newline at end of file diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml b/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml deleted file mode 100644 index 405aa24a..00000000 --- a/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -custom/dumpsoftwareversions: - - modules/nf-core/custom/dumpsoftwareversions/** diff --git a/modules/nf-core/custom/getchromsizes/custom-getchromsizes.diff b/modules/nf-core/custom/getchromsizes/custom-getchromsizes.diff deleted file mode 100644 index b05f08cc..00000000 --- a/modules/nf-core/custom/getchromsizes/custom-getchromsizes.diff +++ /dev/null @@ -1,44 +0,0 @@ -Changes in module 'nf-core/custom/getchromsizes' -'modules/nf-core/custom/getchromsizes/meta.yml' is unchanged -Changes in 'custom/getchromsizes/main.nf': ---- modules/nf-core/custom/getchromsizes/main.nf -+++ modules/nf-core/custom/getchromsizes/main.nf -@@ -8,22 +8,25 @@ - 'biocontainers/samtools:1.21--h50ea8bc_0' }" - - input: -- tuple val(meta), path(fasta) -+ tuple val(meta), path(fasta, stageAs: 'input/*') -+ val suffix - - output: -- tuple val(meta), path ("*.sizes"), emit: sizes -- tuple val(meta), path ("*.fai") , emit: fai -- tuple val(meta), path ("*.gzi") , emit: gzi, optional: true -- path "versions.yml" , emit: versions -+ tuple val(meta), path ("*.${suffix}"), emit: sizes -+ tuple val(meta), path ("*.fai"), emit: fai -+ tuple val(meta), path ("*.gzi"), emit: gzi, optional: true -+ 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}" - """ -- samtools faidx $fasta -- cut -f 1,2 ${fasta}.fai > ${fasta}.sizes -+ ln -s ${fasta} ${prefix}.fa -+ samtools faidx ${prefix}.fa -o ${prefix}.fa.fai -+ cut -f 1,2 ${prefix}.fa.fai > ${prefix}.${suffix} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - -'modules/nf-core/custom/getchromsizes/environment.yml' is unchanged -'modules/nf-core/custom/getchromsizes/tests/main.nf.test' is unchanged -'modules/nf-core/custom/getchromsizes/tests/tags.yml' is unchanged -'modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap' is unchanged -************************************************************ diff --git a/modules/nf-core/custom/getchromsizes/environment.yml b/modules/nf-core/custom/getchromsizes/environment.yml deleted file mode 100644 index 2bcd47ee..00000000 --- a/modules/nf-core/custom/getchromsizes/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -channels: - - conda-forge - - bioconda - -dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 diff --git a/modules/nf-core/custom/getchromsizes/main.nf b/modules/nf-core/custom/getchromsizes/main.nf deleted file mode 100644 index 263ddc7d..00000000 --- a/modules/nf-core/custom/getchromsizes/main.nf +++ /dev/null @@ -1,50 +0,0 @@ -process CUSTOM_GETCHROMSIZES { - tag "$fasta" - label 'process_single' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" - - input: - tuple val(meta), path(fasta, stageAs: 'input/*') - val suffix - - output: - tuple val(meta), path ("*.${suffix}"), emit: sizes - tuple val(meta), path ("*.fai"), emit: fai - tuple val(meta), path ("*.gzi"), emit: gzi, optional: true - 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}" - """ - ln -s ${fasta} ${prefix}.fa - samtools faidx ${prefix}.fa -o ${prefix}.fa.fai - cut -f 1,2 ${prefix}.fa.fai > ${prefix}.${suffix} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - getchromsizes: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ - - stub: - """ - touch ${fasta}.fai - touch ${fasta}.sizes - if [[ "${fasta.extension}" == "gz" ]]; then - touch ${fasta}.gzi - fi - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - getchromsizes: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ -} diff --git a/modules/nf-core/custom/getchromsizes/meta.yml b/modules/nf-core/custom/getchromsizes/meta.yml deleted file mode 100644 index 2a0e8da0..00000000 --- a/modules/nf-core/custom/getchromsizes/meta.yml +++ /dev/null @@ -1,69 +0,0 @@ -name: custom_getchromsizes -description: Generates a FASTA file of chromosome sizes and a fasta index file -keywords: - - fasta - - chromosome - - indexing -tools: - - samtools: - description: Tools for dealing with SAM, BAM and CRAM files - homepage: http://www.htslib.org/ - documentation: http://www.htslib.org/doc/samtools.html - tool_dev_url: https://github.com/samtools/samtools - doi: 10.1093/bioinformatics/btp352 - licence: ["MIT"] - identifier: "" -input: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - fasta: - type: file - description: FASTA file - pattern: "*.{fa,fasta,fna,fas}" -output: - - sizes: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.sizes": - type: file - description: File containing chromosome lengths - pattern: "*.{sizes}" - - fai: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.fai": - type: file - description: FASTA index file - pattern: "*.{fai}" - - gzi: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.gzi": - type: file - description: Optional gzip index file for compressed inputs - pattern: "*.gzi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@tamara-hodgetts" - - "@chris-cheshire" - - "@muffato" -maintainers: - - "@tamara-hodgetts" - - "@chris-cheshire" - - "@muffato" diff --git a/modules/nf-core/custom/getchromsizes/tests/main.nf.test b/modules/nf-core/custom/getchromsizes/tests/main.nf.test deleted file mode 100644 index 2f741a4b..00000000 --- a/modules/nf-core/custom/getchromsizes/tests/main.nf.test +++ /dev/null @@ -1,99 +0,0 @@ -nextflow_process { - - name "Test Process CUSTOM_GETCHROMSIZES" - script "../main.nf" - process "CUSTOM_GETCHROMSIZES" - - tag "modules" - tag "modules_nfcore" - tag "custom" - tag "custom/getchromsizes" - - test("test_custom_getchromsizes") { - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("test_custom_getchromsizes_bgzip") { - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("test_custom_getchromsizes - stub") { - - options "-stub" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("test_custom_getchromsizes_bgzip - stub") { - - options "-stub" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } -} diff --git a/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap b/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap deleted file mode 100644 index d2072e22..00000000 --- a/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap +++ /dev/null @@ -1,242 +0,0 @@ -{ - "test_custom_getchromsizes_bgzip - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "genome.fasta.gz.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "test" - }, - "genome.fasta.gz.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - { - "id": "test" - }, - "genome.fasta.gz.gzi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - "versions.yml:md5,f68edc4d5999d8cb07147b9be115d60b" - ], - "fai": [ - [ - { - "id": "test" - }, - "genome.fasta.gz.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "gzi": [ - [ - { - "id": "test" - }, - "genome.fasta.gz.gzi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "sizes": [ - [ - { - "id": "test" - }, - "genome.fasta.gz.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,f68edc4d5999d8cb07147b9be115d60b" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-18T10:11:37.459094476" - }, - "test_custom_getchromsizes": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "genome.fasta.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" - ] - ], - "1": [ - [ - { - "id": "test" - }, - "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" - ] - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,f68edc4d5999d8cb07147b9be115d60b" - ], - "fai": [ - [ - { - "id": "test" - }, - "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" - ] - ], - "gzi": [ - - ], - "sizes": [ - [ - { - "id": "test" - }, - "genome.fasta.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" - ] - ], - "versions": [ - "versions.yml:md5,f68edc4d5999d8cb07147b9be115d60b" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-18T10:11:01.526301351" - }, - "test_custom_getchromsizes_bgzip": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "genome.fasta.gz.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" - ] - ], - "1": [ - [ - { - "id": "test" - }, - "genome.fasta.gz.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" - ] - ], - "2": [ - [ - { - "id": "test" - }, - "genome.fasta.gz.gzi:md5,7dea362b3fac8e00956a4952a3d4f474" - ] - ], - "3": [ - "versions.yml:md5,f68edc4d5999d8cb07147b9be115d60b" - ], - "fai": [ - [ - { - "id": "test" - }, - "genome.fasta.gz.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" - ] - ], - "gzi": [ - [ - { - "id": "test" - }, - "genome.fasta.gz.gzi:md5,7dea362b3fac8e00956a4952a3d4f474" - ] - ], - "sizes": [ - [ - { - "id": "test" - }, - "genome.fasta.gz.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" - ] - ], - "versions": [ - "versions.yml:md5,f68edc4d5999d8cb07147b9be115d60b" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-18T10:11:14.32456385" - }, - "test_custom_getchromsizes - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "test" - }, - "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,f68edc4d5999d8cb07147b9be115d60b" - ], - "fai": [ - [ - { - "id": "test" - }, - "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "gzi": [ - - ], - "sizes": [ - [ - { - "id": "test" - }, - "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,f68edc4d5999d8cb07147b9be115d60b" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-18T10:11:26.505487624" - } -} \ No newline at end of file diff --git a/modules/nf-core/custom/getchromsizes/tests/tags.yml b/modules/nf-core/custom/getchromsizes/tests/tags.yml deleted file mode 100644 index d89a805f..00000000 --- a/modules/nf-core/custom/getchromsizes/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -custom/getchromsizes: - - modules/nf-core/custom/getchromsizes/** diff --git a/modules/nf-core/fastk/fastk/environment.yml b/modules/nf-core/fastk/fastk/environment.yml index 14207ff6..51c223ab 100644 --- a/modules/nf-core/fastk/fastk/environment.yml +++ b/modules/nf-core/fastk/fastk/environment.yml @@ -1,5 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::false_flag # False flag to pass nf-core/lint + - bioconda::fastk=1.2 diff --git a/modules/nf-core/fastk/fastk/fastk-fastk.diff b/modules/nf-core/fastk/fastk/fastk-fastk.diff deleted file mode 100644 index 80906fac..00000000 --- a/modules/nf-core/fastk/fastk/fastk-fastk.diff +++ /dev/null @@ -1,30 +0,0 @@ -Changes in module 'nf-core/fastk/fastk' ---- modules/nf-core/fastk/fastk/main.nf -+++ modules/nf-core/fastk/fastk/main.nf -@@ -3,7 +3,7 @@ - label 'process_medium' - - // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. -- container 'ghcr.io/nbisweden/fastk_genescopefk_merquryfk:1.2' -+ container 'quay.io/sanger-tol/fastk:1.0.2-c1' - - input: - tuple val(meta), path(reads) -@@ -29,7 +29,6 @@ - FastK \\ - $args \\ - -T$task.cpus \\ -- -M${task.memory.toGiga()} \\ - -N${prefix}_fk \\ - $reads - -@@ -62,7 +61,6 @@ - "FastK \\ - $args \\ - -T$task.cpus \\ -- -M${task.memory.toGiga()} \\ - -N${prefix}_fk \\ - $reads" - - -************************************************************ diff --git a/modules/nf-core/fastk/fastk/main.nf b/modules/nf-core/fastk/fastk/main.nf index 256e80de..2146c014 100644 --- a/modules/nf-core/fastk/fastk/main.nf +++ b/modules/nf-core/fastk/fastk/main.nf @@ -3,7 +3,10 @@ process FASTK_FASTK { label 'process_medium' // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. - container 'quay.io/sanger-tol/fastk:1.0.2-c1' + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/02/02c05b2ec421debc83883ef9a211291e3220546c12f7c54cb78e66209cb2797d/data' : + 'community.wave.seqera.io/library/fastk:1.2--4bc70c6cd0d420bd' }" input: tuple val(meta), path(reads) @@ -12,48 +15,33 @@ process FASTK_FASTK { tuple val(meta), path("*.hist") , emit: hist tuple val(meta), path("*.ktab*", hidden: true) , emit: ktab, optional: true tuple val(meta), path("*.{prof,pidx}*", hidden: true), emit: prof, optional: true - path "versions.yml" , emit: versions + // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + tuple val("${task.process}"), val('fastk'), eval('echo 1.2'), emit: versions_fastk, topic: versions when: task.ext.when == null || task.ext.when script: - // Exit if running this module with -profile conda / -profile mamba - if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { - error "FASTK_FASTK module does not support Conda. Please use Docker / Singularity / Podman instead." - } - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def FASTK_VERSION = 'f18a4e6d2207539f7b84461daebc54530a9559b0' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" """ FastK \\ $args \\ -T$task.cpus \\ - -N${prefix}_fk \\ + -M${task.memory.toGiga()} \\ + -N${prefix} \\ $reads - find . -name '*.ktab*' \\ - | xargs chmod a+r - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastk: $FASTK_VERSION - END_VERSIONS + find . -name '*.ktab*' -exec chmod a+r {} \\; """ stub: - // Exit if running this module with -profile conda / -profile mamba - if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { - error "FASTK_FASTK module does not support Conda. Please use Docker / Singularity / Podman instead." - } - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def FASTK_VERSION = 'f18a4e6d2207539f7b84461daebc54530a9559b0' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. - - def touch_ktab = args.contains('-t') ? "touch ${prefix}_fk.ktab .${prefix}_fk.ktab.1" : '' - def touch_prof = args.contains('-p') ? "touch ${prefix}_fk.prof .${prefix}_fk.pidx.1" : '' + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def touch_ktab = args.contains('-t') ? "touch ${prefix}.ktab .${prefix}.ktab.1" : '' + def touch_prof = args.contains('-p') ? "touch ${prefix}.prof .${prefix}.pidx.1" : '' """ - touch ${prefix}_fk.hist + touch ${prefix}.hist $touch_ktab $touch_prof @@ -61,12 +49,8 @@ process FASTK_FASTK { "FastK \\ $args \\ -T$task.cpus \\ + -M${task.memory.toGiga()} \\ -N${prefix}_fk \\ $reads" - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastk: $FASTK_VERSION - END_VERSIONS """ } diff --git a/modules/nf-core/fastk/fastk/meta.yml b/modules/nf-core/fastk/fastk/meta.yml index 4abc1033..f5cb5a95 100644 --- a/modules/nf-core/fastk/fastk/meta.yml +++ b/modules/nf-core/fastk/fastk/meta.yml @@ -20,11 +20,16 @@ input: - reads: type: file description: | - List of input FastQ files of size 1 and 2 for single-end and paired-end data, - respectively. + List of input FASTA, FASTQ, SAM, BAM or CRAM files. All must be of the same type. + ontologies: + - edam: http://edamontology.org/format_1929 # FASTA + - edam: http://edamontology.org/format_2545 # FASTQ + - edam: http://edamontology.org/format_2573 # SAM + - edam: http://edamontology.org/format_2572 # BAM + - edam: http://edamontology.org/format_3462 # CRAM output: - - hist: - - meta: + hist: + - - meta: type: map description: | Groovy Map containing sample information @@ -33,31 +38,52 @@ output: type: file description: Histogram of k-mers pattern: "*.hist" - - ktab: - - meta: + ontologies: [] + ktab: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - '*.ktab*", hidden: true': + - "*.ktab*": type: file - description: A sorted table of all canonical k‑mers along with their counts. - pattern: "*.ktab" - - prof: - - meta: + description: A sorted table of all canonical k‑mers along with their + counts. + pattern: "*.ktab*" + ontologies: [] + prof: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - '*.{prof,pidx}*", hidden: true': + - "*.{prof,pidx}*": type: file - description: A k‑mer count profile of each sequence in the input data set. - pattern: "*.prof" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + description: A k‑mer count profile of each sequence in the input data + set. + pattern: "*.{prof,pidx}*" + ontologies: [] + versions_fastk: + - - ${task.process}: + type: string + description: Name of the process + - fastk: + type: string + description: Name of the tool + - echo 1.2: + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: Name of the process + - fastk: + type: string + description: Name of the tool + - echo 1.2: + type: eval + description: The expression to obtain the version of the tool authors: - "@mahesh-panchal" maintainers: diff --git a/modules/nf-core/fastk/fastk/tests/main.nf.test.snap b/modules/nf-core/fastk/fastk/tests/main.nf.test.snap index 1e3fc4da..b61770aa 100644 --- a/modules/nf-core/fastk/fastk/tests/main.nf.test.snap +++ b/modules/nf-core/fastk/fastk/tests/main.nf.test.snap @@ -8,7 +8,7 @@ "id": "test", "single_end": true }, - "test_fk.hist:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.hist:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -18,8 +18,8 @@ "single_end": true }, [ - ".test_fk.ktab.1:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_fk.ktab:md5,d41d8cd98f00b204e9800998ecf8427e" + ".test.ktab.1:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.ktab:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], @@ -30,13 +30,17 @@ "single_end": true }, [ - ".test_fk.pidx.1:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_fk.prof:md5,d41d8cd98f00b204e9800998ecf8427e" + ".test.pidx.1:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.prof:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], "3": [ - "versions.yml:md5,c216a1608924d1662d2086e1de1d5abd" + [ + "FASTK_FASTK", + "fastk", + "1.2" + ] ], "hist": [ [ @@ -44,7 +48,7 @@ "id": "test", "single_end": true }, - "test_fk.hist:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.hist:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "ktab": [ @@ -54,8 +58,8 @@ "single_end": true }, [ - ".test_fk.ktab.1:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_fk.ktab:md5,d41d8cd98f00b204e9800998ecf8427e" + ".test.ktab.1:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.ktab:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], @@ -66,21 +70,25 @@ "single_end": true }, [ - ".test_fk.pidx.1:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_fk.prof:md5,d41d8cd98f00b204e9800998ecf8427e" + ".test.pidx.1:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.prof:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], - "versions": [ - "versions.yml:md5,c216a1608924d1662d2086e1de1d5abd" + "versions_fastk": [ + [ + "FASTK_FASTK", + "fastk", + "1.2" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-05-18T19:39:28.510263" + "timestamp": "2026-01-21T09:41:58.310507" }, "test_fastk_fastk_single_end": { "content": [ @@ -91,7 +99,7 @@ "id": "test", "single_end": true }, - "test_fk.hist:md5,c80e12f7321e62dba4b437d7bff36ec0" + "test.hist:md5,c80e12f7321e62dba4b437d7bff36ec0" ] ], "1": [ @@ -101,9 +109,9 @@ "single_end": true }, [ - ".test_fk.ktab.1:md5,ceeacd0cb3aa69bf9b2a402830b40e26", - ".test_fk.ktab.2:md5,f2629fd15b285aed3dc2d5fe546edf3f", - "test_fk.ktab:md5,a605a58931a4b5029469e1c2575c8cee" + ".test.ktab.1:md5,ceeacd0cb3aa69bf9b2a402830b40e26", + ".test.ktab.2:md5,f2629fd15b285aed3dc2d5fe546edf3f", + "test.ktab:md5,a605a58931a4b5029469e1c2575c8cee" ] ] ], @@ -114,14 +122,18 @@ "single_end": true }, [ - ".test_fk.pidx.1:md5,90bc384f61d2ecdb4586ab52ab04fddf", - ".test_fk.prof.1:md5,ebd48923a724cf79934f0b2ed42ba73d", - "test_fk.prof:md5,43d426c95d277b8148406624d513bd40" + ".test.pidx.1:md5,90bc384f61d2ecdb4586ab52ab04fddf", + ".test.prof.1:md5,ebd48923a724cf79934f0b2ed42ba73d", + "test.prof:md5,43d426c95d277b8148406624d513bd40" ] ] ], "3": [ - "versions.yml:md5,c216a1608924d1662d2086e1de1d5abd" + [ + "FASTK_FASTK", + "fastk", + "1.2" + ] ], "hist": [ [ @@ -129,7 +141,7 @@ "id": "test", "single_end": true }, - "test_fk.hist:md5,c80e12f7321e62dba4b437d7bff36ec0" + "test.hist:md5,c80e12f7321e62dba4b437d7bff36ec0" ] ], "ktab": [ @@ -139,9 +151,9 @@ "single_end": true }, [ - ".test_fk.ktab.1:md5,ceeacd0cb3aa69bf9b2a402830b40e26", - ".test_fk.ktab.2:md5,f2629fd15b285aed3dc2d5fe546edf3f", - "test_fk.ktab:md5,a605a58931a4b5029469e1c2575c8cee" + ".test.ktab.1:md5,ceeacd0cb3aa69bf9b2a402830b40e26", + ".test.ktab.2:md5,f2629fd15b285aed3dc2d5fe546edf3f", + "test.ktab:md5,a605a58931a4b5029469e1c2575c8cee" ] ] ], @@ -152,22 +164,26 @@ "single_end": true }, [ - ".test_fk.pidx.1:md5,90bc384f61d2ecdb4586ab52ab04fddf", - ".test_fk.prof.1:md5,ebd48923a724cf79934f0b2ed42ba73d", - "test_fk.prof:md5,43d426c95d277b8148406624d513bd40" + ".test.pidx.1:md5,90bc384f61d2ecdb4586ab52ab04fddf", + ".test.prof.1:md5,ebd48923a724cf79934f0b2ed42ba73d", + "test.prof:md5,43d426c95d277b8148406624d513bd40" ] ] ], - "versions": [ - "versions.yml:md5,c216a1608924d1662d2086e1de1d5abd" + "versions_fastk": [ + [ + "FASTK_FASTK", + "fastk", + "1.2" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-05-18T19:31:31.128388" + "timestamp": "2026-01-21T09:41:50.448566" }, "test_fastk_fastk_paired_end": { "content": [ @@ -178,7 +194,7 @@ "id": "test", "single_end": false }, - "test_fk.hist:md5,4f75b550d87ed4f26a2b10a05ac7e98c" + "test.hist:md5,4f75b550d87ed4f26a2b10a05ac7e98c" ] ], "1": [ @@ -188,9 +204,9 @@ "single_end": false }, [ - ".test_fk.ktab.1:md5,7f28fb44940fda799797e3069f5d7263", - ".test_fk.ktab.2:md5,c14a85c128926ace78372f09029977b1", - "test_fk.ktab:md5,fddd5be0c36ad1d2131b8d8774f7657a" + ".test.ktab.1:md5,7f28fb44940fda799797e3069f5d7263", + ".test.ktab.2:md5,c14a85c128926ace78372f09029977b1", + "test.ktab:md5,fddd5be0c36ad1d2131b8d8774f7657a" ] ] ], @@ -201,16 +217,20 @@ "single_end": false }, [ - ".test_fk.pidx.1:md5,e7e760f714070a4afefb38ffff559684", - ".test_fk.pidx.2:md5,a549612bbdba2506eb3311237638c4b0", - ".test_fk.prof.1:md5,46a5fd9e297262b058f8c1fd062fcf56", - ".test_fk.prof.2:md5,80326a7406f41ccf2e51e341fc804132", - "test_fk.prof:md5,d3c7d8decd4ea6e298291b8be0e2de85" + ".test.pidx.1:md5,e7e760f714070a4afefb38ffff559684", + ".test.pidx.2:md5,a549612bbdba2506eb3311237638c4b0", + ".test.prof.1:md5,46a5fd9e297262b058f8c1fd062fcf56", + ".test.prof.2:md5,80326a7406f41ccf2e51e341fc804132", + "test.prof:md5,d3c7d8decd4ea6e298291b8be0e2de85" ] ] ], "3": [ - "versions.yml:md5,c216a1608924d1662d2086e1de1d5abd" + [ + "FASTK_FASTK", + "fastk", + "1.2" + ] ], "hist": [ [ @@ -218,7 +238,7 @@ "id": "test", "single_end": false }, - "test_fk.hist:md5,4f75b550d87ed4f26a2b10a05ac7e98c" + "test.hist:md5,4f75b550d87ed4f26a2b10a05ac7e98c" ] ], "ktab": [ @@ -228,9 +248,9 @@ "single_end": false }, [ - ".test_fk.ktab.1:md5,7f28fb44940fda799797e3069f5d7263", - ".test_fk.ktab.2:md5,c14a85c128926ace78372f09029977b1", - "test_fk.ktab:md5,fddd5be0c36ad1d2131b8d8774f7657a" + ".test.ktab.1:md5,7f28fb44940fda799797e3069f5d7263", + ".test.ktab.2:md5,c14a85c128926ace78372f09029977b1", + "test.ktab:md5,fddd5be0c36ad1d2131b8d8774f7657a" ] ] ], @@ -241,24 +261,28 @@ "single_end": false }, [ - ".test_fk.pidx.1:md5,e7e760f714070a4afefb38ffff559684", - ".test_fk.pidx.2:md5,a549612bbdba2506eb3311237638c4b0", - ".test_fk.prof.1:md5,46a5fd9e297262b058f8c1fd062fcf56", - ".test_fk.prof.2:md5,80326a7406f41ccf2e51e341fc804132", - "test_fk.prof:md5,d3c7d8decd4ea6e298291b8be0e2de85" + ".test.pidx.1:md5,e7e760f714070a4afefb38ffff559684", + ".test.pidx.2:md5,a549612bbdba2506eb3311237638c4b0", + ".test.prof.1:md5,46a5fd9e297262b058f8c1fd062fcf56", + ".test.prof.2:md5,80326a7406f41ccf2e51e341fc804132", + "test.prof:md5,d3c7d8decd4ea6e298291b8be0e2de85" ] ] ], - "versions": [ - "versions.yml:md5,c216a1608924d1662d2086e1de1d5abd" + "versions_fastk": [ + [ + "FASTK_FASTK", + "fastk", + "1.2" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-05-18T19:31:35.565502" + "timestamp": "2026-01-21T09:41:54.523636" }, "test_fastk_fastk_paired_end_stub": { "content": [ @@ -269,7 +293,7 @@ "id": "test", "single_end": false }, - "test_fk.hist:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.hist:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -279,8 +303,8 @@ "single_end": false }, [ - ".test_fk.ktab.1:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_fk.ktab:md5,d41d8cd98f00b204e9800998ecf8427e" + ".test.ktab.1:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.ktab:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], @@ -291,13 +315,17 @@ "single_end": false }, [ - ".test_fk.pidx.1:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_fk.prof:md5,d41d8cd98f00b204e9800998ecf8427e" + ".test.pidx.1:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.prof:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], "3": [ - "versions.yml:md5,c216a1608924d1662d2086e1de1d5abd" + [ + "FASTK_FASTK", + "fastk", + "1.2" + ] ], "hist": [ [ @@ -305,7 +333,7 @@ "id": "test", "single_end": false }, - "test_fk.hist:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.hist:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "ktab": [ @@ -315,8 +343,8 @@ "single_end": false }, [ - ".test_fk.ktab.1:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_fk.ktab:md5,d41d8cd98f00b204e9800998ecf8427e" + ".test.ktab.1:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.ktab:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], @@ -327,20 +355,24 @@ "single_end": false }, [ - ".test_fk.pidx.1:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_fk.prof:md5,d41d8cd98f00b204e9800998ecf8427e" + ".test.pidx.1:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.prof:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], - "versions": [ - "versions.yml:md5,c216a1608924d1662d2086e1de1d5abd" + "versions_fastk": [ + [ + "FASTK_FASTK", + "fastk", + "1.2" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-05-18T19:39:32.570957" + "timestamp": "2026-01-21T09:42:02.200749" } } \ No newline at end of file diff --git a/modules/nf-core/fastk/fastk/tests/tags.yml b/modules/nf-core/fastk/fastk/tests/tags.yml deleted file mode 100644 index 82f9df82..00000000 --- a/modules/nf-core/fastk/fastk/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -fastk/fastk: - - "modules/nf-core/fastk/fastk/**" diff --git a/modules/nf-core/gawk/main.nf b/modules/nf-core/gawk/main.nf index 615b2ce9..a76851df 100644 --- a/modules/nf-core/gawk/main.nf +++ b/modules/nf-core/gawk/main.nf @@ -14,7 +14,7 @@ process GAWK { output: tuple val(meta), path("*.${suffix}"), emit: output - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('gawk'), eval("awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//'"), topic: versions, emit: versions_gawk when: task.ext.when == null || task.ext.when @@ -23,18 +23,18 @@ process GAWK { def args = task.ext.args ?: '' // args is used for the main arguments of the tool def args2 = task.ext.args2 ?: '' // args2 is used to specify a program when no program file has been given prefix = task.ext.prefix ?: "${meta.id}" - suffix = task.ext.suffix ?: "${input.collect{ it.getExtension()}.get(0)}" // use the first extension of the input files + suffix = task.ext.suffix ?: "${input.collect{ file -> file.getExtension()}.get(0)}" // use the first extension of the input files program = program_file ? "-f ${program_file}" : "${args2}" - lst_gz = input.findResults{ it.getExtension().endsWith("gz") ? it.toString() : null } + lst_gz = input.findResults{ file -> file.getExtension().endsWith("gz") ? file.toString() : null } unzip = lst_gz ? "gunzip -q -f ${lst_gz.join(" ")}" : "" - input_cmd = input.collect { it.toString() - ~/\.gz$/ }.join(" ") + input_cmd = input.collect { file -> file.toString() - ~/\.gz$/ }.join(" ") output_cmd = suffix.endsWith("gz") ? "| gzip > ${prefix}.${suffix}" : "> ${prefix}.${suffix}" output = disable_redirect_output ? "" : output_cmd - cleanup = lst_gz ? "rm ${lst_gz.collect{ it - ~/\.gz$/ }.join(" ")}" : "" + cleanup = lst_gz ? "rm ${lst_gz.collect{ file -> file - ~/\.gz$/ }.join(" ")}" : "" - input.collect{ - assert it.name != "${prefix}.${suffix}" : "Input and output names are the same, set prefix in module configuration to disambiguate!" + input.collect{ file -> + assert file.name != "${prefix}.${suffix}" : "Input and output names are the same, set prefix in module configuration to disambiguate!" } """ @@ -47,11 +47,6 @@ process GAWK { ${output} ${cleanup} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - gawk: \$(awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//') - END_VERSIONS """ stub: @@ -61,10 +56,5 @@ process GAWK { """ ${create_cmd} ${prefix}.${suffix} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - gawk: \$(awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//') - END_VERSIONS """ } diff --git a/modules/nf-core/gawk/meta.yml b/modules/nf-core/gawk/meta.yml index 34c50b12..96cd0c72 100644 --- a/modules/nf-core/gawk/meta.yml +++ b/modules/nf-core/gawk/meta.yml @@ -15,7 +15,8 @@ tools: homepage: "https://www.gnu.org/software/gawk/" documentation: "https://www.gnu.org/software/gawk/manual/" tool_dev_url: "https://www.gnu.org/prep/ftp.html" - licence: ["GPL v3"] + licence: + - "GPL v3" identifier: "" input: - - meta: @@ -25,38 +26,58 @@ input: e.g. [ id:'test', single_end:false ] - input: type: file - description: The input file - Specify the logic that needs to be executed on - this file on the `ext.args2` or in the program file. - If the files have a `.gz` extension, they will be unzipped using `zcat`. + description: The input file - Specify the logic that needs to be executed + on this file on the `ext.args2` or in the program file. If the files + have a `.gz` extension, they will be unzipped using `zcat`. pattern: "*" - - - program_file: - type: file - description: Optional file containing logic for awk to execute. If you don't - wish to use a file, you can use `ext.args2` to specify the logic. - pattern: "*" - - - disable_redirect_output: - type: boolean - description: Disable the redirection of awk output to a given file. This is - useful if you want to use awk's built-in redirect to write files instead - of the shell's redirect. + ontologies: [] + - program_file: + type: file + description: Optional file containing logic for awk to execute. If you don't + wish to use a file, you can use `ext.args2` to specify the logic. + pattern: "*" + ontologies: [] + - disable_redirect_output: + type: boolean + description: Disable the redirection of awk output to a given file. This is + useful if you want to use awk's built-in redirect to write files instead + of the shell's redirect. output: - - output: - - meta: + output: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.${suffix}": type: file - description: The output file - if using shell redirection, specify the name of this - file using `ext.prefix` and the extension using `ext.suffix`. Otherwise, ensure - the awk program produces files with the extension in `ext.suffix`. + description: The output file - if using shell redirection, specify the + name of this file using `ext.prefix` and the extension using + `ext.suffix`. Otherwise, ensure the awk program produces files with + the extension in `ext.suffix`. pattern: "*" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_gawk: + - - ${task.process}: + type: string + description: The name of the process + - gawk: + type: string + description: The name of the tool + - awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//': + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - gawk: + type: string + description: The name of the tool + - awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//': + type: eval + description: The expression to obtain the version of the tool authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/gawk/tests/main.nf.test b/modules/nf-core/gawk/tests/main.nf.test index 54462271..5fa9daf1 100644 --- a/modules/nf-core/gawk/tests/main.nf.test +++ b/modules/nf-core/gawk/tests/main.nf.test @@ -19,7 +19,7 @@ nextflow_process { process { """ input[0] = [ - [ id:'test' ], // meta map + [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] input[1] = [] @@ -29,10 +29,8 @@ nextflow_process { } then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) + assert process.success + assert snapshot(sanitizeOutput(process.out)).match() } } @@ -45,7 +43,7 @@ nextflow_process { process { """ input[0] = [ - [ id:'test' ], // meta map + [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] input[1] = Channel.of('BEGIN { FS = OFS = "\t"}; { print \$1, "0", \$2 }').collectFile(name:"program.awk") @@ -55,10 +53,8 @@ nextflow_process { } then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) + assert process.success + assert snapshot(sanitizeOutput(process.out)).match() } } @@ -71,7 +67,7 @@ nextflow_process { process { """ input[0] = [ - [ id:'test' ], // meta map + [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] input[1] = [] @@ -81,10 +77,8 @@ nextflow_process { } then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) + assert process.success + assert snapshot(sanitizeOutput(process.out)).match() } } @@ -97,7 +91,7 @@ nextflow_process { process { """ input[0] = [ - [ id:'test' ], // meta map + [ id:'test' ], [file(params.modules_testdata_base_path + 'generic/txt/hello.txt', checkIfExists: true), file(params.modules_testdata_base_path + 'generic/txt/species_names.txt', checkIfExists: true)] ] @@ -108,10 +102,8 @@ nextflow_process { } then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) + assert process.success + assert snapshot(sanitizeOutput(process.out)).match() } } @@ -124,7 +116,7 @@ nextflow_process { process { """ input[0] = [ - [ id:'test' ], // meta map + [ id:'test' ], [file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/NA12878_chrM.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/NA24385_sv.vcf.gz', checkIfExists: true)] ] @@ -135,10 +127,8 @@ nextflow_process { } then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) + assert process.success + assert snapshot(sanitizeOutput(process.out)).match() } } @@ -151,7 +141,7 @@ nextflow_process { process { """ input[0] = [ - [ id:'test' ], // meta map + [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] input[1] = [] @@ -161,10 +151,8 @@ nextflow_process { } then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) + assert process.success + assert snapshot(sanitizeOutput(process.out)).match() } } @@ -178,7 +166,7 @@ nextflow_process { process { """ input[0] = [ - [ id:'hello' ], // meta map + [ id:'hello' ], [file(params.modules_testdata_base_path + 'generic/txt/hello.txt', checkIfExists: true), file(params.modules_testdata_base_path + 'generic/txt/species_names.txt', checkIfExists: true)] ] @@ -189,10 +177,8 @@ nextflow_process { } then { - assertAll( - { assert process.failed }, - { assert process.errorReport.contains("Input and output names are the same, set prefix in module configuration to disambiguate!") } - ) + assert process.failed + assert process.errorReport.contains("Input and output names are the same, set prefix in module configuration to disambiguate!") } } -} \ No newline at end of file +} diff --git a/modules/nf-core/gawk/tests/main.nf.test.snap b/modules/nf-core/gawk/tests/main.nf.test.snap index d8e8ac75..1444c468 100644 --- a/modules/nf-core/gawk/tests/main.nf.test.snap +++ b/modules/nf-core/gawk/tests/main.nf.test.snap @@ -2,7 +2,7 @@ "Compress after processing": { "content": [ { - "0": [ + "output": [ [ { "id": "test" @@ -10,32 +10,25 @@ "test.txt.gz:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] ], - "1": [ - "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" - ], - "output": [ + "versions_gawk": [ [ - { - "id": "test" - }, - "test.txt.gz:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + "GAWK", + "gawk", + "5.3.0" ] - ], - "versions": [ - "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-11-27T17:11:20.054143406" + "timestamp": "2026-02-05T16:42:17.741168488" }, "Convert fasta to bed": { "content": [ { - "0": [ + "output": [ [ { "id": "test" @@ -43,32 +36,25 @@ "test.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] ], - "1": [ - "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" - ], - "output": [ + "versions_gawk": [ [ - { - "id": "test" - }, - "test.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + "GAWK", + "gawk", + "5.3.0" ] - ], - "versions": [ - "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-10-19T13:14:02.347809811" + "timestamp": "2026-02-05T16:41:46.810784678" }, "Convert fasta to bed with program file": { "content": [ { - "0": [ + "output": [ [ { "id": "test" @@ -76,32 +62,25 @@ "test.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] ], - "1": [ - "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" - ], - "output": [ + "versions_gawk": [ [ - { - "id": "test" - }, - "test.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + "GAWK", + "gawk", + "5.3.0" ] - ], - "versions": [ - "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-10-19T13:14:11.894616209" + "timestamp": "2026-02-05T16:41:52.884002736" }, "Extract first column from multiple files": { "content": [ { - "0": [ + "output": [ [ { "id": "test" @@ -109,32 +88,25 @@ "test.bed:md5,566c51674bd643227bb2d83e0963376d" ] ], - "1": [ - "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" - ], - "output": [ + "versions_gawk": [ [ - { - "id": "test" - }, - "test.bed:md5,566c51674bd643227bb2d83e0963376d" + "GAWK", + "gawk", + "5.3.0" ] - ], - "versions": [ - "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-10-19T22:04:47.729300129" + "timestamp": "2026-02-05T16:42:05.455428454" }, "Unzip files before processing": { "content": [ { - "0": [ + "output": [ [ { "id": "test" @@ -142,32 +114,25 @@ "test.bed:md5,1e31ebd4a060aab5433bbbd9ab24e403" ] ], - "1": [ - "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" - ], - "output": [ + "versions_gawk": [ [ - { - "id": "test" - }, - "test.bed:md5,1e31ebd4a060aab5433bbbd9ab24e403" + "GAWK", + "gawk", + "5.3.0" ] - ], - "versions": [ - "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-10-19T22:08:19.533527657" + "timestamp": "2026-02-05T16:42:11.976164295" }, "Convert fasta to bed using awk redirect instead of shell redirect": { "content": [ { - "0": [ + "output": [ [ { "id": "test" @@ -175,26 +140,19 @@ "test.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] ], - "1": [ - "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" - ], - "output": [ + "versions_gawk": [ [ - { - "id": "test" - }, - "test.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + "GAWK", + "gawk", + "5.3.0" ] - ], - "versions": [ - "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-03-05T08:31:09.88842854" + "timestamp": "2026-02-05T16:41:58.777371598" } } \ No newline at end of file diff --git a/modules/nf-core/gnu/sort/environment.yml b/modules/nf-core/gnu/sort/environment.yml index babcfb55..0c4cd942 100644 --- a/modules/nf-core/gnu/sort/environment.yml +++ b/modules/nf-core/gnu/sort/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - conda-forge::coreutils=9.3 + - conda-forge::coreutils=9.5 diff --git a/modules/nf-core/gnu/sort/main.nf b/modules/nf-core/gnu/sort/main.nf index e1167666..a16f6291 100644 --- a/modules/nf-core/gnu/sort/main.nf +++ b/modules/nf-core/gnu/sort/main.nf @@ -4,15 +4,15 @@ process GNU_SORT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/coreutils:9.3': - 'biocontainers/coreutils:9.3' }" + 'https://depot.galaxyproject.org/singularity/coreutils:9.5': + 'biocontainers/coreutils:9.5' }" input: tuple val(meta), path(input) output: - tuple val(meta), file( "${output_file}" ) , emit: sorted - path "versions.yml" , emit: versions + tuple val(meta), path( "${output_file}" ) , emit: sorted + tuple val("${task.process}"), val('coreutils'), eval("sort --version |& sed '1!d ; s/sort (GNU coreutils) //'"), emit: versions_coreutils, topic: versions when: task.ext.when == null || task.ext.when @@ -22,30 +22,19 @@ process GNU_SORT { def prefix = task.ext.prefix ?: "${meta.id}" suffix = task.ext.suffix ?: "${input.extension}" output_file = "${prefix}.${suffix}" - def VERSION = "9.3" // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. if ("$input" == "$output_file") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ sort ${args} ${input} > ${output_file} - cat <<-END_VERSIONS > versions.yml - "${task.process}": - coreutils: $VERSION - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" suffix = task.ext.suffix ?: "${input.extension}" output_file = "${prefix}.${suffix}" - def VERSION = "9.3" - if ("$input" == "$output_file") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ touch ${output_file} - cat <<-END_VERSIONS > versions.yml - "${task.process}": - coreutils: $VERSION - END_VERSIONS """ } diff --git a/modules/nf-core/gnu/sort/meta.yml b/modules/nf-core/gnu/sort/meta.yml index c555dbb5..48dde4a0 100644 --- a/modules/nf-core/gnu/sort/meta.yml +++ b/modules/nf-core/gnu/sort/meta.yml @@ -3,13 +3,18 @@ description: | Writes a sorted concatenation of file/s keywords: - GNU + - coreutils - sort - merge compare tools: - - sort: - description: "Writes a sorted concatenation of file/s" - homepage: "https://github.com/vgl-hub/gfastats" - documentation: "https://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html" + - gnu: + description: "The GNU Core Utilities are the basic file, shell and text manipulation + utilities of the GNU operating system. These are the core utilities which are + expected to exist on every operating system." + homepage: "https://www.gnu.org/software/coreutils/" + documentation: "https://www.gnu.org/software/coreutils/manual/html_node/index.html" + tool_dev_url: "https://git.savannah.gnu.org/cgit/coreutils.git" + doi: "10.5281/zenodo.581670" licence: ["GPL"] identifier: "" input: @@ -22,18 +27,42 @@ input: type: file description: Draft assembly file pattern: "*.{txt,bed,interval,genome,bins}" + ontologies: [] output: - - sorted: - - meta: + sorted: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + pattern: "${output_file}" + - "${output_file}": + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "${output_file}" + versions_coreutils: + - - ${task.process}: + type: string + description: The process the versions were collected from + - coreutils: + type: string + description: The tool name + - "sort --version |& sed '1!d ; s/sort (GNU coreutils) //'": + type: string + description: The command used to generate the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - coreutils: + type: string + description: The tool name + - "sort --version |& sed '1!d ; s/sort (GNU coreutils) //'": + type: string + description: The command used to generate the version of the tool authors: - "@DLBPointon" maintainers: diff --git a/modules/nf-core/gnu/sort/tests/main.nf.test b/modules/nf-core/gnu/sort/tests/main.nf.test index e4030187..9aef3daf 100644 --- a/modules/nf-core/gnu/sort/tests/main.nf.test +++ b/modules/nf-core/gnu/sort/tests/main.nf.test @@ -16,10 +16,9 @@ nextflow_process { process { """ input[0] = [ - [id:'genome_test'], - file(params.test_data['generic']['unsorted_data']['unsorted_text']['genome_file'], - checkIfExists: true) - ] + [id:'genome_test'], + file(params.modules_testdata_base_path + 'generic/unsorted_data/unsorted_text/test.genome', checkIfExists: true) + ] """ } } @@ -27,11 +26,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, - { assert snapshot( - file(process.out.sorted[0][1]).name - ).match("genome_sort") - } + { assert snapshot(process.out).match() } ) } @@ -43,10 +38,9 @@ nextflow_process { process { """ input[0] = [ - [id:'test'], - file(params.test_data['generic']['unsorted_data']['unsorted_text']['intervals'], - checkIfExists: true) - ] + [id:'test'], + file(params.modules_testdata_base_path + 'generic/unsorted_data/unsorted_text/test.bed', checkIfExists: true) + ] """ } } @@ -54,11 +48,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, - { assert snapshot( - file(process.out.sorted[0][1]).name - ).match("interval_sort") - } + { assert snapshot(process.out).match() } ) } @@ -71,10 +61,9 @@ nextflow_process { process { """ input[0] = [ - [id:'test'], - file(params.test_data['generic']['unsorted_data']['unsorted_text']['numbers_csv'], - checkIfExists: true) - ] + [id:'test'], + file(params.modules_testdata_base_path + 'generic/unsorted_data/unsorted_text/test.csv', checkIfExists: true) + ] """ } } @@ -82,11 +71,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, - { assert snapshot( - file(process.out.sorted[0][1]).name - ).match("csv_sort") - } + { assert snapshot(process.out).match() } ) } @@ -100,10 +85,9 @@ nextflow_process { process { """ input[0] = [ - [id:'test'], - file(params.test_data['generic']['unsorted_data']['unsorted_text']['numbers_csv'], - checkIfExists: true) - ] + [id:'test'], + file(params.modules_testdata_base_path + 'generic/unsorted_data/unsorted_text/test.csv', checkIfExists: true) + ] """ } } @@ -111,7 +95,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/gnu/sort/tests/main.nf.test.snap b/modules/nf-core/gnu/sort/tests/main.nf.test.snap index 63891bc4..f57dc6bb 100644 --- a/modules/nf-core/gnu/sort/tests/main.nf.test.snap +++ b/modules/nf-core/gnu/sort/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ], "1": [ - "versions.yml:md5,dd412503ec9dd665203e083ea44326cb" + [ + "GNU_SORT", + "coreutils", + "9.5" + ] ], "sorted": [ [ @@ -21,26 +25,20 @@ "test.csv.sorted:md5,0b52d1b4c4a0c6e972c6f94aafd75a1d" ] ], - "versions": [ - "versions.yml:md5,dd412503ec9dd665203e083ea44326cb" + "versions_coreutils": [ + [ + "GNU_SORT", + "coreutils", + "9.5" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-14T11:13:44.714632791" - }, - "interval_sort": { - "content": [ - "test.bed.sorted" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.04.8" }, - "timestamp": "2024-06-14T11:13:37.962807086" + "timestamp": "2026-01-23T15:48:28.77537237" }, "unsorted_csv_sort_stub": { "content": [ @@ -54,7 +52,11 @@ ] ], "1": [ - "versions.yml:md5,dd412503ec9dd665203e083ea44326cb" + [ + "GNU_SORT", + "coreutils", + "9.5" + ] ], "sorted": [ [ @@ -64,26 +66,20 @@ "test.csv.sorted:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,dd412503ec9dd665203e083ea44326cb" + "versions_coreutils": [ + [ + "GNU_SORT", + "coreutils", + "9.5" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.04.8" }, - "timestamp": "2024-06-14T11:13:51.456258705" - }, - "csv_sort": { - "content": [ - "test.csv.sorted" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-14T11:13:44.725431761" + "timestamp": "2026-01-23T15:48:45.534463019" }, "unsorted_genome_sort": { "content": [ @@ -97,7 +93,11 @@ ] ], "1": [ - "versions.yml:md5,dd412503ec9dd665203e083ea44326cb" + [ + "GNU_SORT", + "coreutils", + "9.5" + ] ], "sorted": [ [ @@ -107,26 +107,20 @@ "genome_test.bed.sorted:md5,fd97f7efafdbbfa71d9b560f10b4b048" ] ], - "versions": [ - "versions.yml:md5,dd412503ec9dd665203e083ea44326cb" + "versions_coreutils": [ + [ + "GNU_SORT", + "coreutils", + "9.5" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.04.8" }, - "timestamp": "2024-06-14T11:13:31.041778719" - }, - "genome_sort": { - "content": [ - "genome_test.bed.sorted" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-14T11:13:31.060201722" + "timestamp": "2026-01-23T15:47:54.290932481" }, "unsorted_intervals_sort": { "content": [ @@ -140,7 +134,11 @@ ] ], "1": [ - "versions.yml:md5,dd412503ec9dd665203e083ea44326cb" + [ + "GNU_SORT", + "coreutils", + "9.5" + ] ], "sorted": [ [ @@ -150,15 +148,19 @@ "test.bed.sorted:md5,abbce903ef263d38b2f71856387799ab" ] ], - "versions": [ - "versions.yml:md5,dd412503ec9dd665203e083ea44326cb" + "versions_coreutils": [ + [ + "GNU_SORT", + "coreutils", + "9.5" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.04.8" }, - "timestamp": "2024-06-14T11:13:37.951397547" + "timestamp": "2026-01-23T15:48:11.626509684" } } \ No newline at end of file diff --git a/modules/nf-core/gnu/sort/tests/sort_complex.config b/modules/nf-core/gnu/sort/tests/sort_complex.config index 103eaaf6..ce4f1518 100644 --- a/modules/nf-core/gnu/sort/tests/sort_complex.config +++ b/modules/nf-core/gnu/sort/tests/sort_complex.config @@ -3,4 +3,4 @@ process { ext.args = { "-t ';' -g -k 1,1 -k 2,2" } ext.suffix = { "csv.sorted" } } -} \ No newline at end of file +} diff --git a/modules/nf-core/gnu/sort/tests/sort_simple_bed.config b/modules/nf-core/gnu/sort/tests/sort_simple_bed.config index d7d52e0f..8496c8d7 100644 --- a/modules/nf-core/gnu/sort/tests/sort_simple_bed.config +++ b/modules/nf-core/gnu/sort/tests/sort_simple_bed.config @@ -3,4 +3,4 @@ process { ext.args = { "-k1,1 -k2,2n" } ext.suffix = { "bed.sorted" } } -} \ No newline at end of file +} diff --git a/modules/nf-core/gnu/sort/tests/sort_simple_genome.config b/modules/nf-core/gnu/sort/tests/sort_simple_genome.config index 4dcec385..c408ece1 100644 --- a/modules/nf-core/gnu/sort/tests/sort_simple_genome.config +++ b/modules/nf-core/gnu/sort/tests/sort_simple_genome.config @@ -3,4 +3,4 @@ process { ext.args = { "-k1,1 -k2,2n" } ext.suffix = { "genome.sorted" } } -} \ No newline at end of file +} diff --git a/modules/nf-core/gnu/sort/tests/tags.yml b/modules/nf-core/gnu/sort/tests/tags.yml deleted file mode 100644 index ac40e376..00000000 --- a/modules/nf-core/gnu/sort/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -gnu/sort: - - "modules/nf-core/gnu/sort/**" diff --git a/modules/nf-core/gunzip/main.nf b/modules/nf-core/gunzip/main.nf index 3ffc8e92..a8533e74 100644 --- a/modules/nf-core/gunzip/main.nf +++ b/modules/nf-core/gunzip/main.nf @@ -12,7 +12,7 @@ process GUNZIP { output: tuple val(meta), path("${gunzip}"), emit: gunzip - path "versions.yml", emit: versions + tuple val("${task.process}"), val('gunzip'), eval('gunzip --version 2>&1 | head -1 | sed "s/^.*(gzip) //; s/ Copyright.*//"'), topic: versions, emit: versions_gunzip when: task.ext.when == null || task.ext.when @@ -32,24 +32,14 @@ process GUNZIP { ${args} \\ ${archive} \\ > ${gunzip} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - gunzip: \$(echo \$(gunzip --version 2>&1) | sed 's/^.*(gzip) //; s/ Copyright.*\$//') - END_VERSIONS """ stub: - def args = task.ext.args ?: '' def extension = (archive.toString() - '.gz').tokenize('.')[-1] def name = archive.toString() - '.gz' - ".${extension}" def prefix = task.ext.prefix ?: name gunzip = prefix + ".${extension}" """ touch ${gunzip} - cat <<-END_VERSIONS > versions.yml - "${task.process}": - gunzip: \$(echo \$(gunzip --version 2>&1) | sed 's/^.*(gzip) //; s/ Copyright.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/gunzip/meta.yml b/modules/nf-core/gunzip/meta.yml index 926bb22a..bba6b3ba 100644 --- a/modules/nf-core/gunzip/meta.yml +++ b/modules/nf-core/gunzip/meta.yml @@ -34,13 +34,29 @@ output: description: Compressed/uncompressed file pattern: "*.*" ontologies: [] + versions_gunzip: + - - ${task.process}: + type: string + description: The process the versions were collected from + - gunzip: + type: string + description: The tool name + - gunzip --version 2>&1 | head -1 | sed "s/^.*(gzip) //; s/ Copyright.*//": + type: eval + description: The expression to obtain the version of the tool + +topics: versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + - - ${task.process}: + type: string + description: The process the versions were collected from + - gunzip: + type: string + description: The tool name + - gunzip --version 2>&1 | head -1 | sed "s/^.*(gzip) //; s/ Copyright.*//": + type: eval + description: The expression to obtain the version of the tool + authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/gunzip/tests/main.nf.test.snap b/modules/nf-core/gunzip/tests/main.nf.test.snap index a0f0e67e..111ba1bc 100644 --- a/modules/nf-core/gunzip/tests/main.nf.test.snap +++ b/modules/nf-core/gunzip/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ], "1": [ - "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" + [ + "GUNZIP", + "gunzip", + "1.13" + ] ], "gunzip": [ [ @@ -21,16 +25,20 @@ "test.xyz.fastq:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" + "versions_gunzip": [ + [ + "GUNZIP", + "gunzip", + "1.13" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-12-13T11:48:22.080222697" + "timestamp": "2026-01-19T17:21:56.633550769" }, "Should run without failures - stub": { "content": [ @@ -44,7 +52,11 @@ ] ], "1": [ - "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" + [ + "GUNZIP", + "gunzip", + "1.13" + ] ], "gunzip": [ [ @@ -54,16 +66,20 @@ "test_1.fastq:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" + "versions_gunzip": [ + [ + "GUNZIP", + "gunzip", + "1.13" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-12-13T11:48:14.593020264" + "timestamp": "2026-01-19T17:21:51.435621199" }, "Should run without failures": { "content": [ @@ -77,7 +93,11 @@ ] ], "1": [ - "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" + [ + "GUNZIP", + "gunzip", + "1.13" + ] ], "gunzip": [ [ @@ -87,16 +107,20 @@ "test_1.fastq:md5,4161df271f9bfcd25d5845a1e220dbec" ] ], - "versions": [ - "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" + "versions_gunzip": [ + [ + "GUNZIP", + "gunzip", + "1.13" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-12-13T11:48:01.295397925" + "timestamp": "2026-01-19T17:21:40.613975821" }, "Should run without failures - prefix": { "content": [ @@ -110,7 +134,11 @@ ] ], "1": [ - "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" + [ + "GUNZIP", + "gunzip", + "1.13" + ] ], "gunzip": [ [ @@ -120,15 +148,19 @@ "test.xyz.fastq:md5,4161df271f9bfcd25d5845a1e220dbec" ] ], - "versions": [ - "versions.yml:md5,d327e4a19a6d5c5e974136cef8999d8c" + "versions_gunzip": [ + [ + "GUNZIP", + "gunzip", + "1.13" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-12-13T11:48:07.414271387" + "timestamp": "2026-01-19T17:21:46.086880414" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/sort/environment.yml b/modules/nf-core/juicertools/pre/environment.yml similarity index 71% rename from modules/nf-core/samtools/sort/environment.yml rename to modules/nf-core/juicertools/pre/environment.yml index 62054fc9..1e4ce8d5 100644 --- a/modules/nf-core/samtools/sort/environment.yml +++ b/modules/nf-core/juicertools/pre/environment.yml @@ -4,5 +4,5 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 + - "bioconda::juicertools=2.20.00" + - "conda-forge::openjdk=23.0.2" diff --git a/modules/nf-core/juicertools/pre/main.nf b/modules/nf-core/juicertools/pre/main.nf new file mode 100644 index 00000000..ad1ef20f --- /dev/null +++ b/modules/nf-core/juicertools/pre/main.nf @@ -0,0 +1,47 @@ +process JUICERTOOLS_PRE { + tag "${meta.id}" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/a2/a268a257cdea987bd60f7717686134f1a3c949e2ae268284642f1ce5a0434289/data' : + 'community.wave.seqera.io/library/juicertools_openjdk:fe58dd49794d6603' }" + + input: + tuple val(meta) , path(pairs) + tuple val(meta2), val(genome_id), path(chromsizes) + + output: + tuple val(meta), path("*.hic"), emit: hic + tuple val("${task.process}"), val('juicer_tools'), eval('juicer_tools -V | grep "Version" | sed "s/Juicer Tools Version //"'), emit: versions_juicertools, topic: versions + + when: + task.ext.when == null || task.ext.when + + script: + if(genome_id && chromsizes) { + log.error("Error: both genome_id and chromsizes provided to juicertools/pre! Only one of these may be specified.") + } + if(!genome_id && !chromsizes) { + log.error("Error: neither genome_id nor chromsizes provided to juicertools/pre!") + } + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + input_genome = genome_id ?: chromsizes + """ + export _JAVA_OPTIONS="-Xms${task.memory.toMega().intdiv(4)}m -Xmx${task.memory.toGiga()}g" + + juicer_tools pre \\ + --threads ${task.cpus} \\ + ${args} \\ + ${pairs} \\ + ${prefix}.hic \\ + ${input_genome} + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.hic + """ +} diff --git a/modules/nf-core/juicertools/pre/meta.yml b/modules/nf-core/juicertools/pre/meta.yml new file mode 100644 index 00000000..47a7662b --- /dev/null +++ b/modules/nf-core/juicertools/pre/meta.yml @@ -0,0 +1,89 @@ +name: "juicertools_pre" +description: Create a multi-resolution .hic contact matrix for analysis with + Juicer +keywords: + - hic + - contact map + - genomics +tools: + - "juicertools": + description: "Visualization and analysis software for Hi-C data" + homepage: "https://github.com/aidenlab/juicer" + documentation: "https://github.com/aidenlab/juicer" + tool_dev_url: "https://github.com/aidenlab/juicer" + doi: "10.1016/j.cels.2016.07.002" + licence: + - "MIT" + identifier: "" +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - pairs: + type: file + description: | + Optionally gzipped TSV file, in one of a number of formats, + including pairs format. See https://github.com/aidenlab/juicer/wiki/Pre#file-format + for details. + pattern: "*.{pairs,tsv}" + ontologies: + - edam: "http://edamontology.org/format_3475" # TSV + - - meta2: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - genome_id: + type: string + description: | + String of a supported genome ID, see https://github.com/aidenlab/juicer/wiki/Pre#usage + for details. Incompatible with chromsizes option. + - chromsizes: + type: file + description: | + Headerless TSV file describing chromosome sizes with format: + chrom_name\tlength + + Incompatible with genome_id option. + pattern: "*.{tsv}" + ontologies: + - edam: "http://edamontology.org/format_3475" # TSV +output: + hic: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - "*.hic": + type: file + description: .hic file for analysis and visualisation in Juicer + pattern: "*.{hic}" + ontologies: [] + versions_juicertools: + - - ${task.process}: + type: string + description: The name of the process + - juicer_tools: + type: string + description: The name of the tool + - juicer_tools -V | grep "Version" | sed "s/Juicer Tools 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 + - juicer_tools: + type: string + description: The name of the tool + - juicer_tools -V | grep "Version" | sed "s/Juicer Tools Version //": + type: eval + description: The expression to obtain the version of the tool +authors: + - "@prototaxites" +maintainers: + - "@prototaxites" diff --git a/modules/nf-core/juicertools/pre/tests/main.nf.test b/modules/nf-core/juicertools/pre/tests/main.nf.test new file mode 100644 index 00000000..b3241b33 --- /dev/null +++ b/modules/nf-core/juicertools/pre/tests/main.nf.test @@ -0,0 +1,126 @@ +nextflow_process { + + name "Test Process JUICERTOOLS_PRE" + script "../main.nf" + process "JUICERTOOLS_PRE" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "juicertools" + tag "juicertools/pre" + tag "gawk" + + setup { + run("GAWK") { + script "../../../gawk/main.nf" + process { + """ + input[0] = [ + [id: "test"], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.sample1.pairs', checkIfExists: true) + ] + input[1] = [] + input[2] = false + """ + } + } + } + + test("homo sapiens - pairs - chrom.sizes") { + + when { + + params { + gawk_args2 = "'BEGIN { OFS = \"\\t\" } { gsub(\"+\", \"0\"); gsub(\"-\", \"1\"); print \$3, \$1, \$2, 0, \$6, \$4, \$5, 1}'" + gawk_suffix = "pairs" + module_args = "-n" + } + + process { + """ + input[0] = GAWK.out.output + input[1] = [ + [ id:'test', single_end:false ], // meta map + [], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.chrom.sizes', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo sapiens - pairs - hg19") { + + when { + + params { + gawk_args2 = "'BEGIN { OFS = \"\\t\" } { gsub(\"+\", \"0\"); gsub(\"-\", \"1\"); print \$3, \$1, \$2, 0, \$6, \$4, \$5, 1}'" + gawk_suffix = "pairs" + module_args = "-n" + } + + process { + """ + input[0] = GAWK.out.output + input[1] = [ + [ id:'test', single_end:false ], // meta map + "hg19", + [] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo sapiens - pairs - chrom.sizes - stub") { + + options "-stub" + + when { + + params { + gawk_args2 = "'BEGIN { OFS = \"\\t\" } { gsub(\"+\", \"0\"); gsub(\"-\", \"1\"); print \$3, \$1, \$2, 0, \$6, \$4, \$5, 1}'" + gawk_suffix = "pairs" + module_args = "-n" + } + + process { + """ + input[0] = GAWK.out.output + input[1] = [ + [ id:'test', single_end:false ], // meta map + [], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.chrom.sizes', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() + } + ) + } + + } + +} diff --git a/modules/nf-core/juicertools/pre/tests/main.nf.test.snap b/modules/nf-core/juicertools/pre/tests/main.nf.test.snap new file mode 100644 index 00000000..d7b25ab2 --- /dev/null +++ b/modules/nf-core/juicertools/pre/tests/main.nf.test.snap @@ -0,0 +1,125 @@ +{ + "homo sapiens - pairs - chrom.sizes": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.hic:md5,d5bbcb30d7bbbc93390e3d39bc8d9919" + ] + ], + "1": [ + [ + "JUICERTOOLS_PRE", + "juicer_tools", + "2.20.00" + ] + ], + "hic": [ + [ + { + "id": "test" + }, + "test.hic:md5,d5bbcb30d7bbbc93390e3d39bc8d9919" + ] + ], + "versions_juicertools": [ + [ + "JUICERTOOLS_PRE", + "juicer_tools", + "2.20.00" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T13:03:31.766801" + }, + "homo sapiens - pairs - hg19": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.hic:md5,308a915c06983d49055068671d7d2358" + ] + ], + "1": [ + [ + "JUICERTOOLS_PRE", + "juicer_tools", + "2.20.00" + ] + ], + "hic": [ + [ + { + "id": "test" + }, + "test.hic:md5,308a915c06983d49055068671d7d2358" + ] + ], + "versions_juicertools": [ + [ + "JUICERTOOLS_PRE", + "juicer_tools", + "2.20.00" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T13:03:56.129414" + }, + "homo sapiens - pairs - chrom.sizes - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.hic:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + "JUICERTOOLS_PRE", + "juicer_tools", + "2.20.00" + ] + ], + "hic": [ + [ + { + "id": "test" + }, + "test.hic:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_juicertools": [ + [ + "JUICERTOOLS_PRE", + "juicer_tools", + "2.20.00" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T13:04:04.93171" + } +} \ No newline at end of file diff --git a/modules/nf-core/juicertools/pre/tests/nextflow.config b/modules/nf-core/juicertools/pre/tests/nextflow.config new file mode 100644 index 00000000..9d637a0f --- /dev/null +++ b/modules/nf-core/juicertools/pre/tests/nextflow.config @@ -0,0 +1,10 @@ +process { + withName: GAWK { + ext.args2 = params.gawk_args2 + ext.suffix = params.gawk_suffix + } + + withName: JUICERTOOLS_PRE { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/merquryfk/merquryfk/environment.yml similarity index 76% rename from modules/nf-core/samtools/index/environment.yml rename to modules/nf-core/merquryfk/merquryfk/environment.yml index 62054fc9..65837be4 100644 --- a/modules/nf-core/samtools/index/environment.yml +++ b/modules/nf-core/merquryfk/merquryfk/environment.yml @@ -4,5 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 + - bioconda::merquryfk=1.2 diff --git a/modules/nf-core/merquryfk/merquryfk/main.nf b/modules/nf-core/merquryfk/merquryfk/main.nf index 0cb1c63b..4d53782d 100644 --- a/modules/nf-core/merquryfk/merquryfk/main.nf +++ b/modules/nf-core/merquryfk/merquryfk/main.nf @@ -2,79 +2,61 @@ process MERQURYFK_MERQURYFK { tag "$meta.id" label 'process_medium' - // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. - container 'quay.io/sanger-tol/fastk:1.0.2-c1' + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/56/56641ad3d1130e668134edc752fdf0bed1cc31da3b3d74730aa6edf40527493a/data' : + 'community.wave.seqera.io/library/merquryfk:1.2--f21b6c1cbbbbfe64' }" input: - tuple val(meta), path(fastk_hist),path(fastk_ktab),path(assembly),path(haplotigs) - path matktab //optional - path patktab //optional + tuple val(meta) , path(fastk_hist), path(fastk_ktab), path(assembly), path(haplotigs) + tuple val(meta2), path(mathaptab) // optional, trio mode + tuple val(meta3), path(pathaptab) // optional, trio mode output: tuple val(meta), path("${prefix}.completeness.stats") , emit: stats tuple val(meta), path("${prefix}.*_only.bed") , emit: bed tuple val(meta), path("${prefix}.*.qv") , emit: assembly_qv - tuple val(meta), path("${prefix}.*.spectra-cn.fl.{png,pdf}") , emit: spectra_cn_fl, optional: true - tuple val(meta), path("${prefix}.*.spectra-cn.ln.{png,pdf}") , emit: spectra_cn_ln, optional: true - tuple val(meta), path("${prefix}.*.spectra-cn.st.{png,pdf}") , emit: spectra_cn_st, optional: true tuple val(meta), path("${prefix}.qv") , emit: qv - tuple val(meta), path("${prefix}.spectra-asm.fl.{png,pdf}") , emit: spectra_asm_fl, optional: true - tuple val(meta), path("${prefix}.spectra-asm.ln.{png,pdf}") , emit: spectra_asm_ln, optional: true - tuple val(meta), path("${prefix}.spectra-asm.st.{png,pdf}") , emit: spectra_asm_st, optional: true - tuple val(meta), path("${prefix}.phased_block.bed") , emit: phased_block_bed, optional: true + tuple val(meta), path("${prefix}.phased_block.bed") , emit: phased_block_bed , optional: true tuple val(meta), path("${prefix}.phased_block.stats") , emit: phased_block_stats, optional: true - tuple val(meta), path("${prefix}.continuity.N.{pdf,png}") , emit: continuity_N, optional: true - tuple val(meta), path("${prefix}.block.N.{pdf,png}") , emit: block_N, optional: true - tuple val(meta), path("${prefix}.block.blob.{pdf,png}") , emit: block_blob, optional: true - tuple val(meta), path("${prefix}.hapmers.blob.{pdf,png}") , emit: hapmers_blob, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("*.{pdf,png}") , emit: images, optional: true + // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + tuple val("${task.process}"), val('merquryfk'), eval('echo 1.2'), emit: versions_merquryfk, topic: versions + // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + tuple val("${task.process}"), val('fastk'), eval('echo 1.2'), emit: versions_fastk, topic: versions + tuple val("${task.process}"), val('R'), eval('R --version | sed "1!d; s/.*version //; s/ .*//"'), emit: versions_r, topic: versions when: task.ext.when == null || task.ext.when script: - // Exit if running this module with -profile conda / -profile mamba - if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { - error "MERQURYFK_MERQURYFK module does not support Conda. Please use Docker / Singularity / Podman instead." + if([mathaptab, pathaptab].any() && ![mathaptab, pathaptab].every()) { + log.error("Error: Only one of the maternal and paternal hap tabs have been provided!") } - def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "${meta.id}" - def mat_ktab = matktab ? "${matktab.find{ it.toString().endsWith(".ktab") }}" : '' - def pat_ktab = patktab ? "${patktab.find{ it.toString().endsWith(".ktab") }}" : '' - def FASTK_VERSION = 'f18a4e6d2207539f7b84461daebc54530a9559b0' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. - def MERQURY_VERSION = '8ae344092df5dcaf83cfb7f90f662597a9b1fc61' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + def fk_ktab = fastk_ktab ? "${fastk_ktab.find { path -> path.toString().endsWith(".ktab") }}" : '' + def mat_hapktab = mathaptab ? "${mathaptab.find { path -> path.toString().endsWith(".ktab") }}" : '' + def pat_hapktab = pathaptab ? "${pathaptab.find { path -> path.toString().endsWith(".ktab") }}" : '' """ MerquryFK \\ $args \\ -T$task.cpus \\ - ${fastk_ktab.find{ it.toString().endsWith(".ktab") }} \\ - ${mat_ktab} \\ - ${pat_ktab} \\ + ${fk_ktab} \\ + ${mat_hapktab} \\ + ${pat_hapktab} \\ $assembly \\ $haplotigs \\ $prefix - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastk: $FASTK_VERSION - merquryfk: $MERQURY_VERSION - r: \$( R --version | sed '1!d; s/.*version //; s/ .*//' ) - END_VERSIONS """ + stub: prefix = task.ext.prefix ?: "${meta.id}" - def FASTK_VERSION = 'f18a4e6d2207539f7b84461daebc54530a9559b0' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. - def MERQURY_VERSION = '8ae344092df5dcaf83cfb7f90f662597a9b1fc61' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ touch ${prefix}.completeness.stats touch ${prefix}.qv touch ${prefix}._.qv touch ${prefix}._only.bed - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastk: $FASTK_VERSION - merquryfk: $MERQURY_VERSION - r: \$( R --version | sed '1!d; s/.*version //; s/ .*//' ) - END_VERSIONS """ } diff --git a/modules/nf-core/merquryfk/merquryfk/merquryfk-merquryfk.diff b/modules/nf-core/merquryfk/merquryfk/merquryfk-merquryfk.diff deleted file mode 100644 index dfa35f41..00000000 --- a/modules/nf-core/merquryfk/merquryfk/merquryfk-merquryfk.diff +++ /dev/null @@ -1,29 +0,0 @@ -Changes in module 'nf-core/merquryfk/merquryfk' -'modules/nf-core/merquryfk/merquryfk/meta.yml' is unchanged -Changes in 'merquryfk/merquryfk/main.nf': ---- modules/nf-core/merquryfk/merquryfk/main.nf -+++ modules/nf-core/merquryfk/merquryfk/main.nf -@@ -3,12 +3,12 @@ - label 'process_medium' - - // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. -- container 'ghcr.io/nbisweden/fastk_genescopefk_merquryfk:1.2' -+ container 'quay.io/sanger-tol/fastk:1.0.2-c1' - - input: - tuple val(meta), path(fastk_hist),path(fastk_ktab),path(assembly),path(haplotigs) - path matktab //optional -- path patktab //optional -+ path patktab - - output: - tuple val(meta), path("${prefix}.completeness.stats") , emit: stats - -'modules/nf-core/merquryfk/merquryfk/tests/nextflow.trio.config' is unchanged -'modules/nf-core/merquryfk/merquryfk/tests/nextflow.png.config' is unchanged -'modules/nf-core/merquryfk/merquryfk/tests/main.nf.test' is unchanged -'modules/nf-core/merquryfk/merquryfk/tests/tags.yml' is unchanged -'modules/nf-core/merquryfk/merquryfk/tests/nextflow.config' is unchanged -'modules/nf-core/merquryfk/merquryfk/tests/nextflow.pdf.config' is unchanged -'modules/nf-core/merquryfk/merquryfk/tests/main.nf.test.snap' is unchanged -************************************************************ diff --git a/modules/nf-core/merquryfk/merquryfk/meta.yml b/modules/nf-core/merquryfk/merquryfk/meta.yml index 82bfbec4..f89b9153 100644 --- a/modules/nf-core/merquryfk/merquryfk/meta.yml +++ b/modules/nf-core/merquryfk/merquryfk/meta.yml @@ -21,31 +21,47 @@ input: type: file description: A histogram files from the program FastK pattern: "*.hist" + ontologies: [] - fastk_ktab: type: file description: Histogram ktab files from the program FastK (option -t) pattern: "*.ktab*" + ontologies: [] - assembly: type: file description: Genome (primary) assembly files (fasta format) pattern: ".fasta" + ontologies: [] - haplotigs: type: file description: Assembly haplotigs (fasta format) pattern: ".fasta" - - - matktab: + ontologies: [] + - - meta2: + type: map + description: | + Groovy Map containing maternal sample information + e.g. [ id:'test', single_end:false ] + - mathaptab: type: file - description: trio maternal histogram ktab files from the program FastK (option - -t) + description: trio maternal histogram ktab files from the program FastK + (option -t) pattern: "*.ktab*" - - - patktab: + ontologies: [] + - - meta3: + type: map + description: | + Groovy Map containing paternal sample information + e.g. [ id:'test', single_end:false ] + - pathaptab: type: file - description: trio paternal histogram ktab files from the program FastK (option - -t) + description: trio paternal histogram ktab files from the program FastK + (option -t) pattern: "*.ktab*" + ontologies: [] output: - - stats: - - meta: + stats: + - - meta: type: map description: | Groovy Map containing sample information @@ -54,18 +70,23 @@ output: type: file description: Assembly statistics file pattern: "*.completeness.stats" - - bed: - - meta: + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + bed: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - ${prefix}.*_only.bed: type: file - description: Assembly only kmer positions not supported by reads in bed format + description: Assembly only kmer positions not supported by reads in bed + format pattern: "*_only.bed" - - assembly_qv: - - meta: + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + assembly_qv: + - - meta: type: map description: | Groovy Map containing sample information @@ -74,38 +95,10 @@ output: type: file description: "error and qv table for each scaffold of the assembly" pattern: "*.qv" - - spectra_cn_fl: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.*.spectra-cn.fl.{png,pdf}: - type: file - description: "Unstacked copy number spectra filled plot in PNG or PDF format" - pattern: "*.spectra-cn.fl.{png,pdf}" - - spectra_cn_ln: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.*.spectra-cn.ln.{png,pdf}: - type: file - description: "Unstacked copy number spectra line plot in PNG or PDF format" - pattern: "*.spectra-cn.ln.{png,pdf}" - - spectra_cn_st: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.*.spectra-cn.st.{png,pdf}: - type: file - description: "Stacked copy number spectra line plot in PNG or PDF format" - pattern: "*.spectra-cn.st.{png,pdf}" - - qv: - - meta: + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + qv: + - - meta: type: map description: | Groovy Map containing sample information @@ -114,48 +107,22 @@ output: type: file description: "error and qv of each assembly as a whole" pattern: "*.qv" - - spectra_asm_fl: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.spectra-asm.fl.{png,pdf}: - type: file - description: "Unstacked assembly spectra filled plot in PNG or PDF format" - pattern: "*.spectra-asm.fl.{png,pdf}" - - spectra_asm_ln: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.spectra-asm.ln.{png,pdf}: - type: file - description: "Unstacked assembly spectra line plot in PNG or PDF format" - pattern: "*.spectra-asm.ln.{png,pdf}" - - spectra_asm_st: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.spectra-asm.st.{png,pdf}: - type: file - description: "Stacked assembly spectra line plot in PNG or PDF format" - pattern: "*.spectra-asm.st.{png,pdf}" - - phased_block_bed: - - meta: + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + phased_block_bed: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - ${prefix}.phased_block.bed: type: file - description: Assembly kmer positions seperated by block in bed format + description: Assembly kmer positions separated by block in bed format pattern: "*.phased.block.bed" - - phased_block_stats: - - meta: + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + phased_block_stats: + - - meta: type: map description: | Groovy Map containing sample information @@ -164,51 +131,80 @@ output: type: file description: phased assembly statistics file pattern: "*.phased.block.stats" - - continuity_N: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.continuity.N.{pdf,png}: - type: file - description: "Stacked assembly N continuity plot in PNG or PDF format" - pattern: "*.continuity.N.{png,pdf}" - - block_N: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.block.N.{pdf,png}: - type: file - description: "Stacked assembly N continuity by block plot in PNG or PDF format" - pattern: "*.block.N.{png,pdf}" - - block_blob: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.block.blob.{pdf,png}: - type: file - description: "Stacked assembly block plot in PNG or PDF format" - pattern: "*.block.blob.{png,pdf}" - - hapmers_blob: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.hapmers.blob.{pdf,png}: - type: file - description: "Stacked assembly hapmers block plot in PNG or PDF format" - pattern: "*.hapmers.blob.{png,pdf}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + images: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{pdf,png}": + type: file + description: Output graphs from MerquryFK + pattern: "*.{pdf,png}" + ontologies: + - edam: http://edamontology.org/format_3508 # PDF + - edam: http://edamontology.org/format_3603 # PNG + versions_merquryfk: + - - ${task.process}: + type: string + description: Name of the process + - merquryfk: + type: string + description: The name of the tool + - echo 1.2: + type: eval + description: The expression to obtain the version of the tool + versions_fastk: + - - ${task.process}: + type: string + description: Name of the process + - fastk: + type: string + description: Name of the tool + - echo 1.2: + type: eval + description: The expression to obtain the version of the tool + versions_r: + - - ${task.process}: + type: string + description: Name of the process + - R: + type: string + description: Name of the tool + - R --version | sed "1!d; s/.*version //; s/ .*//": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: Name of the process + - merquryfk: + type: string + description: The name of the tool + - echo 1.2: + type: eval + description: The expression to obtain the version of the tool + - - ${task.process}: + type: string + description: Name of the process + - fastk: + type: string + description: Name of the tool + - echo 1.2: + type: eval + description: The expression to obtain the version of the tool + - - ${task.process}: + type: string + description: Name of the process + - R: + type: string + description: Name of the tool + - R --version | sed "1!d; s/.*version //; s/ .*//": + type: eval + description: The expression to obtain the version of the tool authors: - "@mahesh-panchal" - "@yumisims" diff --git a/modules/nf-core/merquryfk/merquryfk/tests/main.nf.test b/modules/nf-core/merquryfk/merquryfk/tests/main.nf.test index c46843c6..b09da9cf 100644 --- a/modules/nf-core/merquryfk/merquryfk/tests/main.nf.test +++ b/modules/nf-core/merquryfk/merquryfk/tests/main.nf.test @@ -8,62 +8,71 @@ nextflow_process { tag "modules_nfcore" tag "merquryfk" tag "merquryfk/merquryfk" + tag "merquryfk/hapmaker" tag "fastk" tag "fastk/fastk" setup { - run("FASTK_FASTK") { + run("FASTK_FASTK") { script "../../../fastk/fastk" process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + file(params.modules_testdata_base_path + 'delete_me/merquryfk/Child.Reads.fasta.gz', checkIfExists: true) ] """ } - } - run("FASTK_FASTK", alias: "FASTK_MAT") { + } + + run("FASTK_FASTK", alias: "FASTK_MAT") { script "../../../fastk/fastk" process { """ input[0] = [ - [ id:'test', single_end:false ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + [ id:'test_mat', single_end:false ], + file(params.modules_testdata_base_path + 'delete_me/merquryfk/Mother.Reads.fasta.gz', checkIfExists: true), ] """ } - } + } run("FASTK_FASTK", alias: "FASTK_PAT") { script "../../../fastk/fastk" process { """ input[0] = [ - [ id:'test', single_end:false ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true), + [ id:'test_pat', single_end:false ], + file(params.modules_testdata_base_path + 'delete_me/merquryfk/Father.Reads.fasta.gz', checkIfExists: true), ] """ } + } + + run("MERQURYFK_HAPMAKER") { + script "../../hapmaker" + process { + """ + input[0] = FASTK_MAT.out.ktab + input[1] = FASTK_PAT.out.ktab + input[2] = FASTK_FASTK.out.ktab + """ } } + } + + test("MerquryFK - Synthetic trio data - hap1 only - no trio") { + + config "./nextflow.config" - test("homo_sapiens - Illumina - png") { - config "./nextflow.png.config" when { process { """ - assembly = [ - [ id:'test', single_end:true ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ] - - haplotigs = [ - [ id:'test', single_end:true ], [] - ] - input[0] = FASTK_FASTK.out.hist.join(FASTK_FASTK.out.ktab).join(Channel.from(assembly)).join(Channel.from(haplotigs)) - input[1] = [] - input[2] = [] + input[0] = FASTK_FASTK.out.hist.join(FASTK_FASTK.out.ktab).map { meta, hist, ktab -> + [ meta, hist, ktab, file(params.modules_testdata_base_path + 'delete_me/merquryfk/Hap1.fasta.gz', checkIfExists: true), [] ] + } + input[1] = [[:], []] + input[2] = [[:], []] """ } } @@ -71,28 +80,36 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.stats, + process.out.qv, + process.out.assembly_qv, + process.out.images.collect { meta, images -> [ meta, images.collect { img -> file(img).name } ] }, + process.out.findAll { key, val -> key.startsWith("versions")} + ).match() } ) } } - test("homo_sapiens - Illumina - pdf") { - config "./nextflow.pdf.config" + test("MerquryFK - Synthetic trio data - both haps - no trio") { + + config "./nextflow.config" + when { process { """ - assembly = [ - [ id:'test', single_end:true ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ] - - haplotigs = [ - [ id:'test', single_end:true ], [] - ] - input[0] = FASTK_FASTK.out.hist.join(FASTK_FASTK.out.ktab).join(Channel.from(assembly)).join(Channel.from(haplotigs)) - input[1] = [] - input[2] = [] + input[0] = FASTK_FASTK.out.hist.join(FASTK_FASTK.out.ktab).map { meta, hist, ktab -> + [ + meta, + hist, + ktab, + file(params.modules_testdata_base_path + 'delete_me/merquryfk/Hap1.fasta.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'delete_me/merquryfk/Hap2.fasta.gz', checkIfExists: true), + ] + } + input[1] = [[:], []] + input[2] = [[:], []] """ } } @@ -100,28 +117,37 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.stats, + process.out.qv, + process.out.assembly_qv, + process.out.images.collect { meta, images -> [ meta, images.collect { img -> file(img).name } ] }, + process.out.findAll { key, val -> key.startsWith("versions")} + ).match() } ) } } - - test("homo_sapiens - Illumina - trio") { - config "./nextflow.trio.config" + + test("MerquryFK - Synthetic trio data - both haps - trio") { + + config "./nextflow.config" + when { - process { - """ - assembly = [ - [ id:'test', single_end:true ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ] - haplotigs = [ - [ id:'test', single_end:true ], [] - ] - input[0] = FASTK_FASTK.out.hist.join(FASTK_FASTK.out.ktab).join(Channel.from(assembly)).join(Channel.from(haplotigs)) - input[1] = FASTK_MAT.out.ktab - input[2] = FASTK_PAT.out.ktab + process { + """ + input[0] = FASTK_FASTK.out.hist.join(FASTK_FASTK.out.ktab).map { meta, hist, ktab -> + [ + meta, + hist, + ktab, + file(params.modules_testdata_base_path + 'delete_me/merquryfk/Hap1.fasta.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'delete_me/merquryfk/Hap2.fasta.gz', checkIfExists: true), + ] + } + input[1] = MERQURYFK_HAPMAKER.out.mat_hap_ktab + input[2] = MERQURYFK_HAPMAKER.out.pat_hap_ktab """ } } @@ -129,29 +155,39 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.stats, + process.out.qv, + process.out.assembly_qv, + process.out.phased_block_bed, + process.out.phased_block_stats, + process.out.images.collect { meta, images -> [ meta, images.collect { img -> file(img).name } ] }, + process.out.findAll { key, val -> key.startsWith("versions")} + ).match() } ) } } test("homo_sapiens - Illumina - stub") { + options "-stub" - config "./nextflow.pdf.config" + config "./nextflow.config" + when { process { """ - assembly = [ - [ id:'test', single_end:true ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ] - - haplotigs = [ - [ id:'test', single_end:true ], [] - ] - input[0] = FASTK_FASTK.out.hist.join(FASTK_FASTK.out.ktab).join(Channel.from(assembly)).join(Channel.from(haplotigs)) - input[1] = [] - input[2] = [] + input[0] = FASTK_FASTK.out.hist.join(FASTK_FASTK.out.ktab).map { meta, hist, ktab -> + [ + meta, + hist, + ktab, + file(params.modules_testdata_base_path + 'delete_me/merquryfk/Hap1.fasta.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'delete_me/merquryfk/Hap2.fasta.gz', checkIfExists: true), + ] + } + input[1] = [[:], []] + input[2] = [[:], []] """ } } @@ -166,5 +202,5 @@ nextflow_process { } - -} \ No newline at end of file + +} diff --git a/modules/nf-core/merquryfk/merquryfk/tests/main.nf.test.snap b/modules/nf-core/merquryfk/merquryfk/tests/main.nf.test.snap index f7ce47f0..d5d18f94 100644 --- a/modules/nf-core/merquryfk/merquryfk/tests/main.nf.test.snap +++ b/modules/nf-core/merquryfk/merquryfk/tests/main.nf.test.snap @@ -1,265 +1,201 @@ { - "homo_sapiens - Illumina - stub": { + "MerquryFK - Synthetic trio data - hap1 only - no trio": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.completeness.stats:md5,53d56b2e76feadfb73fb2c48c129f436" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.qv:md5,781d72926d1c9a9be5761ce1601df4f8" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Hap1.qv:md5,bf3fb8514963e67ce7663f642b15be8e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Hap1.spectra-cn.fl.png", + "test.Hap1.spectra-cn.ln.png", + "test.Hap1.spectra-cn.st.png", + "test.spectra-asm.fl.png", + "test.spectra-asm.ln.png", + "test.spectra-asm.st.png" + ] + ] + ], { - "0": [ - - ], - "1": [ - - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - - ], - "13": [ - - ], - "14": [ - - ], - "15": [ - - ], - "16": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - - ], - "6": [ - - ], - "7": [ - - ], - "8": [ - - ], - "9": [ - - ], - "assembly_qv": [ - - ], - "bed": [ - - ], - "block_N": [ - - ], - "block_blob": [ - - ], - "continuity_N": [ - - ], - "hapmers_blob": [ - - ], - "phased_block_bed": [ - - ], - "phased_block_stats": [ - - ], - "qv": [ - - ], - "spectra_asm_fl": [ - - ], - "spectra_asm_ln": [ - - ], - "spectra_asm_st": [ - - ], - "spectra_cn_fl": [ - - ], - "spectra_cn_ln": [ - - ], - "spectra_cn_st": [ - - ], - "stats": [ - - ], - "versions": [ - + "versions_fastk": [ + [ + "MERQURYFK_MERQURYFK", + "fastk", + "1.2" + ] + ], + "versions_merquryfk": [ + [ + "MERQURYFK_MERQURYFK", + "merquryfk", + "1.2" + ] + ], + "versions_r": [ + [ + "MERQURYFK_MERQURYFK", + "R", + "4.3.3" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-08-15T15:22:52.240373868" + "timestamp": "2026-02-09T11:21:46.020517" }, - "homo_sapiens - Illumina - pdf": { + "MerquryFK - Synthetic trio data - both haps - no trio": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.completeness.stats:md5,27b3c4471291cdb8f3732726dad7eb86" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.qv:md5,8cec89f9bb6148bb064a43e37c0f208b" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Hap1.qv:md5,bf3fb8514963e67ce7663f642b15be8e", + "test.Hap2.qv:md5,640cb86ad23a5062cead6733aba0bbab" + ] + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Hap1.spectra-cn.fl.png", + "test.Hap1.spectra-cn.ln.png", + "test.Hap1.spectra-cn.st.png", + "test.Hap2.spectra-cn.fl.png", + "test.Hap2.spectra-cn.ln.png", + "test.Hap2.spectra-cn.st.png", + "test.spectra-asm.fl.png", + "test.spectra-asm.ln.png", + "test.spectra-asm.st.png", + "test.spectra-cn.fl.png", + "test.spectra-cn.ln.png", + "test.spectra-cn.st.png" + ] + ] + ], { - "0": [ - - ], - "1": [ - - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - - ], - "13": [ - - ], - "14": [ - - ], - "15": [ - - ], - "16": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - - ], - "6": [ - - ], - "7": [ - - ], - "8": [ - - ], - "9": [ - - ], - "assembly_qv": [ - - ], - "bed": [ - - ], - "block_N": [ - - ], - "block_blob": [ - - ], - "continuity_N": [ - - ], - "hapmers_blob": [ - - ], - "phased_block_bed": [ - - ], - "phased_block_stats": [ - - ], - "qv": [ - - ], - "spectra_asm_fl": [ - - ], - "spectra_asm_ln": [ - - ], - "spectra_asm_st": [ - - ], - "spectra_cn_fl": [ - - ], - "spectra_cn_ln": [ - - ], - "spectra_cn_st": [ - - ], - "stats": [ - - ], - "versions": [ - + "versions_fastk": [ + [ + "MERQURYFK_MERQURYFK", + "fastk", + "1.2" + ] + ], + "versions_merquryfk": [ + [ + "MERQURYFK_MERQURYFK", + "merquryfk", + "1.2" + ] + ], + "versions_r": [ + [ + "MERQURYFK_MERQURYFK", + "R", + "4.3.3" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-08-15T15:22:19.530675341" + "timestamp": "2026-02-09T11:22:42.995332" }, - "homo_sapiens - Illumina - png": { + "homo_sapiens - Illumina - stub": { "content": [ { "0": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.completeness.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "1": [ - - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - - ], - "13": [ - - ], - "14": [ - - ], - "15": [ - - ], - "16": [ - + [ + { + "id": "test", + "single_end": false + }, + "test._only.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "2": [ - + [ + { + "id": "test", + "single_end": false + }, + "test._.qv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "3": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.qv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "4": [ @@ -271,30 +207,45 @@ ], "7": [ - + [ + "MERQURYFK_MERQURYFK", + "merquryfk", + "1.2" + ] ], "8": [ - + [ + "MERQURYFK_MERQURYFK", + "fastk", + "1.2" + ] ], "9": [ - + [ + "MERQURYFK_MERQURYFK", + "R", + "4.3.3" + ] ], "assembly_qv": [ - + [ + { + "id": "test", + "single_end": false + }, + "test._.qv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "bed": [ - - ], - "block_N": [ - - ], - "block_blob": [ - + [ + { + "id": "test", + "single_end": false + }, + "test._only.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], - "continuity_N": [ - - ], - "hapmers_blob": [ + "images": [ ], "phased_block_bed": [ @@ -304,151 +255,159 @@ ], "qv": [ - - ], - "spectra_asm_fl": [ - - ], - "spectra_asm_ln": [ - - ], - "spectra_asm_st": [ - - ], - "spectra_cn_fl": [ - - ], - "spectra_cn_ln": [ - - ], - "spectra_cn_st": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.qv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "stats": [ - - ], - "versions": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.completeness.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_fastk": [ + [ + "MERQURYFK_MERQURYFK", + "fastk", + "1.2" + ] + ], + "versions_merquryfk": [ + [ + "MERQURYFK_MERQURYFK", + "merquryfk", + "1.2" + ] + ], + "versions_r": [ + [ + "MERQURYFK_MERQURYFK", + "R", + "4.3.3" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-08-15T15:21:57.682723412" + "timestamp": "2026-02-09T11:24:56.048412" }, - "homo_sapiens - Illumina - trio": { + "MerquryFK - Synthetic trio data - both haps - trio": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.completeness.stats:md5,df5199caa40c290d47379b47c4c1b51a" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.qv:md5,8cec89f9bb6148bb064a43e37c0f208b" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Hap1.qv:md5,bf3fb8514963e67ce7663f642b15be8e", + "test.Hap2.qv:md5,640cb86ad23a5062cead6733aba0bbab" + ] + ] + ], + [ + + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Hap1.block.N.png", + "test.Hap1.continuity.N.png", + "test.Hap1.phased_block.blob.png", + "test.Hap1.spectra-cn.fl.png", + "test.Hap1.spectra-cn.ln.png", + "test.Hap1.spectra-cn.st.png", + "test.Hap1.test_mat.spectra-cn.fl.png", + "test.Hap1.test_mat.spectra-cn.ln.png", + "test.Hap1.test_mat.spectra-cn.st.png", + "test.Hap1.test_pat.hap.spectra-cn.fl.png", + "test.Hap1.test_pat.hap.spectra-cn.ln.png", + "test.Hap1.test_pat.hap.spectra-cn.st.png", + "test.Hap2.block.N.png", + "test.Hap2.continuity.N.png", + "test.Hap2.phased_block.blob.png", + "test.Hap2.spectra-cn.fl.png", + "test.Hap2.spectra-cn.ln.png", + "test.Hap2.spectra-cn.st.png", + "test.Hap2.test_mat.spectra-cn.fl.png", + "test.Hap2.test_mat.spectra-cn.ln.png", + "test.Hap2.test_mat.spectra-cn.st.png", + "test.Hap2.test_pat.hap.spectra-cn.fl.png", + "test.Hap2.test_pat.hap.spectra-cn.ln.png", + "test.Hap2.test_pat.hap.spectra-cn.st.png", + "test.hapmers.blob.png", + "test.spectra-asm.fl.png", + "test.spectra-asm.ln.png", + "test.spectra-asm.st.png", + "test.spectra-cn.fl.png", + "test.spectra-cn.ln.png", + "test.spectra-cn.st.png" + ] + ] + ], { - "0": [ - - ], - "1": [ - - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - - ], - "13": [ - - ], - "14": [ - - ], - "15": [ - - ], - "16": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - - ], - "6": [ - - ], - "7": [ - - ], - "8": [ - - ], - "9": [ - - ], - "assembly_qv": [ - - ], - "bed": [ - - ], - "block_N": [ - - ], - "block_blob": [ - - ], - "continuity_N": [ - - ], - "hapmers_blob": [ - - ], - "phased_block_bed": [ - - ], - "phased_block_stats": [ - - ], - "qv": [ - - ], - "spectra_asm_fl": [ - - ], - "spectra_asm_ln": [ - - ], - "spectra_asm_st": [ - - ], - "spectra_cn_fl": [ - - ], - "spectra_cn_ln": [ - - ], - "spectra_cn_st": [ - - ], - "stats": [ - - ], - "versions": [ - + "versions_fastk": [ + [ + "MERQURYFK_MERQURYFK", + "fastk", + "1.2" + ] + ], + "versions_merquryfk": [ + [ + "MERQURYFK_MERQURYFK", + "merquryfk", + "1.2" + ] + ], + "versions_r": [ + [ + "MERQURYFK_MERQURYFK", + "R", + "4.3.3" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-08-15T15:22:40.060937299" + "timestamp": "2026-02-09T11:24:47.691524" } } \ No newline at end of file diff --git a/modules/nf-core/merquryfk/merquryfk/tests/nextflow.config b/modules/nf-core/merquryfk/merquryfk/tests/nextflow.config index ba1eebc9..13ee5c50 100644 --- a/modules/nf-core/merquryfk/merquryfk/tests/nextflow.config +++ b/modules/nf-core/merquryfk/merquryfk/tests/nextflow.config @@ -1,8 +1,11 @@ process { - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - withName: 'FASTK_.*' { - ext.args = '-t' - publishDir = [ enabled: false ] + // Singularity tests fail due to memory allocation issues + // Fix memory to something low to ensure they pass + memory = '1.GB' + ext.args = '-t' + } + withName: 'MERQURYFK_MERQURYFK' { + ext.args = '-lfs' } } diff --git a/modules/nf-core/merquryfk/merquryfk/tests/nextflow.pdf.config b/modules/nf-core/merquryfk/merquryfk/tests/nextflow.pdf.config deleted file mode 100644 index 52beeaa3..00000000 --- a/modules/nf-core/merquryfk/merquryfk/tests/nextflow.pdf.config +++ /dev/null @@ -1,9 +0,0 @@ -process { - withName: 'FASTK_.*' { - ext.args = '-t' - publishDir = [ enabled: false ] - } - withName: 'MERQURYFK_MERQURYFK' { - ext.args = '-lfs -pdf' - } -} diff --git a/modules/nf-core/merquryfk/merquryfk/tests/nextflow.png.config b/modules/nf-core/merquryfk/merquryfk/tests/nextflow.png.config deleted file mode 100644 index 47c3d63e..00000000 --- a/modules/nf-core/merquryfk/merquryfk/tests/nextflow.png.config +++ /dev/null @@ -1,9 +0,0 @@ -process { - withName: 'FASTK_.*' { - ext.args = '-t' - publishDir = [ enabled: false ] - } - withName: 'MERQURYFK_MERQURYFK' { - ext.args = '-lfs' - } -} diff --git a/modules/nf-core/merquryfk/merquryfk/tests/nextflow.trio.config b/modules/nf-core/merquryfk/merquryfk/tests/nextflow.trio.config deleted file mode 100644 index 47c3d63e..00000000 --- a/modules/nf-core/merquryfk/merquryfk/tests/nextflow.trio.config +++ /dev/null @@ -1,9 +0,0 @@ -process { - withName: 'FASTK_.*' { - ext.args = '-t' - publishDir = [ enabled: false ] - } - withName: 'MERQURYFK_MERQURYFK' { - ext.args = '-lfs' - } -} diff --git a/modules/nf-core/merquryfk/merquryfk/tests/tags.yml b/modules/nf-core/merquryfk/merquryfk/tests/tags.yml deleted file mode 100644 index 7dcac99b..00000000 --- a/modules/nf-core/merquryfk/merquryfk/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -merquryfk/merquryfk: - - "modules/nf-core/merquryfk/merquryfk/**" diff --git a/modules/nf-core/minimap2/align/environment.yml b/modules/nf-core/minimap2/align/environment.yml index dc6476b7..17886061 100644 --- a/modules/nf-core/minimap2/align/environment.yml +++ b/modules/nf-core/minimap2/align/environment.yml @@ -1,8 +1,9 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.20 - - bioconda::minimap2=2.28 - - bioconda::samtools=1.20 + - bioconda::minimap2=2.29 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/minimap2/align/main.nf b/modules/nf-core/minimap2/align/main.nf index 4faab880..c00e2473 100644 --- a/modules/nf-core/minimap2/align/main.nf +++ b/modules/nf-core/minimap2/align/main.nf @@ -5,8 +5,8 @@ process MINIMAP2_ALIGN { // Note: the versions here need to match the versions used in the mulled container below and minimap2/index conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-66534bcbb7031a148b13e2ad42583020b9cd25c4:3161f532a5ea6f1dec9be5667c9efc2afdac6104-0' : - 'biocontainers/mulled-v2-66534bcbb7031a148b13e2ad42583020b9cd25c4:3161f532a5ea6f1dec9be5667c9efc2afdac6104-0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/66/66dc96eff11ab80dfd5c044e9b3425f52d818847b9c074794cf0c02bfa781661/data' : + 'community.wave.seqera.io/library/minimap2_samtools:33bb43c18d22e29c' }" input: tuple val(meta), path(reads) @@ -17,13 +17,12 @@ process MINIMAP2_ALIGN { val cigar_bam val bed_bool - output: tuple val(meta), path("*.paf") , optional: true, emit: paf tuple val(meta), path("*.bam") , optional: true, emit: bam tuple val(meta), path("*.bam.${bam_index_extension}"), optional: true, emit: index tuple val(meta), path("*.bed") , optional: true, emit: bed - path "versions.yml" , emit: versions + tuple val("${task.process}"), val("minimap2"), eval("minimap2 --version"), topic: versions, emit: versions_minimap2 when: task.ext.when == null || task.ext.when @@ -34,32 +33,24 @@ process MINIMAP2_ALIGN { def args3 = task.ext.args3 ?: '' def args4 = task.ext.args4 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def bam_index = bam_index_extension ? "${prefix}.bam##idx##${prefix}.bam.${bam_index_extension} --write-index" : "${prefix}.bam" - def bam_output = reference.size() > 2.5e9 && bam_format ? "-a | samtools view -b -T ${reference} - > ${prefix}.bam" : reference.size() < 2.5e9 && bam_format ? "-a | samtools view -@ ${task.cpus} -b -h -o ${prefix}.bam" : bed_bool ? "| paftools.js splice2bed - > ${prefix}.bed " : "-o ${prefix}.paf" + def bam_index = bam_index_extension ? "--write-index -o ${prefix}.bam##idx##${prefix}.bam.${bam_index_extension}" : "-o ${prefix}.bam" + def bam_output = bam_format ? "-a | samtools sort -@ ${task.cpus} ${bam_index} ${args2}" : bed_bool ? "| paftools.js splice2bed - > ${prefix}.bed" : "-o ${prefix}.paf" def cigar_paf = cigar_paf_format && !bam_format ? "-c" : '' def set_cigar_bam = cigar_bam && bam_format ? "-L" : '' def bam_input = "${reads.extension}".matches('sam|bam|cram') def samtools_reset_fastq = bam_input ? "samtools reset --threads ${task.cpus-1} $args3 $reads | samtools fastq --threads ${task.cpus-1} $args4 |" : '' def query = bam_input ? "-" : reads - def target = reference ?: (bam_input ? error("BAM input requires reference") : reads) - + def target = reference ?: (bam_input ? error("Error: minimap2/align BAM input mode requires reference") : reads) """ $samtools_reset_fastq \\ minimap2 \\ - $args \\ - -t $task.cpus \\ - $target \\ - $query \\ - $cigar_paf \\ - $set_cigar_bam \\ - $bam_output - - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - minimap2: \$(minimap2 --version 2>&1) - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS + ${args} \\ + -t ${task.cpus} \\ + ${target} \\ + ${query} \\ + ${cigar_paf} \\ + ${set_cigar_bam} \\ + ${bam_output} """ stub: @@ -67,15 +58,11 @@ process MINIMAP2_ALIGN { def output_file = bam_format ? "${prefix}.bam" : "${prefix}.paf" def bam_index = bam_index_extension ? "touch ${prefix}.bam.${bam_index_extension}" : "" def bam_input = "${reads.extension}".matches('sam|bam|cram') - def target = reference ?: (bam_input ? error("BAM input requires reference") : reads) - + if(bam_input && !reference) { + error("Error: minimap2/align BAM input mode requires reference!") + } """ touch $output_file ${bam_index} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - minimap2: \$(minimap2 --version 2>&1) - END_VERSIONS """ } diff --git a/modules/nf-core/minimap2/align/meta.yml b/modules/nf-core/minimap2/align/meta.yml index a4cfc891..40bb20ad 100644 --- a/modules/nf-core/minimap2/align/meta.yml +++ b/modules/nf-core/minimap2/align/meta.yml @@ -26,6 +26,7 @@ input: description: | List of input FASTA or FASTQ files of size 1 and 2 for single-end and paired-end data, respectively. + ontologies: [] - - meta2: type: map description: | @@ -35,23 +36,24 @@ input: type: file description: | Reference database in FASTA format. - - - bam_format: - type: boolean - description: Specify that output should be in BAM format - - - bam_index_extension: - type: string - description: BAM alignment index extension (e.g. "bai") - - - cigar_paf_format: - type: boolean - description: Specify that output CIGAR should be in PAF format - - - cigar_bam: - type: boolean - description: | - Write CIGAR with >65535 ops at the CG tag. This is recommended when - doing XYZ (https://github.com/lh3/minimap2#working-with-65535-cigar-operations) + ontologies: [] + - bam_format: + type: boolean + description: Specify that output should be in BAM format + - bam_index_extension: + type: string + description: BAM alignment index extension (e.g. "bai") + - cigar_paf_format: + type: boolean + description: Specify that output CIGAR should be in PAF format + - cigar_bam: + type: boolean + description: | + Write CIGAR with >65535 ops at the CG tag. This is recommended when + doing XYZ (https://github.com/lh3/minimap2#working-with-65535-cigar-operations) output: - - paf: - - meta: + paf: + - - meta: type: map description: | Groovy Map containing sample information @@ -60,8 +62,9 @@ output: type: file description: Alignment in PAF format pattern: "*.paf" - - bam: - - meta: + ontologies: [] + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -70,8 +73,9 @@ output: type: file description: Alignment in BAM format pattern: "*.bam" - - index: - - meta: + ontologies: [] + index: + - - meta: type: map description: | Groovy Map containing sample information @@ -80,11 +84,28 @@ output: type: file description: BAM alignment index pattern: "*.bam.*" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_minimap2: + - - ${task.process}: + type: string + description: The process name + - minimap2: + type: string + description: The tool name + - minimap2 --version: + type: eval + description: The tool version +topics: + versions: + - - ${task.process}: + type: string + description: The process name + - minimap2: + type: string + description: The tool name + - minimap2 --version: + type: eval + description: The tool version authors: - "@heuermh" - "@sofstam" diff --git a/modules/nf-core/minimap2/align/minimap2-align.diff b/modules/nf-core/minimap2/align/minimap2-align.diff index c006978e..d3441d3e 100644 --- a/modules/nf-core/minimap2/align/minimap2-align.diff +++ b/modules/nf-core/minimap2/align/minimap2-align.diff @@ -1,52 +1,35 @@ -Changes in module 'nf-core/minimap2/align' +Changes in component 'nf-core/minimap2/align' +'modules/nf-core/minimap2/align/meta.yml' is unchanged +Changes in 'minimap2/align/main.nf': --- modules/nf-core/minimap2/align/main.nf +++ modules/nf-core/minimap2/align/main.nf -@@ -14,10 +14,12 @@ - val bam_format +@@ -15,11 +15,13 @@ + val bam_index_extension val cigar_paf_format val cigar_bam -+ val bed_format ++ val bed_bool output: - tuple val(meta), path("*.paf"), optional: true, emit: paf - tuple val(meta), path("*.bam"), optional: true, emit: bam -+ tuple val(meta), path("*.bed"), optional: true, emit: bed - path "versions.yml" , emit: versions + tuple val(meta), path("*.paf") , optional: true, emit: paf + tuple val(meta), path("*.bam") , optional: true, emit: bam + tuple val(meta), path("*.bam.${bam_index_extension}"), optional: true, emit: index ++ tuple val(meta), path("*.bed") , optional: true, emit: bed + tuple val("${task.process}"), val("minimap2"), eval("minimap2 --version"), topic: versions, emit: versions_minimap2 when: -@@ -26,9 +28,10 @@ - script: - def args = task.ext.args ?: '' +@@ -31,8 +33,8 @@ + def args3 = task.ext.args3 ?: '' + def args4 = task.ext.args4 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" -- def bam_output = bam_format ? "-a | samtools sort | samtools view -@ ${task.cpus} -b -h -o ${prefix}.bam" : "-o ${prefix}.paf" -+ def bam_output = reference.size() > 2.5e9 && bam_format ? "-a | samtools view -b -T ${reference} - > ${prefix}.bam" : reference.size() < 2.5e9 && bam_format ? "-a | samtools view -@ ${task.cpus} -b -h -o ${prefix}.bam" : bed_format ? "| paftools.js splice2bed - > ${prefix}.bed " : "-o ${prefix}.paf" +- def bam_index = bam_index_extension ? "${prefix}.bam##idx##${prefix}.bam.${bam_index_extension} --write-index" : "${prefix}.bam" +- def bam_output = bam_format ? "-a | samtools sort -@ ${task.cpus-1} -o ${bam_index} ${args2}" : "-o ${prefix}.paf" ++ def bam_index = bam_index_extension ? "--write-index -o ${prefix}.bam##idx##${prefix}.bam.${bam_index_extension}" : "-o ${prefix}.bam" ++ def bam_output = bam_format ? "-a | samtools sort -@ ${task.cpus} ${bam_index} ${args2}" : bed_bool ? "| paftools.js splice2bed - > ${prefix}.bed" : "-o ${prefix}.paf" def cigar_paf = cigar_paf_format && !bam_format ? "-c" : '' def set_cigar_bam = cigar_bam && bam_format ? "-L" : '' -+ - """ - minimap2 \\ - $args \\ -@@ -45,4 +48,21 @@ - minimap2: \$(minimap2 --version 2>&1) - END_VERSIONS - """ -+ -+ stub: -+ def prefix = task.ext.prefix ?: "${meta.id}" -+ def bam_output = reference.size() > 2.5e9 && bam_format ? "-a | samtools view -b -T ${reference} - > ${prefix}.bam" : reference.size() < 2.5e9 && bam_format ? "-a | samtools view -@ ${task.cpus} -b -h -o ${prefix}.bam" : "-o ${prefix}.paf" -+ def cigar_paf = cigar_paf_format && !bam_format ? "-c" : '' -+ def set_cigar_bam = cigar_bam && bam_format ? "-L" : '' -+ def extension = bam_format ? "bam" : bed_format ? "bed" : "paf" -+ """ -+ touch ${prefix}.${extension} -+ -+ cat <<-END_VERSIONS > versions.yml -+ "${task.process}": -+ minimap2: \$(minimap2 --version 2>&1) -+ END_VERSIONS -+ """ -+ - } -+ + def bam_input = "${reads.extension}".matches('sam|bam|cram') +'modules/nf-core/minimap2/align/environment.yml' is unchanged +'modules/nf-core/minimap2/align/tests/main.nf.test' is unchanged +'modules/nf-core/minimap2/align/tests/main.nf.test.snap' is unchanged ************************************************************ diff --git a/modules/nf-core/minimap2/align/tests/main.nf.test b/modules/nf-core/minimap2/align/tests/main.nf.test index 4072c171..34597d6f 100644 --- a/modules/nf-core/minimap2/align/tests/main.nf.test +++ b/modules/nf-core/minimap2/align/tests/main.nf.test @@ -36,7 +36,7 @@ nextflow_process { { assert snapshot( bam(process.out.bam[0][1]).getHeader(), bam(process.out.bam[0][1]).getReadsMD5(), - process.out.versions + process.out.findAll { key, val -> key.startsWith("versions_") } ).match() } ) } @@ -71,7 +71,7 @@ nextflow_process { bam(process.out.bam[0][1]).getHeader(), bam(process.out.bam[0][1]).getReadsMD5(), file(process.out.index[0][1]).name, - process.out.versions + process.out.findAll { key, val -> key.startsWith("versions_") } ).match() } ) } @@ -108,7 +108,7 @@ nextflow_process { { assert snapshot( bam(process.out.bam[0][1]).getHeader(), bam(process.out.bam[0][1]).getReadsMD5(), - process.out.versions + process.out.findAll { key, val -> key.startsWith("versions_") } ).match() } ) } @@ -142,7 +142,7 @@ nextflow_process { { assert snapshot( bam(process.out.bam[0][1]).getHeader(), bam(process.out.bam[0][1]).getReadsMD5(), - process.out.versions + process.out.findAll { key, val -> key.startsWith("versions_") } ).match() } ) } @@ -176,7 +176,7 @@ nextflow_process { { assert snapshot( bam(process.out.bam[0][1]).getHeader(), bam(process.out.bam[0][1]).getReadsMD5(), - process.out.versions + process.out.findAll { key, val -> key.startsWith("versions_") } ).match() } ) } @@ -211,7 +211,7 @@ nextflow_process { bam(process.out.bam[0][1]).getHeader(), bam(process.out.bam[0][1]).getReadsMD5(), file(process.out.index[0][1]).name, - process.out.versions + process.out.findAll { key, val -> key.startsWith("versions_") } ).match() } ) } @@ -438,4 +438,4 @@ nextflow_process { } -} \ No newline at end of file +} diff --git a/modules/nf-core/minimap2/align/tests/main.nf.test.snap b/modules/nf-core/minimap2/align/tests/main.nf.test.snap index 12264a85..93e0eb3b 100644 --- a/modules/nf-core/minimap2/align/tests/main.nf.test.snap +++ b/modules/nf-core/minimap2/align/tests/main.nf.test.snap @@ -4,20 +4,26 @@ [ "@HD\tVN:1.6\tSO:coordinate", "@SQ\tSN:MT192765.1\tLN:29829", - "@PG\tID:minimap2\tPN:minimap2\tVN:2.28-r1209\tCL:minimap2 -t 2 -a genome.fasta -", - "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.20\tCL:samtools sort -@ 1 -o test.bam##idx##test.bam.bai --write-index" + "@PG\tID:minimap2\tPN:minimap2\tVN:2.29-r1283\tCL:minimap2 -t 2 -a genome.fasta -", + "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.21\tCL:samtools sort -@ 1 -o test.bam##idx##test.bam.bai --write-index" ], "5d426b9a5f5b2c54f1d7f1e4c238ae94", "test.bam.bai", - [ - "versions.yml:md5,3548eeba9066efbf8d78ea99f8d813fd" - ] + { + "versions_minimap2": [ + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-25T09:03:00.827260362" + "timestamp": "2026-01-22T15:02:10.851485367" }, "sarscov2 - bam, fasta, true, 'bai', false, false - stub": { "content": [ @@ -44,7 +50,11 @@ ] ], "3": [ - "versions.yml:md5,98b8f5f36aa54b82210094f0b0d11938" + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] ], "bam": [ [ @@ -67,16 +77,20 @@ "paf": [ ], - "versions": [ - "versions.yml:md5,98b8f5f36aa54b82210094f0b0d11938" + "versions_minimap2": [ + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-23T11:21:37.92353539" + "timestamp": "2026-01-22T15:02:56.708796666" }, "sarscov2 - fastq, fasta, true, 'bai', false, false - stub": { "content": [ @@ -103,7 +117,11 @@ ] ], "3": [ - "versions.yml:md5,98b8f5f36aa54b82210094f0b0d11938" + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] ], "bam": [ [ @@ -126,16 +144,20 @@ "paf": [ ], - "versions": [ - "versions.yml:md5,98b8f5f36aa54b82210094f0b0d11938" + "versions_minimap2": [ + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-06-03T11:29:44.669021368" + "timestamp": "2026-01-22T15:02:32.614463827" }, "sarscov2 - fastq, fasta, false, [], false, false - stub": { "content": [ @@ -156,7 +178,11 @@ ], "3": [ - "versions.yml:md5,98b8f5f36aa54b82210094f0b0d11938" + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] ], "bam": [ @@ -173,16 +199,20 @@ "test.paf:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,98b8f5f36aa54b82210094f0b0d11938" + "versions_minimap2": [ + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-06-03T11:15:52.738781039" + "timestamp": "2026-01-22T15:02:40.02163098" }, "sarscov2 - fastq, fasta, true, [], false, false - stub": { "content": [ @@ -203,7 +233,11 @@ ], "3": [ - "versions.yml:md5,98b8f5f36aa54b82210094f0b0d11938" + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] ], "bam": [ [ @@ -220,93 +254,121 @@ "paf": [ ], - "versions": [ - "versions.yml:md5,98b8f5f36aa54b82210094f0b0d11938" + "versions_minimap2": [ + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-06-03T11:15:23.033808223" + "timestamp": "2026-01-22T15:02:25.102539679" }, "sarscov2 - [fastq1, fastq2], fasta, true, false, false": { "content": [ [ "@HD\tVN:1.6\tSO:coordinate", "@SQ\tSN:MT192765.1\tLN:29829", - "@PG\tID:minimap2\tPN:minimap2\tVN:2.28-r1209\tCL:minimap2 -t 2 -a genome.fasta test_1.fastq.gz test_2.fastq.gz", - "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.20\tCL:samtools sort -@ 1 -o test.bam" + "@PG\tID:minimap2\tPN:minimap2\tVN:2.29-r1283\tCL:minimap2 -t 2 -a genome.fasta test_1.fastq.gz test_2.fastq.gz", + "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.21\tCL:samtools sort -@ 1 -o test.bam" ], "1bc392244f228bf52cf0b5a8f6a654c9", - [ - "versions.yml:md5,3548eeba9066efbf8d78ea99f8d813fd" - ] + { + "versions_minimap2": [ + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-23T11:18:18.964586894" + "timestamp": "2026-01-22T15:01:46.456636022" }, "sarscov2 - fastq, fasta, true, [], false, false": { "content": [ [ "@HD\tVN:1.6\tSO:coordinate", "@SQ\tSN:MT192765.1\tLN:29829", - "@PG\tID:minimap2\tPN:minimap2\tVN:2.28-r1209\tCL:minimap2 -t 2 -a genome.fasta test_1.fastq.gz", - "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.20\tCL:samtools sort -@ 1 -o test.bam" + "@PG\tID:minimap2\tPN:minimap2\tVN:2.29-r1283\tCL:minimap2 -t 2 -a genome.fasta test_1.fastq.gz", + "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.21\tCL:samtools sort -@ 1 -o test.bam" ], "f194745c0ccfcb2a9c0aee094a08750", - [ - "versions.yml:md5,3548eeba9066efbf8d78ea99f8d813fd" - ] + { + "versions_minimap2": [ + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-23T11:17:48.667488325" + "timestamp": "2026-01-22T15:01:30.525133177" }, "sarscov2 - fastq, fasta, true, 'bai', false, false": { "content": [ [ "@HD\tVN:1.6\tSO:coordinate", "@SQ\tSN:MT192765.1\tLN:29829", - "@PG\tID:minimap2\tPN:minimap2\tVN:2.28-r1209\tCL:minimap2 -t 2 -a genome.fasta test_1.fastq.gz", - "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.20\tCL:samtools sort -@ 1 -o test.bam##idx##test.bam.bai --write-index" + "@PG\tID:minimap2\tPN:minimap2\tVN:2.29-r1283\tCL:minimap2 -t 2 -a genome.fasta test_1.fastq.gz", + "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.21\tCL:samtools sort -@ 1 -o test.bam##idx##test.bam.bai --write-index" ], "f194745c0ccfcb2a9c0aee094a08750", "test.bam.bai", - [ - "versions.yml:md5,3548eeba9066efbf8d78ea99f8d813fd" - ] + { + "versions_minimap2": [ + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-23T11:18:02.517416733" + "timestamp": "2026-01-22T15:01:38.84829029" }, "sarscov2 - bam, fasta, true, [], false, false": { "content": [ [ "@HD\tVN:1.6\tSO:coordinate", "@SQ\tSN:MT192765.1\tLN:29829", - "@PG\tID:minimap2\tPN:minimap2\tVN:2.28-r1209\tCL:minimap2 -t 2 -a genome.fasta -", - "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.20\tCL:samtools sort -@ 1 -o test.bam" + "@PG\tID:minimap2\tPN:minimap2\tVN:2.29-r1283\tCL:minimap2 -t 2 -a genome.fasta -", + "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.21\tCL:samtools sort -@ 1 -o test.bam" ], "5d426b9a5f5b2c54f1d7f1e4c238ae94", - [ - "versions.yml:md5,3548eeba9066efbf8d78ea99f8d813fd" - ] + { + "versions_minimap2": [ + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-25T09:02:49.64829488" + "timestamp": "2026-01-22T15:02:02.351060285" }, "sarscov2 - bam, fasta, true, [], false, false - stub": { "content": [ @@ -327,7 +389,11 @@ ], "3": [ - "versions.yml:md5,98b8f5f36aa54b82210094f0b0d11938" + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] ], "bam": [ [ @@ -344,16 +410,20 @@ "paf": [ ], - "versions": [ - "versions.yml:md5,98b8f5f36aa54b82210094f0b0d11938" + "versions_minimap2": [ + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-23T11:21:22.162291795" + "timestamp": "2026-01-22T15:02:47.579634041" }, "sarscov2 - fastq, [], true, false, false": { "content": [ @@ -459,18 +529,24 @@ "@SQ\tSN:ERR5069949.3258358\tLN:151", "@SQ\tSN:ERR5069949.1476386\tLN:151", "@SQ\tSN:ERR5069949.2415814\tLN:150", - "@PG\tID:minimap2\tPN:minimap2\tVN:2.28-r1209\tCL:minimap2 -t 2 -a test_1.fastq.gz test_1.fastq.gz", - "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.20\tCL:samtools sort -@ 1 -o test.bam" + "@PG\tID:minimap2\tPN:minimap2\tVN:2.29-r1283\tCL:minimap2 -t 2 -a test_1.fastq.gz test_1.fastq.gz", + "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.21\tCL:samtools sort -@ 1 -o test.bam" ], "16c1c651f8ec67383bcdee3c55aed94f", - [ - "versions.yml:md5,3548eeba9066efbf8d78ea99f8d813fd" - ] + { + "versions_minimap2": [ + [ + "MINIMAP2_ALIGN", + "minimap2", + "2.29-r1283" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-23T11:18:34.246998277" + "timestamp": "2026-01-22T15:01:54.090788633" } } \ No newline at end of file diff --git a/modules/nf-core/minimap2/align/tests/tags.yml b/modules/nf-core/minimap2/align/tests/tags.yml deleted file mode 100644 index 39dba374..00000000 --- a/modules/nf-core/minimap2/align/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -minimap2/align: - - "modules/nf-core/minimap2/align/**" diff --git a/modules/nf-core/minimap2/index/environment.yml b/modules/nf-core/minimap2/index/environment.yml index d1c1b471..2f3ba0eb 100644 --- a/modules/nf-core/minimap2/index/environment.yml +++ b/modules/nf-core/minimap2/index/environment.yml @@ -1,5 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::minimap2=2.28 + - bioconda::minimap2=2.29 diff --git a/modules/nf-core/minimap2/index/main.nf b/modules/nf-core/minimap2/index/main.nf index 38320214..dd81eab0 100644 --- a/modules/nf-core/minimap2/index/main.nf +++ b/modules/nf-core/minimap2/index/main.nf @@ -4,15 +4,15 @@ process MINIMAP2_INDEX { // Note: the versions here need to match the versions used in minimap2/align conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/minimap2:2.28--he4a0461_0' : - 'biocontainers/minimap2:2.28--he4a0461_0' }" + 'https://depot.galaxyproject.org/singularity/minimap2:2.29--h577a1d6_0' : + 'biocontainers/minimap2:2.29--h577a1d6_0' }" input: tuple val(meta), path(fasta) output: tuple val(meta), path("*.mmi"), emit: index - path "versions.yml" , emit: versions + tuple val("${task.process}"), val("minimap2"), eval("minimap2 --version"), topic: versions, emit: versions_minimap2 when: task.ext.when == null || task.ext.when @@ -25,20 +25,10 @@ process MINIMAP2_INDEX { -d ${fasta.baseName}.mmi \\ $args \\ $fasta - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - minimap2: \$(minimap2 --version 2>&1) - END_VERSIONS """ stub: """ touch ${fasta.baseName}.mmi - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - minimap2: \$(minimap2 --version 2>&1) - END_VERSIONS """ } diff --git a/modules/nf-core/minimap2/index/meta.yml b/modules/nf-core/minimap2/index/meta.yml index 57c80e29..6985fb0c 100644 --- a/modules/nf-core/minimap2/index/meta.yml +++ b/modules/nf-core/minimap2/index/meta.yml @@ -10,7 +10,8 @@ tools: A versatile pairwise aligner for genomic and spliced nucleotide sequences. homepage: https://github.com/lh3/minimap2 documentation: https://github.com/lh3/minimap2#uguide - licence: ["MIT"] + licence: + - "MIT" identifier: "" input: - - meta: @@ -22,9 +23,10 @@ input: type: file description: | Reference database in FASTA format. + ontologies: [] output: - - index: - - meta: + index: + - - meta: type: map description: | Groovy Map containing sample information @@ -33,11 +35,28 @@ output: type: file description: Minimap2 fasta index. pattern: "*.mmi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_minimap2: + - - ${task.process}: + type: string + description: The name of the process + - minimap2: + type: string + description: The name of the tool + - minimap2 --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 + - minimap2: + type: string + description: The name of the tool + - minimap2 --version: + type: eval + description: The expression to obtain the version of the tool authors: - "@yuukiiwa" - "@drpatelh" diff --git a/modules/nf-core/minimap2/index/tests/main.nf.test b/modules/nf-core/minimap2/index/tests/main.nf.test index 97840ff7..79b7cc55 100644 --- a/modules/nf-core/minimap2/index/tests/main.nf.test +++ b/modules/nf-core/minimap2/index/tests/main.nf.test @@ -29,4 +29,26 @@ nextflow_process { } -} \ No newline at end of file + test("minimap2 index - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assert process.success + assert snapshot(process.out).match() + } + + } + +} diff --git a/modules/nf-core/minimap2/index/tests/main.nf.test.snap b/modules/nf-core/minimap2/index/tests/main.nf.test.snap index 0b098828..a3ec750b 100644 --- a/modules/nf-core/minimap2/index/tests/main.nf.test.snap +++ b/modules/nf-core/minimap2/index/tests/main.nf.test.snap @@ -1,38 +1,46 @@ { - "Should run without failures": { + "minimap2 index": { "content": [ { "0": [ [ { - "id": "test_ref" + "id": "test" }, "genome.mmi:md5,72e450f12dc691e763c697463bdb1571" ] ], "1": [ - "versions.yml:md5,0fced0ee8015e7f50b82566e3db8f7b0" + [ + "MINIMAP2_INDEX", + "minimap2", + "2.29-r1283" + ] ], "index": [ [ { - "id": "test_ref" + "id": "test" }, "genome.mmi:md5,72e450f12dc691e763c697463bdb1571" ] ], - "versions": [ - "versions.yml:md5,0fced0ee8015e7f50b82566e3db8f7b0" + "versions_minimap2": [ + [ + "MINIMAP2_INDEX", + "minimap2", + "2.29-r1283" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-03-18T11:46:30.000058092" + "timestamp": "2026-02-09T16:12:10.625322" }, - "minimap2 index": { + "minimap2 index - stub": { "content": [ { "0": [ @@ -40,29 +48,37 @@ { "id": "test" }, - "genome.mmi:md5,72e450f12dc691e763c697463bdb1571" + "genome.mmi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ - "versions.yml:md5,2f8340380c6741e9261a284262a90bde" + [ + "MINIMAP2_INDEX", + "minimap2", + "2.29-r1283" + ] ], "index": [ [ { "id": "test" }, - "genome.mmi:md5,72e450f12dc691e763c697463bdb1571" + "genome.mmi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,2f8340380c6741e9261a284262a90bde" + "versions_minimap2": [ + [ + "MINIMAP2_INDEX", + "minimap2", + "2.29-r1283" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-04-05T10:58:29.828187662" + "timestamp": "2026-02-09T16:12:15.244242" } } \ No newline at end of file diff --git a/modules/nf-core/minimap2/index/tests/tags.yml b/modules/nf-core/minimap2/index/tests/tags.yml deleted file mode 100644 index e5ef8e19..00000000 --- a/modules/nf-core/minimap2/index/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -minimap2/index: - - modules/nf-core/minimap2/index/** diff --git a/modules/nf-core/miniprot/align/environment.yml b/modules/nf-core/miniprot/align/environment.yml index 7e258a04..581cccad 100644 --- a/modules/nf-core/miniprot/align/environment.yml +++ b/modules/nf-core/miniprot/align/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/miniprot/align/meta.yml b/modules/nf-core/miniprot/align/meta.yml index aadd6fdf..9e46e283 100644 --- a/modules/nf-core/miniprot/align/meta.yml +++ b/modules/nf-core/miniprot/align/meta.yml @@ -24,6 +24,7 @@ input: - pep: type: file description: a fasta file contains one or multiple protein sequences + ontologies: [] - - meta2: type: map description: | @@ -31,9 +32,10 @@ input: - ref: type: file description: Reference database in FASTA format or miniprot index format. + ontologies: [] output: - - paf: - - meta: + paf: + - - meta: type: map description: | Groovy Map containing sample information @@ -42,8 +44,9 @@ output: type: file description: Alignment in PAF format pattern: "*.paf" - - gff: - - meta: + ontologies: [] + gff: + - - meta: type: map description: | Groovy Map containing sample information @@ -52,11 +55,14 @@ output: type: file description: Alignment in gff format pattern: "*.gff" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@yumisims" - "@muffato" diff --git a/modules/nf-core/miniprot/index/environment.yml b/modules/nf-core/miniprot/index/environment.yml index 7e258a04..581cccad 100644 --- a/modules/nf-core/miniprot/index/environment.yml +++ b/modules/nf-core/miniprot/index/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/miniprot/index/meta.yml b/modules/nf-core/miniprot/index/meta.yml index bd076ada..6afe3c5a 100644 --- a/modules/nf-core/miniprot/index/meta.yml +++ b/modules/nf-core/miniprot/index/meta.yml @@ -23,9 +23,10 @@ input: type: file description: | Reference database in FASTA format. + ontologies: [] output: - - index: - - meta: + index: + - - meta: type: map description: | Groovy Map containing sample information @@ -34,11 +35,14 @@ output: type: file description: miniprot fasta index. pattern: "*.mpi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@yumisims" - "@muffato" diff --git a/modules/nf-core/miniprot/index/tests/main.nf.test b/modules/nf-core/miniprot/index/tests/main.nf.test index b6092df9..ece868f4 100644 --- a/modules/nf-core/miniprot/index/tests/main.nf.test +++ b/modules/nf-core/miniprot/index/tests/main.nf.test @@ -11,7 +11,7 @@ nextflow_process { tag "miniprot/index" test("test-miniprot-index") { - + when { process { """ @@ -28,7 +28,7 @@ nextflow_process { ) } } - + test("test-miniprot-index-stub") { options '-stub' when { @@ -47,5 +47,5 @@ nextflow_process { ) } } - + } diff --git a/modules/nf-core/mummer/environment.yml b/modules/nf-core/mummer/environment.yml index 643eff0f..6ae06e6d 100644 --- a/modules/nf-core/mummer/environment.yml +++ b/modules/nf-core/mummer/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/mummer/meta.yml b/modules/nf-core/mummer/meta.yml index 3a4be42f..1c72ec29 100644 --- a/modules/nf-core/mummer/meta.yml +++ b/modules/nf-core/mummer/meta.yml @@ -23,27 +23,32 @@ input: type: file description: FASTA file of the reference sequence pattern: "*.{fasta,fasta.gz,fa,fa.gz,fna,fna.gz}" + ontologies: [] - query: type: file description: FASTA file of the query sequence pattern: "*.{fasta,fasta.gz,fa,fa.gz,fna,fna.gz}" + ontologies: [] output: - - coords: - - meta: + coords: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.coords": type: file - description: File containing coordinates of matches between reference and query - sequence + description: File containing coordinates of matches between reference and + query sequence pattern: "*.coords" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@mjcipriano" - "@sateeshperi" diff --git a/modules/nf-core/paftools/sam2paf/environment.yml b/modules/nf-core/paftools/sam2paf/environment.yml index 988733dd..ca0563e9 100644 --- a/modules/nf-core/paftools/sam2paf/environment.yml +++ b/modules/nf-core/paftools/sam2paf/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/paftools/sam2paf/main.nf b/modules/nf-core/paftools/sam2paf/main.nf index 914dd9ba..bd8d7b8f 100644 --- a/modules/nf-core/paftools/sam2paf/main.nf +++ b/modules/nf-core/paftools/sam2paf/main.nf @@ -19,7 +19,6 @@ process PAFTOOLS_SAM2PAF { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: "" def prefix = task.ext.prefix ?: "${meta.id}" """ diff --git a/modules/nf-core/paftools/sam2paf/meta.yml b/modules/nf-core/paftools/sam2paf/meta.yml index e5829740..8ec1284a 100644 --- a/modules/nf-core/paftools/sam2paf/meta.yml +++ b/modules/nf-core/paftools/sam2paf/meta.yml @@ -21,18 +21,21 @@ input: - bam: type: file description: An input bam file to be converted into paf. + ontologies: [] output: - - paf: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + paf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@DLBPointon" maintainers: diff --git a/modules/nf-core/pretextmap/environment.yml b/modules/nf-core/pretextmap/environment.yml index bfbbee2b..37894770 100644 --- a/modules/nf-core/pretextmap/environment.yml +++ b/modules/nf-core/pretextmap/environment.yml @@ -1,6 +1,9 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::pretextmap=0.1.9 - - bioconda::samtools=1.17 + - bioconda::htslib=1.23 + - bioconda::pretextmap=0.2.3 + - bioconda::samtools=1.23 diff --git a/modules/nf-core/pretextmap/main.nf b/modules/nf-core/pretextmap/main.nf index 81725870..96eaed9d 100644 --- a/modules/nf-core/pretextmap/main.nf +++ b/modules/nf-core/pretextmap/main.nf @@ -1,10 +1,12 @@ process PRETEXTMAP { tag "$meta.id" - label 'process_single' + label 'process_low' conda "${moduleDir}/environment.yml" - container "quay.io/sanger-tol/pretext:0.0.9-yy5-c2" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/e9/e9e6a49d9810ef0101a4a003afeda9b32c1d0d06b196ec13a5c9f5919bd1869e/data': + 'community.wave.seqera.io/library/htslib_pretextmap_samtools:6d973e19ac7b0a1f' }" input: tuple val(meta), path(input) @@ -12,49 +14,28 @@ process PRETEXTMAP { output: tuple val(meta), path("*.pretext") , emit: pretext - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('PretextMap'), eval('PretextMap | sed "/Version/!d; s/.*Version //"'), emit: versions_pretextmap, topic: versions + tuple val("${task.process}"), val('samtools'), eval('samtools --version | sed "1!d; s/samtools //"'), emit: versions_samtools, topic: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def reference = fasta ? "--reference ${fasta}" : "" - + def args = task.ext.args ?: '' // PretextMap args + def args2 = task.ext.args2 ?: '' // Samtools view args + def prefix = task.ext.prefix ?: "${meta.id}" + def reference = fasta ? "--reference ${fasta}" : "" + def pairs_input = input.toString().endsWith(".pairs.gz") + def input_command = pairs_input ? "zcat ${input}" : "samtools view $args2 $reference -h ${input}" """ - if [[ $input == *.pairs.gz ]]; then - zcat $input | PretextMap \\ - $args \\ - -o ${prefix}.pretext - else - samtools \\ - view \\ - $reference \\ - -h \\ - $input | PretextMap \\ - $args \\ - -o ${prefix}.pretext - fi - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - PretextGraph: \$(PretextGraph | grep "Version" | sed 's/Pretext* Version //;') - PretextMap: \$(PretextMap | grep "Version" | sed 's/PretextMap Version//;') - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//' ) - END_VERSIONS + ${input_command} | PretextMap \\ + $args \\ + -o ${prefix}.pretext """ stub: def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.pretext - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - PretextGraph: \$(PretextGraph | grep "Version" | sed 's/Pretext* Version //;') - PretextMap: \$(PretextMap | grep "Version" | sed 's/PretextMap Version//;') - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/pretextmap/meta.yml b/modules/nf-core/pretextmap/meta.yml index d79295cd..a1dbc97f 100644 --- a/modules/nf-core/pretextmap/meta.yml +++ b/modules/nf-core/pretextmap/meta.yml @@ -22,6 +22,7 @@ input: type: file description: BAM/CRAM/SAM file or pairs formatted reads file pattern: "*.{bam,cram,sam,pairs.gz}" + ontologies: [] - - meta2: type: map description: | @@ -31,13 +32,15 @@ input: type: file description: Reference sequence file pattern: "*.{fasta,fna,fa}" + ontologies: [] - fai: type: file description: Reference sequence index file pattern: "*.{fai}" + ontologies: [] output: - - pretext: - - meta: + pretext: + - - meta: type: map description: | Groovy Map containing sample information @@ -46,11 +49,47 @@ output: type: file description: pretext map pattern: "*.pretext" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_pretextmap: + - - ${task.process}: + type: string + description: Name of the process + - PretextMap: + type: string + description: Name of the tool + - PretextMap | sed "/Version/!d; s/.*Version //": + type: eval + description: The expression to obtain the version of the tool + versions_samtools: + - - ${task.process}: + type: string + description: Name of the process + - samtools: + type: string + description: Name of the tool + - samtools --version | sed "1!d; s/samtools //": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: Name of the process + - PretextMap: + type: string + description: Name of the tool + - PretextMap | sed "/Version/!d; s/.*Version //": + type: eval + description: The expression to obtain the version of the tool + - - ${task.process}: + type: string + description: Name of the process + - samtools: + type: string + description: Name of the tool + - samtools --version | sed "1!d; s/samtools //": + type: eval + description: The expression to obtain the version of the tool authors: - "@marrip" - "@getrudeln" diff --git a/modules/nf-core/pretextmap/pretextmap.diff b/modules/nf-core/pretextmap/pretextmap.diff deleted file mode 100644 index 58b33714..00000000 --- a/modules/nf-core/pretextmap/pretextmap.diff +++ /dev/null @@ -1,42 +0,0 @@ -Changes in component 'nf-core/pretextmap' -'modules/nf-core/pretextmap/meta.yml' is unchanged -Changes in 'pretextmap/main.nf': ---- modules/nf-core/pretextmap/main.nf -+++ modules/nf-core/pretextmap/main.nf -@@ -4,9 +4,7 @@ - label 'process_single' - - conda "${moduleDir}/environment.yml" -- container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/mulled-v2-f3591ce8609c7b3b33e5715333200aa5c163aa61%3A44321ab4d64f0b6d0c93abbd1406369d1b3da684-0': -- 'biocontainers/mulled-v2-f3591ce8609c7b3b33e5715333200aa5c163aa61:44321ab4d64f0b6d0c93abbd1406369d1b3da684-0' }" -+ container "quay.io/sanger-tol/pretext:0.0.9-yy5-c2" - - input: - tuple val(meta), path(input) -@@ -41,7 +39,8 @@ - - cat <<-END_VERSIONS > versions.yml - "${task.process}": -- pretextmap: \$(PretextMap | grep "Version" | sed 's/PretextMap Version //g') -+ PretextGraph: \$(PretextGraph | grep "Version" | sed 's/Pretext* Version //;') -+ PretextMap: \$(PretextMap | grep "Version" | sed 's/PretextMap Version//;') - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//' ) - END_VERSIONS - """ -@@ -53,7 +52,8 @@ - - cat <<-END_VERSIONS > versions.yml - "${task.process}": -- pretextmap: \$(PretextMap | grep "Version" | sed 's/PretextMap Version //g') -+ PretextGraph: \$(PretextGraph | grep "Version" | sed 's/Pretext* Version //;') -+ PretextMap: \$(PretextMap | grep "Version" | sed 's/PretextMap Version//;') - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ - -'modules/nf-core/pretextmap/environment.yml' is unchanged -'modules/nf-core/pretextmap/tests/main.nf.test' is unchanged -'modules/nf-core/pretextmap/tests/tags.yml' is unchanged -'modules/nf-core/pretextmap/tests/main.nf.test.snap' is unchanged -************************************************************ diff --git a/modules/nf-core/pretextmap/tests/main.nf.test.snap b/modules/nf-core/pretextmap/tests/main.nf.test.snap index 48697af8..5b78b8cf 100644 --- a/modules/nf-core/pretextmap/tests/main.nf.test.snap +++ b/modules/nf-core/pretextmap/tests/main.nf.test.snap @@ -8,11 +8,22 @@ "id": "test", "single_end": false }, - "test.pretext:md5,ae0f18b472e39de970fdc1aebc0f3f8d" + "test.pretext:md5,36105209541b09098a2d070cce5866a9" ] ], "1": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + [ + "PRETEXTMAP", + "PretextMap", + "0.2.3" + ] + ], + "2": [ + [ + "PRETEXTMAP", + "samtools", + "1.23" + ] ], "pretext": [ [ @@ -20,15 +31,30 @@ "id": "test", "single_end": false }, - "test.pretext:md5,ae0f18b472e39de970fdc1aebc0f3f8d" + "test.pretext:md5,36105209541b09098a2d070cce5866a9" ] ], - "versions": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions_pretextmap": [ + [ + "PRETEXTMAP", + "PretextMap", + "0.2.3" + ] + ], + "versions_samtools": [ + [ + "PRETEXTMAP", + "samtools", + "1.23" + ] ] } ], - "timestamp": "2024-03-21T10:53:43.322902" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2026-01-26T08:48:03.239812" }, "homo_cram_map_stub": { "content": [ @@ -43,7 +69,18 @@ ] ], "1": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + [ + "PRETEXTMAP", + "PretextMap", + "0.2.3" + ] + ], + "2": [ + [ + "PRETEXTMAP", + "samtools", + "1.23" + ] ], "pretext": [ [ @@ -54,12 +91,27 @@ "test.pretext:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions_pretextmap": [ + [ + "PRETEXTMAP", + "PretextMap", + "0.2.3" + ] + ], + "versions_samtools": [ + [ + "PRETEXTMAP", + "samtools", + "1.23" + ] ] } ], - "timestamp": "2024-03-21T11:07:44.32508" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2026-01-26T08:56:52.454859" }, "homo_cram_map_nofai": { "content": [ @@ -70,11 +122,22 @@ "id": "test", "single_end": false }, - "test.pretext:md5,ae0f18b472e39de970fdc1aebc0f3f8d" + "test.pretext:md5,36105209541b09098a2d070cce5866a9" ] ], "1": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + [ + "PRETEXTMAP", + "PretextMap", + "0.2.3" + ] + ], + "2": [ + [ + "PRETEXTMAP", + "samtools", + "1.23" + ] ], "pretext": [ [ @@ -82,15 +145,30 @@ "id": "test", "single_end": false }, - "test.pretext:md5,ae0f18b472e39de970fdc1aebc0f3f8d" + "test.pretext:md5,36105209541b09098a2d070cce5866a9" ] ], - "versions": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions_pretextmap": [ + [ + "PRETEXTMAP", + "PretextMap", + "0.2.3" + ] + ], + "versions_samtools": [ + [ + "PRETEXTMAP", + "samtools", + "1.23" + ] ] } ], - "timestamp": "2024-03-21T10:58:16.804287" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2026-01-26T08:50:51.096526" }, "mapped_pairs_map": { "content": [ @@ -101,11 +179,22 @@ "id": "test", "single_end": false }, - "test.pretext:md5,b47be7fd285a2de68643f73f85ba84f1" + "test.pretext:md5,4def3f73634f9866aa911ade21ffe75e" ] ], "1": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + [ + "PRETEXTMAP", + "PretextMap", + "0.2.3" + ] + ], + "2": [ + [ + "PRETEXTMAP", + "samtools", + "1.23" + ] ], "pretext": [ [ @@ -113,15 +202,30 @@ "id": "test", "single_end": false }, - "test.pretext:md5,b47be7fd285a2de68643f73f85ba84f1" + "test.pretext:md5,4def3f73634f9866aa911ade21ffe75e" + ] + ], + "versions_pretextmap": [ + [ + "PRETEXTMAP", + "PretextMap", + "0.2.3" ] ], - "versions": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions_samtools": [ + [ + "PRETEXTMAP", + "samtools", + "1.23" + ] ] } ], - "timestamp": "2024-03-21T11:07:32.047007" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2026-01-26T08:56:43.224672" }, "homo_bam_map": { "content": [ @@ -132,11 +236,22 @@ "id": "test", "single_end": false }, - "test.pretext:md5,ae0f18b472e39de970fdc1aebc0f3f8d" + "test.pretext:md5,36105209541b09098a2d070cce5866a9" ] ], "1": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + [ + "PRETEXTMAP", + "PretextMap", + "0.2.3" + ] + ], + "2": [ + [ + "PRETEXTMAP", + "samtools", + "1.23" + ] ], "pretext": [ [ @@ -144,14 +259,29 @@ "id": "test", "single_end": false }, - "test.pretext:md5,ae0f18b472e39de970fdc1aebc0f3f8d" + "test.pretext:md5,36105209541b09098a2d070cce5866a9" + ] + ], + "versions_pretextmap": [ + [ + "PRETEXTMAP", + "PretextMap", + "0.2.3" ] ], - "versions": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions_samtools": [ + [ + "PRETEXTMAP", + "samtools", + "1.23" + ] ] } ], - "timestamp": "2024-03-21T11:02:50.120033" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2026-01-26T08:53:42.104066" } } \ No newline at end of file diff --git a/modules/nf-core/pretextmap/tests/tags.yml b/modules/nf-core/pretextmap/tests/tags.yml deleted file mode 100644 index 70f7eefc..00000000 --- a/modules/nf-core/pretextmap/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -pretextmap: - - "modules/nf-core/pretextmap/**" diff --git a/modules/nf-core/pretextsnapshot/environment.yml b/modules/nf-core/pretextsnapshot/environment.yml index ed721522..da627482 100644 --- a/modules/nf-core/pretextsnapshot/environment.yml +++ b/modules/nf-core/pretextsnapshot/environment.yml @@ -1,5 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::pretextsnapshot=0.0.4 + - bioconda::pretextsnapshot=0.0.5 diff --git a/modules/nf-core/pretextsnapshot/main.nf b/modules/nf-core/pretextsnapshot/main.nf index 5524785d..5fd76437 100644 --- a/modules/nf-core/pretextsnapshot/main.nf +++ b/modules/nf-core/pretextsnapshot/main.nf @@ -1,48 +1,37 @@ process PRETEXTSNAPSHOT { - tag "$meta.id" + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/pretextsnapshot:0.0.4--h7d875b9_0': - 'biocontainers/pretextsnapshot:0.0.4--h7d875b9_0' }" + 'https://depot.galaxyproject.org/singularity/pretextsnapshot:0.0.5--h9948957_0': + 'biocontainers/pretextsnapshot:0.0.5--h9948957_0' }" input: tuple val(meta), path(pretext_map) output: tuple val(meta), path('*.{jpeg,png,bmp}'), emit: image - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('PretextSnapshot'), eval("PretextSnapshot --version | sed 's/^.*PretextSnapshot Version //g'"), emit: versions_pretextsnapshot, topic: versions when: task.ext.when == null || task.ext.when script: - def VERSION = "0.0.4" - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}." + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}_" """ PretextSnapshot \\ $args \\ - --memory $task.memory \\ --map $pretext_map \\ --prefix $prefix \\ --folder . - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - pretextsnapshot: $VERSION - END_VERSIONS """ + stub: - def prefix = task.ext.prefix ?: "${meta.id}" + def prefix = task.ext.prefix ?: "${meta.id}_" """ - touch ${prefix}.png - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - pretextsnapshot: $VERSION - END_VERSIONS + touch ${prefix}scaffold_{1,2,3,4}.png """ } diff --git a/modules/nf-core/pretextsnapshot/meta.yml b/modules/nf-core/pretextsnapshot/meta.yml index 434da68e..ccf2a6db 100644 --- a/modules/nf-core/pretextsnapshot/meta.yml +++ b/modules/nf-core/pretextsnapshot/meta.yml @@ -25,9 +25,10 @@ input: type: file description: pretext hic map pattern: "*.pretext" + ontologies: [] output: - - image: - - meta: + image: + - - meta: type: map description: | Groovy Map containing sample information @@ -35,13 +36,33 @@ output: - "*.{jpeg,png,bmp}": type: file description: image of a hic contact map - pattern: "*.{png,jpg,bmp}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + pattern: "*.{jpeg,png,bmp}" + ontologies: [] + versions_pretextsnapshot: + - - ${task.process}: + type: string + description: Name of the process + - PretextSnapshot: + type: string + description: Name of the tool + - PretextSnapshot --version | sed 's/^.*PretextSnapshot Version //g': + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - PretextSnapshot: + type: string + description: The name of the tool + - PretextSnapshot --version | sed 's/^.*PretextSnapshot Version //g': + type: eval + description: The expression to obtain the version of the tool + authors: - "@epaule" maintainers: - "@epaule" + - "@DLBPointon" diff --git a/modules/nf-core/pretextsnapshot/pretextsnapshot.diff b/modules/nf-core/pretextsnapshot/pretextsnapshot.diff deleted file mode 100644 index 4759c3ae..00000000 --- a/modules/nf-core/pretextsnapshot/pretextsnapshot.diff +++ /dev/null @@ -1,43 +0,0 @@ -Changes in module 'nf-core/pretextsnapshot' -'modules/nf-core/pretextsnapshot/meta.yml' is unchanged -Changes in 'pretextsnapshot/main.nf': ---- modules/nf-core/pretextsnapshot/main.nf -+++ modules/nf-core/pretextsnapshot/main.nf -@@ -18,18 +18,31 @@ - task.ext.when == null || task.ext.when - - script: -- def args = task.ext.args ?: '' -- def prefix = task.ext.prefix ?: "${meta.id}." -+ def VERSION = "0.0.4" -+ def args = task.ext.args ?: '' -+ def prefix = task.ext.prefix ?: "${meta.id}." - """ - PretextSnapshot \\ - $args \\ -+ --memory $task.memory \\ - --map $pretext_map \\ - --prefix $prefix \\ - --folder . - - cat <<-END_VERSIONS > versions.yml - "${task.process}": -- pretextsnapshot: \$(echo \$(PretextSnapshot --version 2>&1) | sed 's/^.*PretextSnapshot Version //' ) -+ pretextsnapshot: $VERSION -+ END_VERSIONS -+ """ -+ -+ stub: -+ def prefix = task.ext.prefix ?: "${meta.id}" -+ """ -+ touch ${prefix}.png -+ -+ cat <<-END_VERSIONS > versions.yml -+ "${task.process}": -+ pretextsnapshot: $VERSION - END_VERSIONS - """ - } - -'modules/nf-core/pretextsnapshot/environment.yml' is unchanged -************************************************************ diff --git a/modules/nf-core/pretextsnapshot/tests/main.nf.test b/modules/nf-core/pretextsnapshot/tests/main.nf.test new file mode 100644 index 00000000..5cc34c48 --- /dev/null +++ b/modules/nf-core/pretextsnapshot/tests/main.nf.test @@ -0,0 +1,83 @@ +nextflow_process { + + name "Test Process PRETEXTSNAPSHOT" + config "./nextflow.config" + script "../main.nf" + process "PRETEXTSNAPSHOT" + + tag "modules" + tag "modules_nfcore" + tag "pretextsnapshot" + + test("all") { + + when { + params { + module_args = '--sequences "=all" -c 26 -r 2160' + } + process { + """ + input[0] = [ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/eukaryotes/galaxea_fascicularis/hic/jaGalFasc40_2.pretext', checkIfExists:true) + ] + """ + } + } + then { + assert process.success + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + test("full") { + + when { + params { + module_args = '--sequences "=full" -c 26 -r 2160' + } + process { + """ + input[0] = [ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/eukaryotes/galaxea_fascicularis/hic/jaGalFasc40_2.pretext', checkIfExists:true) + ] + """ + } + } + then { + assert process.success + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("all - stub") { + options '-stub' + when { + params { + module_args = '--sequences "=all" -c 26 -r 2160' + } + process { + """ + input[0] = [ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/eukaryotes/galaxea_fascicularis/hic/jaGalFasc40_2.pretext', checkIfExists:true) + ] + """ + } + } + then { + assert process.success + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/pretextsnapshot/tests/main.nf.test.snap b/modules/nf-core/pretextsnapshot/tests/main.nf.test.snap new file mode 100644 index 00000000..38a15a0e --- /dev/null +++ b/modules/nf-core/pretextsnapshot/tests/main.nf.test.snap @@ -0,0 +1,179 @@ +{ + "all": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "test_scaffold_1.png:md5,810a786c1b15377449c5a6d5f5f8945c", + "test_scaffold_10.png:md5,85ff20eaee846c9376e72b643f5ed316", + "test_scaffold_11.png:md5,f8de3a48efcefd5205a2780f80f57521", + "test_scaffold_12.png:md5,0985ed277928c3c000a94c3dceffbc1c", + "test_scaffold_13.png:md5,13b826f23702ecf1531885462ad45f06", + "test_scaffold_14.png:md5,18825f42c5108d67aefd6b6f253e650c", + "test_scaffold_15.png:md5,9823a925efddc92e33105dac58c065a4", + "test_scaffold_16.png:md5,434224e11e7b9ee977cf64c44d6e7218", + "test_scaffold_17.png:md5,56c9c0d67c4d2471cc64f04b5de042e7", + "test_scaffold_18.png:md5,f7df2ee2ec94ce0b1361c26afb29f865", + "test_scaffold_19.png:md5,5ed093975dfe4e1fce4643a2243f87ad", + "test_scaffold_2.png:md5,3bb12d368d94b818bf1b0e939085c717", + "test_scaffold_20.png:md5,75f03c1b750094f338d7a7406f18432b", + "test_scaffold_21.png:md5,8c9253a26331f73b22ad7eb64b0d2e28", + "test_scaffold_3.png:md5,21128ec255fd2a50bed33090a1c68ade", + "test_scaffold_4.png:md5,5aeacb00ea8606d66bb512e2ecdcd7d4", + "test_scaffold_5.png:md5,81fd30c7f7f303903c78a0d8e624ef49", + "test_scaffold_6.png:md5,a2a48e34c8971beb27570dc30c4931ea", + "test_scaffold_7.png:md5,9df0c2b95cfd1b869ba3bb16b8f184a4", + "test_scaffold_8.png:md5,63f1c172f4d433f195d9c49da3adb0a1", + "test_scaffold_9.png:md5,877a76b7a8492b542a1254022dcb19c0" + ] + ] + ], + "1": [ + [ + "PRETEXTSNAPSHOT", + "PretextSnapshot", + "0.0.5" + ] + ], + "image": [ + [ + { + "id": "test" + }, + [ + "test_scaffold_1.png:md5,810a786c1b15377449c5a6d5f5f8945c", + "test_scaffold_10.png:md5,85ff20eaee846c9376e72b643f5ed316", + "test_scaffold_11.png:md5,f8de3a48efcefd5205a2780f80f57521", + "test_scaffold_12.png:md5,0985ed277928c3c000a94c3dceffbc1c", + "test_scaffold_13.png:md5,13b826f23702ecf1531885462ad45f06", + "test_scaffold_14.png:md5,18825f42c5108d67aefd6b6f253e650c", + "test_scaffold_15.png:md5,9823a925efddc92e33105dac58c065a4", + "test_scaffold_16.png:md5,434224e11e7b9ee977cf64c44d6e7218", + "test_scaffold_17.png:md5,56c9c0d67c4d2471cc64f04b5de042e7", + "test_scaffold_18.png:md5,f7df2ee2ec94ce0b1361c26afb29f865", + "test_scaffold_19.png:md5,5ed093975dfe4e1fce4643a2243f87ad", + "test_scaffold_2.png:md5,3bb12d368d94b818bf1b0e939085c717", + "test_scaffold_20.png:md5,75f03c1b750094f338d7a7406f18432b", + "test_scaffold_21.png:md5,8c9253a26331f73b22ad7eb64b0d2e28", + "test_scaffold_3.png:md5,21128ec255fd2a50bed33090a1c68ade", + "test_scaffold_4.png:md5,5aeacb00ea8606d66bb512e2ecdcd7d4", + "test_scaffold_5.png:md5,81fd30c7f7f303903c78a0d8e624ef49", + "test_scaffold_6.png:md5,a2a48e34c8971beb27570dc30c4931ea", + "test_scaffold_7.png:md5,9df0c2b95cfd1b869ba3bb16b8f184a4", + "test_scaffold_8.png:md5,63f1c172f4d433f195d9c49da3adb0a1", + "test_scaffold_9.png:md5,877a76b7a8492b542a1254022dcb19c0" + ] + ] + ], + "versions_pretextsnapshot": [ + [ + "PRETEXTSNAPSHOT", + "PretextSnapshot", + "0.0.5" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-02-10T12:27:39.682701525" + }, + "all - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "test_scaffold_1.png:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_scaffold_2.png:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_scaffold_3.png:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_scaffold_4.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + [ + "PRETEXTSNAPSHOT", + "PretextSnapshot", + "0.0.5" + ] + ], + "image": [ + [ + { + "id": "test" + }, + [ + "test_scaffold_1.png:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_scaffold_2.png:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_scaffold_3.png:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_scaffold_4.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions_pretextsnapshot": [ + [ + "PRETEXTSNAPSHOT", + "PretextSnapshot", + "0.0.5" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-02-10T12:28:04.580609402" + }, + "full": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_FullMap.png:md5,f4f9d0a79468a0d3ed7f5e0ded46d72b" + ] + ], + "1": [ + [ + "PRETEXTSNAPSHOT", + "PretextSnapshot", + "0.0.5" + ] + ], + "image": [ + [ + { + "id": "test" + }, + "test_FullMap.png:md5,f4f9d0a79468a0d3ed7f5e0ded46d72b" + ] + ], + "versions_pretextsnapshot": [ + [ + "PRETEXTSNAPSHOT", + "PretextSnapshot", + "0.0.5" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-02-10T12:27:55.065273909" + } +} \ No newline at end of file diff --git a/modules/nf-core/pretextsnapshot/tests/nextflow.config b/modules/nf-core/pretextsnapshot/tests/nextflow.config new file mode 100644 index 00000000..0587c4aa --- /dev/null +++ b/modules/nf-core/pretextsnapshot/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: "PRETEXTSNAPSHOT" { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/samtools/faidx/environment.yml b/modules/nf-core/samtools/faidx/environment.yml index 62054fc9..89e12a64 100644 --- a/modules/nf-core/samtools/faidx/environment.yml +++ b/modules/nf-core/samtools/faidx/environment.yml @@ -4,5 +4,7 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/faidx/main.nf b/modules/nf-core/samtools/faidx/main.nf index 28c0a81c..97bfb578 100644 --- a/modules/nf-core/samtools/faidx/main.nf +++ b/modules/nf-core/samtools/faidx/main.nf @@ -4,47 +4,46 @@ process SAMTOOLS_FAIDX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: - tuple val(meta), path(fasta) - tuple val(meta2), path(fai) + tuple val(meta), path(fasta), path(fai) + val get_sizes output: - tuple val(meta), path ("*.{fa,fasta}") , emit: fa , optional: true + tuple val(meta), path ("*.{fa,fasta}") , emit: fa, optional: true + tuple val(meta), path ("*.sizes") , emit: sizes, optional: true tuple val(meta), path ("*.fai") , emit: fai, optional: true tuple val(meta), path ("*.gzi") , emit: gzi, optional: true - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //'"), topic: versions, emit: versions_samtools when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' + def get_sizes_command = get_sizes ? "cut -f 1,2 ${fasta}.fai > ${fasta}.sizes" : '' """ samtools \\ faidx \\ $fasta \\ $args - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS + ${get_sizes_command} """ stub: def match = (task.ext.args =~ /-o(?:utput)?\s(.*)\s?/).findAll() def fastacmd = match[0] ? "touch ${match[0][1]}" : '' + def get_sizes_command = get_sizes ? "touch ${fasta}.sizes" : '' """ ${fastacmd} touch ${fasta}.fai + if [[ "${fasta.extension}" == "gz" ]]; then + touch ${fasta}.gzi + fi - cat <<-END_VERSIONS > versions.yml - - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS + ${get_sizes_command} """ } diff --git a/modules/nf-core/samtools/faidx/meta.yml b/modules/nf-core/samtools/faidx/meta.yml index 6721b2cb..80aae1da 100644 --- a/modules/nf-core/samtools/faidx/meta.yml +++ b/modules/nf-core/samtools/faidx/meta.yml @@ -1,9 +1,11 @@ name: samtools_faidx -description: Index FASTA file +description: Index FASTA file, and optionally generate a file of chromosome + sizes keywords: - index - fasta - faidx + - chromosome tools: - samtools: description: | @@ -13,7 +15,8 @@ tools: homepage: http://www.htslib.org/ documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 - licence: ["MIT"] + licence: + - "MIT" identifier: biotools:samtools input: - - meta: @@ -25,18 +28,18 @@ input: type: file description: FASTA file pattern: "*.{fa,fasta}" - - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test' ] + ontologies: [] - fai: type: file description: FASTA index file pattern: "*.{fai}" + ontologies: [] + - get_sizes: + type: boolean + description: use cut to get the sizes of the index (true) or not (false) output: - - fa: - - meta: + fa: + - - meta: type: map description: | Groovy Map containing sample information @@ -45,8 +48,20 @@ output: type: file description: FASTA file pattern: "*.{fa}" - - fai: - - meta: + ontologies: [] + sizes: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.sizes": + type: file + description: File containing chromosome lengths + pattern: "*.{sizes}" + ontologies: [] + fai: + - - meta: type: map description: | Groovy Map containing sample information @@ -55,8 +70,9 @@ output: type: file description: FASTA index file pattern: "*.{fai}" - - gzi: - - meta: + ontologies: [] + gzi: + - - meta: type: map description: | Groovy Map containing sample information @@ -65,16 +81,32 @@ output: type: file description: Optional gzip index file for compressed inputs pattern: "*.gzi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_samtools: + - - ${task.process}: + type: string + description: The process the versions were collected from + - samtools: + type: string + description: The tool name + - "samtools version | sed '1!d;s/.* //'": + type: eval + description: The command used to generate the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - samtools: + type: string + description: The tool name + - "samtools version | sed '1!d;s/.* //'": + type: eval + description: The command used to generate the version of the tool authors: - "@drpatelh" - "@ewels" - "@phue" maintainers: - - "@drpatelh" - - "@ewels" + - "@maxulysse" - "@phue" diff --git a/modules/nf-core/samtools/faidx/tests/main.nf.test b/modules/nf-core/samtools/faidx/tests/main.nf.test index 17244ef2..9a86db86 100644 --- a/modules/nf-core/samtools/faidx/tests/main.nf.test +++ b/modules/nf-core/samtools/faidx/tests/main.nf.test @@ -8,24 +8,30 @@ nextflow_process { tag "modules_nfcore" tag "samtools" tag "samtools/faidx" + config "./nextflow.config" test("test_samtools_faidx") { when { + params { + module_args = '' + } process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] - - input[1] = [[],[]] + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + [] + ] + input[1] = false """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match()} ) } } @@ -33,90 +39,215 @@ nextflow_process { test("test_samtools_faidx_bgzip") { when { + params { + module_args = '' + } process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true)] - - input[1] = [[],[]] + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true), + [] + ] + input[1] = false """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match()} ) } } test("test_samtools_faidx_fasta") { - config "./nextflow.config" - when { + params { + module_args = 'MT192765.1 -o extract.fa' + } process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] - - input[1] = [ [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + input[1] = false """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match()} ) } } test("test_samtools_faidx_stub_fasta") { - config "./nextflow2.config" + options "-stub" + when { + params { + module_args = '-o extract.fa' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + input[1] = false + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match()} + ) + } + } + + test("test_samtools_faidx_stub_fai") { + options "-stub" when { + params { + module_args = '' + } process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + [] + ] + input[1] = false + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match()} + ) + } + } - input[1] = [ [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] + test("test_samtools_faidx_get_sizes") { + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + [] + ] + input[1] = true """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match()} ) } } - test("test_samtools_faidx_stub_fai") { + test("test_samtools_faidx_get_sizes_bgzip") { when { + params { + module_args = '' + } process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true), + [] + ] + input[1] = true + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match()} + ) + } + } + + test("test_samtools_faidx_get_sizes - stub") { + + options "-stub" - input[1] = [[],[]] + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + [] + ] + input[1] = true """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match()} ) } } -} \ No newline at end of file + + test("test_samtools_faidx_get_sizes_bgzip - stub") { + + options "-stub" + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true), + [] + ] + input[1] = true + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match()} + ) + } + } + +} diff --git a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap index 1bbb3ec2..41697444 100644 --- a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap @@ -2,85 +2,133 @@ "test_samtools_faidx": { "content": [ { - "0": [ + "fa": [ ], - "1": [ + "fai": [ [ { - "id": "test", - "single_end": false + "id": "test" }, "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" ] ], - "2": [ + "gzi": [ ], - "3": [ - "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" + "sizes": [ + ], + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T15:39:12.541649151" + }, + "test_samtools_faidx_get_sizes_bgzip - stub": { + "content": [ + { "fa": [ ], "fai": [ [ { - "id": "test", - "single_end": false + "id": "test" }, - "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" + "genome.fasta.gz.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "gzi": [ - + [ + { + "id": "test" + }, + "genome.fasta.gz.gzi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], - "versions": [ - "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" + "sizes": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-09-16T07:57:47.450887871" + "timestamp": "2026-02-10T15:41:44.040426987" }, - "test_samtools_faidx_bgzip": { + "test_samtools_faidx_get_sizes": { "content": [ { - "0": [ + "fa": [ ], - "1": [ + "fai": [ [ { - "id": "test", - "single_end": false + "id": "test" }, - "genome.fasta.gz.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" + "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" ] ], - "2": [ + "gzi": [ + + ], + "sizes": [ [ { - "id": "test", - "single_end": false + "id": "test" }, - "genome.fasta.gz.gzi:md5,7dea362b3fac8e00956a4952a3d4f474" + "genome.fasta.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" ] ], - "3": [ - "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" - ], + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T15:47:03.653912015" + }, + "test_samtools_faidx_bgzip": { + "content": [ + { "fa": [ ], "fai": [ [ { - "id": "test", - "single_end": false + "id": "test" }, "genome.fasta.gz.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" ] @@ -88,49 +136,36 @@ "gzi": [ [ { - "id": "test", - "single_end": false + "id": "test" }, "genome.fasta.gz.gzi:md5,7dea362b3fac8e00956a4952a3d4f474" ] ], - "versions": [ - "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" + "sizes": [ + + ], + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-09-16T07:58:04.804905659" + "timestamp": "2026-02-10T15:50:04.023566795" }, "test_samtools_faidx_fasta": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "extract.fa:md5,6a0774a0ad937ba0bfd2ac7457d90f36" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" - ], "fa": [ [ { - "id": "test", - "single_end": false + "id": "test" }, "extract.fa:md5,6a0774a0ad937ba0bfd2ac7457d90f36" ] @@ -141,45 +176,73 @@ "gzi": [ ], - "versions": [ - "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" + "sizes": [ + + ], + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-09-16T07:58:23.831268154" + "timestamp": "2026-02-10T15:39:23.529404162" }, - "test_samtools_faidx_stub_fasta": { + "test_samtools_faidx_get_sizes - stub": { "content": [ { - "0": [ + "fa": [ + + ], + "fai": [ [ { - "id": "test", - "single_end": false + "id": "test" }, - "extract.fa:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" + "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "1": [ - - ], - "2": [ + "gzi": [ ], - "3": [ - "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" + "sizes": [ + [ + { + "id": "test" + }, + "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T15:41:39.039834304" + }, + "test_samtools_faidx_stub_fasta": { + "content": [ + { "fa": [ [ { - "id": "test", - "single_end": false + "id": "test" }, - "extract.fa:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" + "extract.fa:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "fai": [ @@ -188,62 +251,102 @@ "gzi": [ ], - "versions": [ - "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" + "sizes": [ + + ], + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-09-16T07:58:35.600243706" + "timestamp": "2026-02-10T15:39:28.961701609" }, "test_samtools_faidx_stub_fai": { "content": [ { - "0": [ + "fa": [ ], - "1": [ + "fai": [ [ { - "id": "test", - "single_end": false + "id": "test" }, - "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" + "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "2": [ + "gzi": [ ], - "3": [ - "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" + "sizes": [ + ], + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T15:39:34.471028474" + }, + "test_samtools_faidx_get_sizes_bgzip": { + "content": [ + { "fa": [ ], "fai": [ [ { - "id": "test", - "single_end": false + "id": "test" }, - "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" + "genome.fasta.gz.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" ] ], "gzi": [ - + [ + { + "id": "test" + }, + "genome.fasta.gz.gzi:md5,7dea362b3fac8e00956a4952a3d4f474" + ] ], - "versions": [ - "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" + "sizes": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" + ] + ], + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-09-16T07:58:54.705460167" + "timestamp": "2026-02-10T15:39:45.439016495" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/faidx/tests/nextflow.config b/modules/nf-core/samtools/faidx/tests/nextflow.config index f76a3ba0..202c036e 100644 --- a/modules/nf-core/samtools/faidx/tests/nextflow.config +++ b/modules/nf-core/samtools/faidx/tests/nextflow.config @@ -1,7 +1,7 @@ process { withName: SAMTOOLS_FAIDX { - ext.args = 'MT192765.1 -o extract.fa' + ext.args = params.module_args } } diff --git a/modules/nf-core/samtools/faidx/tests/nextflow2.config b/modules/nf-core/samtools/faidx/tests/nextflow2.config deleted file mode 100644 index 33ebbd5d..00000000 --- a/modules/nf-core/samtools/faidx/tests/nextflow2.config +++ /dev/null @@ -1,6 +0,0 @@ -process { - - withName: SAMTOOLS_FAIDX { - ext.args = '-o extract.fa' - } -} diff --git a/modules/nf-core/samtools/faidx/tests/tags.yml b/modules/nf-core/samtools/faidx/tests/tags.yml deleted file mode 100644 index e4a83948..00000000 --- a/modules/nf-core/samtools/faidx/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/faidx: - - modules/nf-core/samtools/faidx/** diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf deleted file mode 100644 index 31175610..00000000 --- a/modules/nf-core/samtools/index/main.nf +++ /dev/null @@ -1,49 +0,0 @@ -process SAMTOOLS_INDEX { - 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/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" - - input: - tuple val(meta), path(input) - - output: - tuple val(meta), path("*.bai") , optional:true, emit: bai - tuple val(meta), path("*.csi") , optional:true, emit: csi - tuple val(meta), path("*.crai"), optional:true, emit: crai - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - """ - samtools \\ - index \\ - -@ ${task.cpus-1} \\ - $args \\ - $input - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ - - stub: - def args = task.ext.args ?: '' - def extension = file(input).getExtension() == 'cram' ? - "crai" : args.contains("-c") ? "csi" : "bai" - """ - touch ${input}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ -} diff --git a/modules/nf-core/samtools/index/meta.yml b/modules/nf-core/samtools/index/meta.yml deleted file mode 100644 index db8df0d5..00000000 --- a/modules/nf-core/samtools/index/meta.yml +++ /dev/null @@ -1,71 +0,0 @@ -name: samtools_index -description: Index SAM/BAM/CRAM file -keywords: - - index - - bam - - sam - - cram -tools: - - samtools: - description: | - SAMtools is a set of utilities for interacting with and post-processing - short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li. - These files are generated as output by short read aligners like BWA. - homepage: http://www.htslib.org/ - documentation: http://www.htslib.org/doc/samtools.html - doi: 10.1093/bioinformatics/btp352 - licence: ["MIT"] - identifier: biotools:samtools -input: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: input file -output: - - bai: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.bai": - type: file - description: BAM/CRAM/SAM index file - pattern: "*.{bai,crai,sai}" - - csi: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.csi": - type: file - description: CSI index file - pattern: "*.{csi}" - - crai: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.crai": - type: file - description: BAM/CRAM/SAM index file - pattern: "*.{bai,crai,sai}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@drpatelh" - - "@ewels" - - "@maxulysse" -maintainers: - - "@drpatelh" - - "@ewels" - - "@maxulysse" diff --git a/modules/nf-core/samtools/index/tests/csi.nextflow.config b/modules/nf-core/samtools/index/tests/csi.nextflow.config deleted file mode 100644 index 0ed260ef..00000000 --- a/modules/nf-core/samtools/index/tests/csi.nextflow.config +++ /dev/null @@ -1,7 +0,0 @@ -process { - - withName: SAMTOOLS_INDEX { - ext.args = '-c' - } - -} diff --git a/modules/nf-core/samtools/index/tests/main.nf.test b/modules/nf-core/samtools/index/tests/main.nf.test deleted file mode 100644 index ca34fb5c..00000000 --- a/modules/nf-core/samtools/index/tests/main.nf.test +++ /dev/null @@ -1,140 +0,0 @@ -nextflow_process { - - name "Test Process SAMTOOLS_INDEX" - script "../main.nf" - process "SAMTOOLS_INDEX" - tag "modules" - tag "modules_nfcore" - tag "samtools" - tag "samtools/index" - - test("bai") { - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("crai") { - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.recalibrated.sorted.cram', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("csi") { - config "./csi.nextflow.config" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot( - file(process.out.csi[0][1]).name, - process.out.versions - ).match() } - ) - } - } - - test("bai - stub") { - options "-stub" - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("crai - stub") { - options "-stub" - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.recalibrated.sorted.cram', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("csi - stub") { - options "-stub" - config "./csi.nextflow.config" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } -} diff --git a/modules/nf-core/samtools/index/tests/main.nf.test.snap b/modules/nf-core/samtools/index/tests/main.nf.test.snap deleted file mode 100644 index 72d65e81..00000000 --- a/modules/nf-core/samtools/index/tests/main.nf.test.snap +++ /dev/null @@ -1,250 +0,0 @@ -{ - "csi - stub": { - "content": [ - { - "0": [ - - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,5e09a6fdf76de396728f877193d72315" - ], - "bai": [ - - ], - "crai": [ - - ], - "csi": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,5e09a6fdf76de396728f877193d72315" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T08:21:25.261127166" - }, - "crai - stub": { - "content": [ - { - "0": [ - - ], - "1": [ - - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.recalibrated.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - "versions.yml:md5,5e09a6fdf76de396728f877193d72315" - ], - "bai": [ - - ], - "crai": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.recalibrated.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,5e09a6fdf76de396728f877193d72315" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T08:21:12.653194876" - }, - "bai - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.sorted.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,5e09a6fdf76de396728f877193d72315" - ], - "bai": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.sorted.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "crai": [ - - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,5e09a6fdf76de396728f877193d72315" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T08:21:01.854932651" - }, - "csi": { - "content": [ - "test.paired_end.sorted.bam.csi", - [ - "versions.yml:md5,5e09a6fdf76de396728f877193d72315" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T08:20:51.485364222" - }, - "crai": { - "content": [ - { - "0": [ - - ], - "1": [ - - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.recalibrated.sorted.cram.crai:md5,14bc3bd5c89cacc8f4541f9062429029" - ] - ], - "3": [ - "versions.yml:md5,5e09a6fdf76de396728f877193d72315" - ], - "bai": [ - - ], - "crai": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.recalibrated.sorted.cram.crai:md5,14bc3bd5c89cacc8f4541f9062429029" - ] - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,5e09a6fdf76de396728f877193d72315" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T08:20:40.518873972" - }, - "bai": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.sorted.bam.bai:md5,704c10dd1326482448ca3073fdebc2f4" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,5e09a6fdf76de396728f877193d72315" - ], - "bai": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.sorted.bam.bai:md5,704c10dd1326482448ca3073fdebc2f4" - ] - ], - "crai": [ - - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,5e09a6fdf76de396728f877193d72315" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T08:20:21.184050361" - } -} \ No newline at end of file diff --git a/modules/nf-core/samtools/index/tests/tags.yml b/modules/nf-core/samtools/index/tests/tags.yml deleted file mode 100644 index e0f58a7a..00000000 --- a/modules/nf-core/samtools/index/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/index: - - modules/nf-core/samtools/index/** diff --git a/modules/nf-core/samtools/markdup/environment.yml b/modules/nf-core/samtools/markdup/environment.yml index 62054fc9..89e12a64 100644 --- a/modules/nf-core/samtools/markdup/environment.yml +++ b/modules/nf-core/samtools/markdup/environment.yml @@ -4,5 +4,7 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/markdup/main.nf b/modules/nf-core/samtools/markdup/main.nf index 8453bf82..2652fb49 100644 --- a/modules/nf-core/samtools/markdup/main.nf +++ b/modules/nf-core/samtools/markdup/main.nf @@ -4,18 +4,18 @@ process SAMTOOLS_MARKDUP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta), path(input) - tuple val(meta2), path(fasta) + tuple val(meta2), path(fasta), path(fai) output: tuple val(meta), path("*.bam"), emit: bam, optional: true tuple val(meta), path("*.cram"), emit: cram, optional: true tuple val(meta), path("*.sam"), emit: sam, optional: true - path "versions.yml", emit: versions + tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //'"), topic: versions, emit: versions_samtools when: task.ext.when == null || task.ext.when @@ -38,11 +38,6 @@ process SAMTOOLS_MARKDUP { -T $prefix \\ $input \\ ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//' ) - END_VERSIONS """ stub: @@ -54,10 +49,5 @@ process SAMTOOLS_MARKDUP { if ("$input" == "${prefix}.${extension}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ touch ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/samtools/markdup/meta.yml b/modules/nf-core/samtools/markdup/meta.yml index 31cb0c63..42bad16a 100644 --- a/modules/nf-core/samtools/markdup/meta.yml +++ b/modules/nf-core/samtools/markdup/meta.yml @@ -24,18 +24,25 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - - meta2: type: map description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + Groovy Map containing reference information + e.g. [ id:'genome' ] - fasta: type: file - description: A reference genome in FASTA format - pattern: "*.fasta" + description: Reference genome file + pattern: "*.{fa,fasta}" + ontologies: [] + - fai: + type: file + description: Reference genome index file + pattern: "*.fai" + ontologies: [] output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -44,8 +51,9 @@ output: type: file description: BAM file pattern: "*{.bam}" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -54,8 +62,9 @@ output: type: file description: CRAM file pattern: "*{.cram}" - - sam: - - meta: + ontologies: [] + sam: + - - meta: type: map description: | Groovy Map containing sample information @@ -64,11 +73,28 @@ output: type: file description: SAM file pattern: "*{.sam}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_samtools: + - - ${task.process}: + type: string + description: The process the versions were collected from + - samtools: + type: string + description: The tool name + - "samtools version | sed '1!d;s/.* //'": + type: string + description: The command used to generate the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - samtools: + type: string + description: The tool name + - "samtools version | sed '1!d;s/.* //'": + type: string + description: The command used to generate the version of the tool authors: - "@priyanka-surana" maintainers: diff --git a/modules/nf-core/samtools/markdup/tests/main.nf.test b/modules/nf-core/samtools/markdup/tests/main.nf.test index acfbd1c1..4700f3b5 100644 --- a/modules/nf-core/samtools/markdup/tests/main.nf.test +++ b/modules/nf-core/samtools/markdup/tests/main.nf.test @@ -19,8 +19,8 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true), + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true), ] """ } @@ -32,8 +32,9 @@ nextflow_process { input[0] = SAMTOOLS_FIXMATE.out.bam input[1] = [ [ id:'fasta' ], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), ] + input[2] = '' """ } } @@ -44,17 +45,16 @@ nextflow_process { input[0] = SAMTOOLS_SORT.out.bam input[1] = [ [ id:'fasta' ], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + [] ] """ } } then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) + assert process.success + assert snapshot(sanitizeOutput(process.out)).match() } } @@ -67,22 +67,21 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true), ] input[1] = [ [ id:'fasta' ], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + [] ] """ } } then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) + assert process.success + assert snapshot(sanitizeOutput(process.out)).match() } } diff --git a/modules/nf-core/samtools/markdup/tests/main.nf.test.snap b/modules/nf-core/samtools/markdup/tests/main.nf.test.snap index 4e7cbf5e..aee0edaa 100644 --- a/modules/nf-core/samtools/markdup/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/markdup/tests/main.nf.test.snap @@ -2,29 +2,10 @@ "sarscov2 - bam - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.markdup.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,4ce5394244e549f97b8250b7dfad71ba" - ], "bam": [ [ { - "id": "test", - "single_end": false + "id": "test" }, "test.markdup.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -35,45 +16,30 @@ "sam": [ ], - "versions": [ - "versions.yml:md5,4ce5394244e549f97b8250b7dfad71ba" + "versions_samtools": [ + [ + "SAMTOOLS_MARKDUP", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-09-17T08:46:57.510270753" + "timestamp": "2026-02-05T15:04:30.551765478" }, "sarscov2 - bam": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.markdup.bam:md5,e73ea77e3857e7c6b0e6db2ec660361f" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,4ce5394244e549f97b8250b7dfad71ba" - ], "bam": [ [ { - "id": "test", - "single_end": false + "id": "test" }, - "test.markdup.bam:md5,e73ea77e3857e7c6b0e6db2ec660361f" + "test.markdup.bam:md5,ae1745dd5a9218d2c89c19c7d76363dc" ] ], "cram": [ @@ -82,15 +48,19 @@ "sam": [ ], - "versions": [ - "versions.yml:md5,4ce5394244e549f97b8250b7dfad71ba" + "versions_samtools": [ + [ + "SAMTOOLS_MARKDUP", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-09-17T08:51:17.068686604" + "timestamp": "2026-02-05T15:04:24.724106279" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/merge/environment.yml b/modules/nf-core/samtools/merge/environment.yml index 62054fc9..89e12a64 100644 --- a/modules/nf-core/samtools/merge/environment.yml +++ b/modules/nf-core/samtools/merge/environment.yml @@ -4,5 +4,7 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.21 - - bioconda::samtools=1.21 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/merge/main.nf b/modules/nf-core/samtools/merge/main.nf index 34da4c7c..87ebc501 100644 --- a/modules/nf-core/samtools/merge/main.nf +++ b/modules/nf-core/samtools/merge/main.nf @@ -4,21 +4,19 @@ process SAMTOOLS_MERGE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta), path(input_files, stageAs: "?/*") - tuple val(meta2), path(fasta) - tuple val(meta3), path(fai) + tuple val(meta2), path(fasta), path(fai), path(gzi) output: tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam tuple val(meta), path("${prefix}.cram"), optional:true, emit: cram tuple val(meta), path("*.csi") , optional:true, emit: csi tuple val(meta), path("*.crai") , optional:true, emit: crai - path "versions.yml" , emit: versions - + tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //'"), topic: versions, emit: versions_samtools when: task.ext.when == null || task.ext.when @@ -29,6 +27,7 @@ process SAMTOOLS_MERGE { def file_type = input_files instanceof List ? input_files[0].getExtension() : input_files.getExtension() def reference = fasta ? "--reference ${fasta}" : "" """ + # Note: --threads value represents *additional* CPUs to allocate (total CPUs = 1 + --threads). samtools \\ merge \\ --threads ${task.cpus-1} \\ @@ -36,11 +35,6 @@ process SAMTOOLS_MERGE { ${reference} \\ ${prefix}.${file_type} \\ $input_files - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ stub: @@ -52,10 +46,5 @@ process SAMTOOLS_MERGE { """ touch ${prefix}.${file_type} ${index} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/samtools/merge/meta.yml b/modules/nf-core/samtools/merge/meta.yml index 235aa219..31cc576b 100644 --- a/modules/nf-core/samtools/merge/meta.yml +++ b/modules/nf-core/samtools/merge/meta.yml @@ -26,6 +26,7 @@ input: type: file description: BAM/CRAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - - meta2: type: map description: | @@ -35,18 +36,21 @@ input: type: file description: Reference file the CRAM was created with (optional) pattern: "*.{fasta,fa}" - - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] + ontologies: [] - fai: type: file description: Index of the reference file the CRAM was created with (optional) pattern: "*.fai" + ontologies: [] + - gzi: + type: file + description: Index of the compressed reference file the CRAM was created with + (optional) + pattern: "*.gzi" + ontologies: [] output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -55,8 +59,9 @@ output: type: file description: BAM file pattern: "*.{bam}" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -65,8 +70,9 @@ output: type: file description: CRAM file pattern: "*.{cram}" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -75,8 +81,9 @@ output: type: file description: BAM index file (optional) pattern: "*.csi" - - crai: - - meta: + ontologies: [] + crai: + - - meta: type: map description: | Groovy Map containing sample information @@ -85,20 +92,36 @@ output: type: file description: CRAM index file (optional) pattern: "*.crai" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_samtools: + - - ${task.process}: + type: string + description: The process the versions were collected from + - samtools: + type: string + description: The tool name + - "samtools version | sed '1!d;s/.* //'": + type: string + description: The command used to generate the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - samtools: + type: string + description: The tool name + - "samtools version | sed '1!d;s/.* //'": + type: string + description: The command used to generate the version of the tool authors: - - "@drpatelh" - - "@yuukiiwa " + - "@yuukiiwa" - "@maxulysse" - "@FriederikeHanssen" - "@ramprasadn" maintainers: - - "@drpatelh" - - "@yuukiiwa " + - "@yuukiiwa" - "@maxulysse" - "@FriederikeHanssen" - "@ramprasadn" diff --git a/modules/nf-core/samtools/merge/tests/index.config b/modules/nf-core/samtools/merge/tests/index.config deleted file mode 100644 index 8c5668cf..00000000 --- a/modules/nf-core/samtools/merge/tests/index.config +++ /dev/null @@ -1,3 +0,0 @@ -process { - ext.args = "--write-index" -} \ No newline at end of file diff --git a/modules/nf-core/samtools/merge/tests/main.nf.test b/modules/nf-core/samtools/merge/tests/main.nf.test index 40b36e82..a784c836 100644 --- a/modules/nf-core/samtools/merge/tests/main.nf.test +++ b/modules/nf-core/samtools/merge/tests/main.nf.test @@ -8,70 +8,116 @@ nextflow_process { tag "modules_nfcore" tag "samtools" tag "samtools/merge" + config "./nextflow.config" test("bams") { - config "./index.config" - when { + params { + module_args = '--write-index' + } process { """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map + input[0] = [ + [ id:'test'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true) ] - ]) - input[1] = [[],[]] - input[2] = [[],[]] + ] + input[1] = [[],[],[],[]] """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(file(process.out.bam[0][1]).name).match("bams_bam") }, - { assert snapshot(process.out.cram).match("bams_cram") }, - { assert snapshot(file(process.out.csi[0][1]).name).match("bams_csi") }, - { assert snapshot(process.out.crai).match("bams_crai") }, - { assert snapshot(process.out.versions).match("bams_versions") } + { assert snapshot( + bam(process.out.bam[0][1]).getReadsMD5(), + file(process.out.csi[0][1]).name, + process.out.cram, + process.out.crai, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() + } ) } } - test("crams") { + test("crams_fastq") { + + when { + params { + module_args = '--write-index --output-fmt cram,version=3.0' + } + process { + """ + input[0] = [ + [ id:'test' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test2.paired_end.sorted.cram', checkIfExists: true) ] + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true), + [] + ] + """ + } + } + + then { + def fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/modules/data/genomics/homo_sapiens/genome/genome.fasta' + assert process.success + assertAll( + { assert snapshot( + cram(process.out.cram[0][1], fasta).getReadsMD5(), + process.out.csi, + process.out.bam, + file(process.out.crai[0][1]).name, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() + } + ) + } + } - config "./index.config" + test("crams_fastq_gz") { when { + params { + module_args = '--write-index' + } process { """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.recalibrated.sorted.cram', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test2.paired_end.recalibrated.sorted.cram', checkIfExists: true) ] - ]) - input[1] = Channel.of([ - [ id:'genome' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ]) - input[2] = Channel.of([ - [ id:'genome' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) - ]) + input[0] = [ + [ id:'test' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test2.paired_end.sorted.cram', checkIfExists: true) ] + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.gz.fai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.gz.gzi', checkIfExists: true) + ] """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(file(process.out.cram[0][1]).name).match("crams_cram") }, - { assert snapshot(process.out.bam).match("crams_bam") }, - { assert snapshot(file(process.out.crai[0][1]).name).match("crams_crai") }, - { assert snapshot(process.out.csi).match("crams_csi") }, - { assert snapshot(process.out.versions).match("crams_versions") } + { assert snapshot( + //nft-bam doesn't like the fasta.gz + file(process.out.cram[0][1]).name, + process.out.csi, + process.out.bam, + file(process.out.crai[0][1]).name, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() + } ) } } @@ -79,59 +125,91 @@ nextflow_process { test("bam") { when { + params { + module_args = '' + } process { """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map + input[0] = [ + [ id:'test' ], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true) ] - ]) - input[1] = [[],[]] - input[2] = [[],[]] + ] + input[1] = [[],[],[],[]] + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + bam(process.out.bam[0][1]).getReadsMD5(), + process.out.csi, + process.out.cram, + process.out.crai, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match() + } + ) + } + } + + test("bams - stub") { + + options "-stub" + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id:'test' ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true) ] + ] + input[1] = [[],[],[],[]] """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(file(process.out.bam[0][1]).name).match("bam_bam") }, - { assert snapshot(process.out.cram).match("bam_cram") }, - { assert snapshot(process.out.crai).match("bam_crai") }, - { assert snapshot(process.out.csi).match("bam_csi") }, - { assert snapshot(process.out.versions).match("bam_versions") } + { assert snapshot(process.out).match()} ) } } - test("bams_stub") { + test("bams_no_index - stub") { - config "./index.config" options "-stub" when { + params { + module_args = '' + } process { """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map + input[0] = [ + [ id:'test'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true) ] - ]) - input[1] = [[],[]] - input[2] = [[],[]] + ] + input[1] = [[],[],[],[]] """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(file(process.out.bam[0][1]).name).match("bams_stub_bam") }, - { assert snapshot(process.out.cram).match("bams_stub_cram") }, - { assert snapshot(file(process.out.csi[0][1]).name).match("bams_stub_csi") }, - { assert snapshot(process.out.crai).match("bams_stub_crai") }, - { assert snapshot(process.out.versions).match("bams_stub_versions") } + { assert snapshot(process.out).match()} ) } } + } diff --git a/modules/nf-core/samtools/merge/tests/main.nf.test.snap b/modules/nf-core/samtools/merge/tests/main.nf.test.snap index 0a41e01a..e8d4d18a 100644 --- a/modules/nf-core/samtools/merge/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/merge/tests/main.nf.test.snap @@ -1,228 +1,226 @@ { - "crams_cram": { - "content": [ - "test.cram" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T18:50:00.647389" - }, - "bams_stub_cram": { - "content": [ + "bams_no_index - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + [ + "SAMTOOLS_MERGE", + "samtools", + "1.22.1" + ] + ], + "bam": [ + [ + { + "id": "test" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "crai": [ + + ], + "cram": [ + + ], + "csi": [ + + ], + "versions_samtools": [ + [ + "SAMTOOLS_MERGE", + "samtools", + "1.22.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2025-12-22T09:07:54.643129787" + }, + "crams_fastq": { + "content": [ + "c4525b95f05075208347295e6a1fb232", [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T18:50:19.937013" - }, - "bams_crai": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T18:49:24.928616" - }, - "bams_bam": { - "content": [ - "test.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T18:49:24.923289" - }, - "bams_cram": { - "content": [ + ], + "test.cram.crai", + { + "versions_samtools": [ + [ + "SAMTOOLS_MERGE", + "samtools", + "1.22.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2025-12-21T15:47:17.739468093" + }, + "bams - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + [ + "SAMTOOLS_MERGE", + "samtools", + "1.22.1" + ] + ], + "bam": [ + [ + { + "id": "test" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "crai": [ + + ], + "cram": [ + + ], + "csi": [ + + ], + "versions_samtools": [ + [ + "SAMTOOLS_MERGE", + "samtools", + "1.22.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2025-12-22T09:07:47.303781531" + }, + "bams": { + "content": [ + "47c9f174d8c8afc1a13c75ee4b5e5d43", + "test.bam.csi", [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T18:49:24.925716" - }, - "crams_csi": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T18:50:00.655959" - }, - "bam_bam": { - "content": [ - "test.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T18:50:10.319539" - }, - "bam_versions": { - "content": [ - [ - "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T09:16:30.476887194" - }, - "bams_csi": { - "content": [ - "test.bam.csi" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T18:49:24.92719" - }, - "bams_stub_csi": { - "content": [ - "test.csi" + ], + { + "versions_samtools": [ + [ + "SAMTOOLS_MERGE", + "samtools", + "1.22.1" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-02-12T18:50:19.940498" + "timestamp": "2025-12-21T15:47:07.586929894" }, - "bam_crai": { + "crams_fastq_gz": { "content": [ + "test.cram", [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T18:50:10.328852" - }, - "bams_stub_versions": { - "content": [ - [ - "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T09:16:52.203823961" - }, - "bam_cram": { - "content": [ + ], [ - ] + ], + "test.cram.crai", + { + "versions_samtools": [ + [ + "SAMTOOLS_MERGE", + "samtools", + "1.22.1" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-02-12T18:50:10.324219" + "timestamp": "2025-12-21T15:47:26.095542073" }, - "bams_stub_bam": { - "content": [ - "test.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T18:50:19.933153" - }, - "bams_versions": { - "content": [ - [ - "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T08:29:57.524363148" - }, - "crams_bam": { + "bam": { "content": [ + "8da8fc1099a955e3ceb198665350e766", [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T18:50:00.650652" - }, - "crams_versions": { - "content": [ - [ - "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T09:16:06.977096207" - }, - "bam_csi": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T18:50:10.33292" - }, - "crams_crai": { - "content": [ - "test.cram.crai" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T18:50:00.653512" - }, - "bams_stub_crai": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T18:50:19.943839" + ], + { + "versions_samtools": [ + [ + "SAMTOOLS_MERGE", + "samtools", + "1.22.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2025-12-21T15:47:33.563513564" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/merge/tests/nextflow.config b/modules/nf-core/samtools/merge/tests/nextflow.config new file mode 100644 index 00000000..2b2a4610 --- /dev/null +++ b/modules/nf-core/samtools/merge/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: "SAMTOOLS_MERGE" { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/samtools/merge/tests/tags.yml b/modules/nf-core/samtools/merge/tests/tags.yml deleted file mode 100644 index b869abcb..00000000 --- a/modules/nf-core/samtools/merge/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/merge: - - "modules/nf-core/samtools/merge/**" diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf deleted file mode 100644 index caf3c61a..00000000 --- a/modules/nf-core/samtools/sort/main.nf +++ /dev/null @@ -1,72 +0,0 @@ -process SAMTOOLS_SORT { - tag "$meta.id" - label 'process_medium' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : - 'biocontainers/samtools:1.21--h50ea8bc_0' }" - - input: - tuple val(meta) , path(bam) - tuple val(meta2), path(fasta) - - output: - tuple val(meta), path("*.bam"), emit: bam, optional: true - tuple val(meta), path("*.cram"), emit: cram, optional: true - tuple val(meta), path("*.crai"), emit: crai, optional: true - tuple val(meta), path("*.csi"), emit: csi, optional: true - 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}" - def extension = args.contains("--output-fmt sam") ? "sam" : - args.contains("--output-fmt cram") ? "cram" : - "bam" - def reference = fasta ? "--reference ${fasta}" : "" - if ("$bam" == "${prefix}.bam") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" - - """ - samtools cat \\ - ${bam} \\ - | \\ - samtools sort \\ - $args \\ - -T ${prefix} \\ - --threads $task.cpus \\ - ${reference} \\ - -o ${prefix}.${extension} \\ - - - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ - - stub: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def extension = args.contains("--output-fmt sam") ? "sam" : - args.contains("--output-fmt cram") ? "cram" : - "bam" - """ - touch ${prefix}.${extension} - if [ "${extension}" == "bam" ]; - then - touch ${prefix}.${extension}.csi - elif [ "${extension}" == "cram" ]; - then - touch ${prefix}.${extension}.crai - fi - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ -} diff --git a/modules/nf-core/samtools/sort/meta.yml b/modules/nf-core/samtools/sort/meta.yml deleted file mode 100644 index a9dbec5a..00000000 --- a/modules/nf-core/samtools/sort/meta.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: samtools_sort -description: Sort SAM/BAM/CRAM file -keywords: - - sort - - bam - - sam - - cram -tools: - - samtools: - description: | - SAMtools is a set of utilities for interacting with and post-processing - short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li. - These files are generated as output by short read aligners like BWA. - homepage: http://www.htslib.org/ - documentation: http://www.htslib.org/doc/samtools.html - doi: 10.1093/bioinformatics/btp352 - licence: ["MIT"] - identifier: biotools:samtools -input: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: BAM/CRAM/SAM file(s) - pattern: "*.{bam,cram,sam}" - - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: Reference genome FASTA file - pattern: "*.{fa,fasta,fna}" - optional: true -output: - - bam: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.bam": - type: file - description: Sorted BAM file - pattern: "*.{bam}" - - cram: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.cram": - type: file - description: Sorted CRAM file - pattern: "*.{cram}" - - crai: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.crai": - type: file - description: CRAM index file (optional) - pattern: "*.crai" - - csi: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.csi": - type: file - description: BAM index file (optional) - pattern: "*.csi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@drpatelh" - - "@ewels" - - "@matthdsm" -maintainers: - - "@drpatelh" - - "@ewels" - - "@matthdsm" diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test deleted file mode 100644 index b05e6691..00000000 --- a/modules/nf-core/samtools/sort/tests/main.nf.test +++ /dev/null @@ -1,192 +0,0 @@ -nextflow_process { - - name "Test Process SAMTOOLS_SORT" - script "../main.nf" - process "SAMTOOLS_SORT" - tag "modules" - tag "modules_nfcore" - tag "samtools" - tag "samtools/sort" - - test("bam") { - - config "./nextflow.config" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) - ]) - input[1] = Channel.of([ - [ id:'fasta' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot( - process.out.bam, - process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.versions - ).match()} - ) - } - } - - test("multiple bam") { - - config "./nextflow.config" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) - ] - ]) - input[1] = Channel.of([ - [ id:'fasta' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot( - process.out.bam, - process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.versions - ).match()} - ) - } - } - - test("cram") { - - config "./nextflow_cram.config" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true) - ]) - input[1] = Channel.of([ - [ id:'fasta' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot( - process.out.cram.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.crai.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.versions - ).match()} - ) - } - } - - test("bam - stub") { - - options "-stub" - config "./nextflow.config" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) - ]) - input[1] = Channel.of([ - [ id:'fasta' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("multiple bam - stub") { - - config "./nextflow.config" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) - ] - ]) - input[1] = Channel.of([ - [ id:'fasta' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("cram - stub") { - - options "-stub" - config "./nextflow_cram.config" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true) - ]) - input[1] = Channel.of([ - [ id:'fasta' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } -} diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap deleted file mode 100644 index 469891fe..00000000 --- a/modules/nf-core/samtools/sort/tests/main.nf.test.snap +++ /dev/null @@ -1,287 +0,0 @@ -{ - "cram": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.cram" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.cram.crai" - ] - ], - [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T08:49:58.207549273" - }, - "bam - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "4": [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ], - "bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "crai": [ - - ], - "cram": [ - - ], - "csi": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T08:50:08.630951018" - }, - "cram - stub": { - "content": [ - { - "0": [ - - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.cram:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - - ], - "4": [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ], - "bam": [ - - ], - "crai": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "cram": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.cram:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T08:50:19.061912443" - }, - "multiple bam": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi" - ] - ], - [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.09.0" - }, - "timestamp": "2024-10-08T11:59:55.479443" - }, - "multiple bam - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,d185916eaff9afeb4d0aeab3310371f9" - ] - ], - "4": [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ], - "bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12" - ] - ], - "crai": [ - - ], - "cram": [ - - ], - "csi": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,d185916eaff9afeb4d0aeab3310371f9" - ] - ], - "versions": [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.09.0" - }, - "timestamp": "2024-10-08T11:36:13.781404" - }, - "bam": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,34aa85e86abefe637f7a4a9887f016fc" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi" - ] - ], - [ - "versions.yml:md5,2659b187d681241451539d4c53500b9f" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.09.0" - }, - "timestamp": "2024-10-08T11:59:46.372244" - } -} \ No newline at end of file diff --git a/modules/nf-core/samtools/sort/tests/nextflow.config b/modules/nf-core/samtools/sort/tests/nextflow.config deleted file mode 100644 index f642771f..00000000 --- a/modules/nf-core/samtools/sort/tests/nextflow.config +++ /dev/null @@ -1,8 +0,0 @@ -process { - - withName: SAMTOOLS_SORT { - ext.prefix = { "${meta.id}.sorted" } - ext.args = "--write-index" - } - -} diff --git a/modules/nf-core/samtools/sort/tests/nextflow_cram.config b/modules/nf-core/samtools/sort/tests/nextflow_cram.config deleted file mode 100644 index 3a8c0188..00000000 --- a/modules/nf-core/samtools/sort/tests/nextflow_cram.config +++ /dev/null @@ -1,8 +0,0 @@ -process { - - withName: SAMTOOLS_SORT { - ext.prefix = { "${meta.id}.sorted" } - ext.args = "--write-index --output-fmt cram" - } - -} diff --git a/modules/nf-core/samtools/sort/tests/tags.yml b/modules/nf-core/samtools/sort/tests/tags.yml deleted file mode 100644 index cd63ea20..00000000 --- a/modules/nf-core/samtools/sort/tests/tags.yml +++ /dev/null @@ -1,3 +0,0 @@ -samtools/sort: - - modules/nf-core/samtools/sort/** - - tests/modules/nf-core/samtools/sort/** diff --git a/modules/nf-core/samtools/view/environment.yml b/modules/nf-core/samtools/view/environment.yml deleted file mode 100644 index 02cda6e6..00000000 --- a/modules/nf-core/samtools/view/environment.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -channels: - - conda-forge - - bioconda -dependencies: - # renovate: datasource=conda depName=bioconda/htslib - - bioconda::htslib=1.21 - # renovate: datasource=conda depName=bioconda/samtools - - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/view/main.nf b/modules/nf-core/samtools/view/main.nf deleted file mode 100644 index 41fa3d6a..00000000 --- a/modules/nf-core/samtools/view/main.nf +++ /dev/null @@ -1,77 +0,0 @@ -process SAMTOOLS_VIEW { - tag "$meta.id" - label 'process_low' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/9e/9edc2564215d5cd137a8b25ca8a311600987186d406b092022444adf3c4447f7/data' : - 'community​.wave​.seqera​.io/library/htslib_samtools:1​.21--6cb89bfd40cbaabf' }" - - input: - tuple val(meta), path(input), path(index) - tuple val(meta2), path(fasta) - path qname - - output: - tuple val(meta), path("${prefix}.bam"), emit: bam, optional: true - tuple val(meta), path("${prefix}.cram"), emit: cram, optional: true - tuple val(meta), path("${prefix}.sam"), emit: sam, optional: true - tuple val(meta), path("${prefix}.${file_type}.bai"), emit: bai, optional: true - tuple val(meta), path("${prefix}.${file_type}.csi"), emit: csi, optional: true - tuple val(meta), path("${prefix}.${file_type}.crai"), emit: crai, optional: true - tuple val(meta), path("${prefix}.unselected.${file_type}"), emit: unselected, optional: true - tuple val(meta), path("${prefix}.unselected.${file_type}.{bai,csi,crsi}"), emit: unselected_index, optional: true - path "versions.yml", emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def args2 = task.ext.args2 ?: '' - prefix = task.ext.prefix ?: "${meta.id}" - def reference = fasta ? "--reference ${fasta}" : "" - file_type = args.contains("--output-fmt sam") ? "sam" : - args.contains("--output-fmt bam") ? "bam" : - args.contains("--output-fmt cram") ? "cram" : - input.getExtension() - readnames = qname ? "--qname-file ${qname} --output-unselected ${prefix}.unselected.${file_type}": "" - if ("$input" == "${prefix}.${file_type}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" - """ - samtools \\ - view \\ - --threads ${task.cpus-1} \\ - ${reference} \\ - ${readnames} \\ - $args \\ - -o ${prefix}.${file_type} \\ - $input \\ - $args2 - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ - - stub: - def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "${meta.id}" - file_type = args.contains("--output-fmt sam") ? "sam" : - args.contains("--output-fmt bam") ? "bam" : - args.contains("--output-fmt cram") ? "cram" : - input.getExtension() - if ("$input" == "${prefix}.${file_type}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" - - def index = args.contains("--write-index") ? "touch ${prefix}.${file_type}.csi" : "" - - """ - touch ${prefix}.${file_type} - ${index} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ -} diff --git a/modules/nf-core/samtools/view/meta.yml b/modules/nf-core/samtools/view/meta.yml deleted file mode 100644 index caa7b015..00000000 --- a/modules/nf-core/samtools/view/meta.yml +++ /dev/null @@ -1,141 +0,0 @@ -name: samtools_view -description: filter/convert SAM/BAM/CRAM file -keywords: - - view - - bam - - sam - - cram -tools: - - samtools: - description: | - SAMtools is a set of utilities for interacting with and post-processing - short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li. - These files are generated as output by short read aligners like BWA. - homepage: http://www.htslib.org/ - documentation: http://www.htslib.org/doc/samtools.html - doi: 10.1093/bioinformatics/btp352 - licence: ["MIT"] - identifier: biotools:samtools -input: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - - index: - type: file - description: BAM.BAI/BAM.CSI/CRAM.CRAI file (optional) - pattern: "*.{.bai,.csi,.crai}" - - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test' ] - - fasta: - type: file - description: Reference file the CRAM was created with (optional) - pattern: "*.{fasta,fa}" - - - qname: - type: file - description: Optional file with read names to output only select alignments - pattern: "*.{txt,list}" -output: - - bam: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.bam: - type: file - description: optional filtered/converted BAM file - pattern: "*.{bam}" - - cram: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.cram: - type: file - description: optional filtered/converted CRAM file - pattern: "*.{cram}" - - sam: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.sam: - type: file - description: optional filtered/converted SAM file - pattern: "*.{sam}" - - bai: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.${file_type}.bai: - type: file - description: optional BAM file index - pattern: "*.{bai}" - - csi: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.${file_type}.csi: - type: file - description: optional tabix BAM file index - pattern: "*.{csi}" - - crai: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.${file_type}.crai: - type: file - description: optional CRAM file index - pattern: "*.{crai}" - - unselected: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.unselected.${file_type}: - type: file - description: optional file with unselected alignments - pattern: "*.unselected.{bam,cram,sam}" - - unselected_index: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}.unselected.${file_type}.{bai,csi,crsi}: - type: file - description: index for the "unselected" file - pattern: "*.unselected.{bai,csi,crai}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@drpatelh" - - "@joseespinosa" - - "@FriederikeHanssen" - - "@priyanka-surana" -maintainers: - - "@drpatelh" - - "@joseespinosa" - - "@FriederikeHanssen" - - "@priyanka-surana" diff --git a/modules/nf-core/samtools/view/tests/bam.config b/modules/nf-core/samtools/view/tests/bam.config deleted file mode 100644 index c10d1081..00000000 --- a/modules/nf-core/samtools/view/tests/bam.config +++ /dev/null @@ -1,3 +0,0 @@ -process { - ext.args = "--output-fmt bam" -} \ No newline at end of file diff --git a/modules/nf-core/samtools/view/tests/bam_index.config b/modules/nf-core/samtools/view/tests/bam_index.config deleted file mode 100644 index 771ae033..00000000 --- a/modules/nf-core/samtools/view/tests/bam_index.config +++ /dev/null @@ -1,3 +0,0 @@ -process { - ext.args = "--output-fmt bam --write-index" -} \ No newline at end of file diff --git a/modules/nf-core/samtools/view/tests/main.nf.test b/modules/nf-core/samtools/view/tests/main.nf.test deleted file mode 100644 index 37b81a91..00000000 --- a/modules/nf-core/samtools/view/tests/main.nf.test +++ /dev/null @@ -1,214 +0,0 @@ -nextflow_process { - - name "Test Process SAMTOOLS_VIEW" - script "../main.nf" - process "SAMTOOLS_VIEW" - - tag "modules" - tag "modules_nfcore" - tag "samtools" - tag "samtools/view" - - test("bam") { - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true), - [] - ]) - input[1] = [[],[]] - input[2] = [] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(file(process.out.bam[0][1]).name).match("bam_bam") }, - { assert snapshot(process.out.bai).match("bam_bai") }, - { assert snapshot(process.out.crai).match("bam_crai") }, - { assert snapshot(process.out.cram).match("bam_cram") }, - { assert snapshot(process.out.csi).match("bam_csi") }, - { assert snapshot(process.out.sam).match("bam_sam") }, - { assert snapshot(process.out.versions).match("bam_versions") } - ) - } - } - - test("cram") { - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true) - ]) - input[1] = Channel.of([ - [ id:'genome' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ]) - input[2] = [] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(file(process.out.cram[0][1]).name).match("cram_cram") }, - { assert snapshot(process.out.bai).match("cram_bai") }, - { assert snapshot(process.out.bam).match("cram_bam") }, - { assert snapshot(process.out.crai).match("cram_crai") }, - { assert snapshot(process.out.csi).match("cram_csi") }, - { assert snapshot(process.out.sam).match("cram_sam") }, - { assert snapshot(process.out.versions).match("cram_versions") } - ) - } - } - - test("cram_to_bam") { - - config "./bam.config" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), - [] - ]) - input[1] = Channel.of([ - [ id:'genome' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ]) - input[2] = [] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(file(process.out.bam[0][1]).name).match("cram_to_bam_bam") }, - { assert snapshot(process.out.bai).match("cram_to_bam_bai") }, - { assert snapshot(process.out.crai).match("cram_to_bam_crai") }, - { assert snapshot(process.out.cram).match("cram_to_bam_cram") }, - { assert snapshot(process.out.csi).match("cram_to_bam_csi") }, - { assert snapshot(process.out.sam).match("cram_to_bam_sam") }, - { assert snapshot(process.out.versions).match("cram_to_bam_versions") } - ) - } - } - - test("cram_to_bam_index") { - - config "./bam_index.config" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), - [] - ]) - input[1] = Channel.of([ - [ id:'genome' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ]) - input[2] = [] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(file(process.out.bam[0][1]).name).match("cram_to_bam_index_bam") }, - { assert snapshot(file(process.out.csi[0][1]).name).match("cram_to_bam_index_csi") }, - { assert snapshot(process.out.bai).match("cram_to_bam_index_bai") }, - { assert snapshot(process.out.crai).match("cram_to_bam_index_crai") }, - { assert snapshot(process.out.cram).match("cram_to_bam_index_cram") }, - { assert snapshot(process.out.sam).match("cram_to_bam_index_sam") }, - { assert snapshot(process.out.versions).match("cram_to_bam_index_versions") } - ) - } - } - - test("cram_to_bam_index_qname") { - - config "./bam_index.config" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), - [] - ]) - input[1] = Channel.of([ - [ id:'genome' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ]) - input[2] = Channel.of("testN:2817", "testN:2814").collectFile(name: "readnames.list", newLine: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(file(process.out.bam[0][1]).name).match("cram_to_bam_index_qname_bam") }, - { assert snapshot(file(process.out.csi[0][1]).name).match("cram_to_bam_index_qname_csi") }, - { assert snapshot(process.out.bai).match("cram_to_bam_index_qname_bai") }, - { assert snapshot(process.out.crai).match("cram_to_bam_index_qname_crai") }, - { assert snapshot(process.out.cram).match("cram_to_bam_index_qname_cram") }, - { assert snapshot(process.out.sam).match("cram_to_bam_index_qname_sam") }, - { assert snapshot(file(process.out.unselected[0][1]).name).match("cram_to_bam_index_qname_unselected") }, - { assert snapshot(file(process.out.unselected_index[0][1]).name).match("cram_to_bam_index_qname_unselected_csi") }, - { assert snapshot(process.out.versions).match("cram_to_bam_index_qname_versions") } - ) - } - } - - test("bam_stub") { - - options "-stub" - config "./bam_index.config" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true), - [] - ]) - input[1] = [[],[]] - input[2] = [] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(file(process.out.bam[0][1]).name).match("bam_stub_bam") }, - { assert snapshot(file(process.out.csi[0][1]).name).match("bam_stub_csi") }, - { assert snapshot(process.out.bai).match("bam_stub_bai") }, - { assert snapshot(process.out.crai).match("bam_stub_crai") }, - { assert snapshot(process.out.cram).match("bam_stub_cram") }, - { assert snapshot(process.out.sam).match("bam_stub_sam") }, - { assert snapshot(process.out.versions).match("bam_stub_versions") } - ) - } - } -} diff --git a/modules/nf-core/samtools/view/tests/main.nf.test.snap b/modules/nf-core/samtools/view/tests/main.nf.test.snap deleted file mode 100644 index 63849b03..00000000 --- a/modules/nf-core/samtools/view/tests/main.nf.test.snap +++ /dev/null @@ -1,528 +0,0 @@ -{ - "bam_bam": { - "content": [ - "test.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:37:51.256068" - }, - "cram_to_bam_index_csi": { - "content": [ - "test.bam.csi" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:12.958617" - }, - "bam_stub_bam": { - "content": [ - "test.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:32.065301" - }, - "bam_bai": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:37:51.258578" - }, - "bam_stub_bai": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:32.071284" - }, - "bam_stub_versions": { - "content": [ - [ - "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T09:26:24.461775464" - }, - "cram_to_bam_index_cram": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:12.972288" - }, - "cram_to_bam_sam": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:04.999247" - }, - "cram_to_bam_index_sam": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:12.976457" - }, - "cram_crai": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:37:56.497581" - }, - "cram_csi": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:37:56.50038" - }, - "cram_to_bam_cram": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:04.992239" - }, - "cram_to_bam_index_qname_csi": { - "content": [ - "test.bam.csi" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:23.325496" - }, - "bam_stub_sam": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:32.079529" - }, - "cram_cram": { - "content": [ - "test.cram" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:37:56.490286" - }, - "cram_to_bam_index_qname_unselected_csi": { - "content": [ - "test.unselected.bam.csi" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:23.328458" - }, - "bam_csi": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:37:51.262882" - }, - "cram_to_bam_crai": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:04.989247" - }, - "cram_to_bam_index_crai": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:12.967681" - }, - "cram_to_bam_index_qname_versions": { - "content": [ - [ - "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T09:25:51.953436682" - }, - "cram_to_bam_bam": { - "content": [ - "test.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:04.982361" - }, - "cram_to_bam_index_bam": { - "content": [ - "test.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:12.95456" - }, - "cram_to_bam_index_versions": { - "content": [ - [ - "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T09:25:14.475388399" - }, - "cram_to_bam_bai": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:04.98601" - }, - "cram_to_bam_versions": { - "content": [ - [ - "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T09:24:49.673441798" - }, - "cram_bam": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:37:56.495512" - }, - "bam_stub_cram": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:32.076908" - }, - "cram_to_bam_index_qname_bai": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:23.328458" - }, - "cram_to_bam_index_qname_crai": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:23.330789" - }, - "cram_bai": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:37:56.493129" - }, - "bam_stub_crai": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:32.074313" - }, - "cram_to_bam_index_qname_bam": { - "content": [ - "test.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:23.322874" - }, - "cram_to_bam_index_qname_unselected": { - "content": [ - "test.unselected.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:23.322874" - }, - "cram_to_bam_index_qname_unselected_csi": { - "content": [ - "test.unselected.bam.csi" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:23.328458" - }, - "bam_versions": { - "content": [ - [ - "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T09:23:27.151650338" - }, - "cram_to_bam_index_qname_cram": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:23.333248" - }, - "bam_crai": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:37:51.259774" - }, - "bam_cram": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:37:51.261287" - }, - "cram_to_bam_csi": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:04.995454" - }, - "cram_sam": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:37:56.502625" - }, - "cram_versions": { - "content": [ - [ - "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-16T09:24:12.95416913" - }, - "cram_to_bam_index_qname_unselected": { - "content": [ - "test.unselected.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:23.322874" - }, - "bam_sam": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:37:51.264651" - }, - "cram_to_bam_index_bai": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:12.962863" - }, - "cram_to_bam_index_qname_sam": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:23.337634" - }, - "bam_stub_csi": { - "content": [ - "test.bam.csi" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-12T19:38:32.068596" - } -} \ No newline at end of file diff --git a/modules/nf-core/samtools/view/tests/tags.yml b/modules/nf-core/samtools/view/tests/tags.yml deleted file mode 100644 index 4fdf1dd1..00000000 --- a/modules/nf-core/samtools/view/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/view: - - "modules/nf-core/samtools/view/**" diff --git a/modules/nf-core/seqkit/split2/main.nf b/modules/nf-core/seqkit/split2/main.nf index 60116a58..88a5397d 100644 --- a/modules/nf-core/seqkit/split2/main.nf +++ b/modules/nf-core/seqkit/split2/main.nf @@ -11,7 +11,7 @@ process SEQKIT_SPLIT2 { tuple val(meta), path(reads) output: - tuple val(meta), path("**/*.{fa,fasta,gz}"), emit: reads + tuple val(meta), path("${prefix}/*"), emit: reads path "versions.yml" , emit: versions when: @@ -19,17 +19,14 @@ process SEQKIT_SPLIT2 { script: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - - if ( !meta.single_end && meta.file_type == "fastq" ) { - + prefix = task.ext.prefix ?: "${meta.id}" + if (meta.single_end) { """ seqkit \\ split2 \\ $args \\ --threads $task.cpus \\ - --read1 ${reads[0]} \\ - --read2 ${reads[1]} \\ + $reads \\ --out-dir ${prefix} cat <<-END_VERSIONS > versions.yml @@ -43,7 +40,8 @@ process SEQKIT_SPLIT2 { split2 \\ $args \\ --threads $task.cpus \\ - $reads \\ + --read1 ${reads[0]} \\ + --read2 ${reads[1]} \\ --out-dir ${prefix} cat <<-END_VERSIONS > versions.yml @@ -54,12 +52,11 @@ process SEQKIT_SPLIT2 { } stub: - def prefix = task.ext.prefix ?: "${meta.id}" - if ( !meta.single_end && meta.file_type == "fastq" ) { + prefix = task.ext.prefix ?: "${meta.id}" + if (meta.single_end) { """ mkdir -p ${prefix} echo "" | gzip > ${prefix}/${reads[0]} - echo "" | gzip > ${prefix}/${reads[1]} cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -70,6 +67,7 @@ process SEQKIT_SPLIT2 { """ mkdir -p ${prefix} echo "" | gzip > ${prefix}/${reads[0]} + echo "" | gzip > ${prefix}/${reads[1]} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/seqkit/split2/meta.yml b/modules/nf-core/seqkit/split2/meta.yml index ad92f5df..01848593 100644 --- a/modules/nf-core/seqkit/split2/meta.yml +++ b/modules/nf-core/seqkit/split2/meta.yml @@ -1,9 +1,8 @@ name: seqkit_split2 -description: Split single or paired-end fastq.gz or fasta/fa files +description: Split single or paired-end fastq.gz files keywords: - split - fastq - - fasta - seqkit tools: - seqkit: @@ -22,29 +21,31 @@ input: e.g. [ id:'test', single_end:false ] - reads: type: file - description: FastQ files or FastA files - pattern: "*.{fq.gz/fastq.gz}" + description: FastQ files + pattern: "*.{f[aq].gz/fast[aq].gz}" + ontologies: [] output: - - reads: - - meta: + reads: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - "**/*.gz": + - ${prefix}/*: type: file description: Split fastq files - pattern: "*.{fq.gz/fastq.gz}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + pattern: "*.{f[aq][.gz]/fast[aq][.gz]}" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" - "@heuermh" - - "@yumisims" maintainers: - "@FriederikeHanssen" - "@heuermh" - - "@yumisims" diff --git a/modules/nf-core/seqkit/split2/seqkit-split2.diff b/modules/nf-core/seqkit/split2/seqkit-split2.diff deleted file mode 100644 index dd8056f9..00000000 --- a/modules/nf-core/seqkit/split2/seqkit-split2.diff +++ /dev/null @@ -1,118 +0,0 @@ -Changes in component 'nf-core/seqkit/split2' -Changes in 'seqkit/split2/meta.yml': ---- modules/nf-core/seqkit/split2/meta.yml -+++ modules/nf-core/seqkit/split2/meta.yml -@@ -1,8 +1,9 @@ - name: seqkit_split2 --description: Split single or paired-end fastq.gz files -+description: Split single or paired-end fastq.gz or fasta/fa files - keywords: - - split - - fastq -+ - fasta - - seqkit - tools: - - seqkit: -@@ -21,7 +22,7 @@ - e.g. [ id:'test', single_end:false ] - - reads: - type: file -- description: FastQ files -+ description: FastQ files or FastA files - pattern: "*.{fq.gz/fastq.gz}" - output: - - reads: -@@ -42,6 +43,8 @@ - authors: - - "@FriederikeHanssen" - - "@heuermh" -+ - "@yumisims" - maintainers: - - "@FriederikeHanssen" - - "@heuermh" -+ - "@yumisims" - -Changes in 'seqkit/split2/main.nf': ---- modules/nf-core/seqkit/split2/main.nf -+++ modules/nf-core/seqkit/split2/main.nf -@@ -11,7 +11,7 @@ - tuple val(meta), path(reads) - - output: -- tuple val(meta), path("**/*.gz"), emit: reads -+ tuple val(meta), path("**/*.{fa,fasta,gz}"), emit: reads - path "versions.yml" , emit: versions - - when: -@@ -20,21 +20,9 @@ - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" -- if (meta.single_end) { -- """ -- seqkit \\ -- split2 \\ -- $args \\ -- --threads $task.cpus \\ -- $reads \\ -- --out-dir ${prefix} -+ -+ if ( !meta.single_end && meta.file_type == "fastq" ) { - -- cat <<-END_VERSIONS > versions.yml -- "${task.process}": -- seqkit: \$(echo \$(seqkit 2>&1) | sed 's/^.*Version: //; s/ .*\$//') -- END_VERSIONS -- """ -- } else { - """ - seqkit \\ - split2 \\ -@@ -49,14 +37,29 @@ - seqkit: \$(echo \$(seqkit 2>&1) | sed 's/^.*Version: //; s/ .*\$//') - END_VERSIONS - """ -+ } else { -+ """ -+ seqkit \\ -+ split2 \\ -+ $args \\ -+ --threads $task.cpus \\ -+ $reads \\ -+ --out-dir ${prefix} -+ -+ cat <<-END_VERSIONS > versions.yml -+ "${task.process}": -+ seqkit: \$(echo \$(seqkit 2>&1) | sed 's/^.*Version: //; s/ .*\$//') -+ END_VERSIONS -+ """ - } - - stub: - def prefix = task.ext.prefix ?: "${meta.id}" -- if (meta.single_end) { -+ if ( !meta.single_end && meta.file_type == "fastq" ) { - """ - mkdir -p ${prefix} - echo "" | gzip > ${prefix}/${reads[0]} -+ echo "" | gzip > ${prefix}/${reads[1]} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": -@@ -67,7 +70,6 @@ - """ - mkdir -p ${prefix} - echo "" | gzip > ${prefix}/${reads[0]} -- echo "" | gzip > ${prefix}/${reads[1]} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - -'modules/nf-core/seqkit/split2/environment.yml' is unchanged -'modules/nf-core/seqkit/split2/tests/size.config' is unchanged -'modules/nf-core/seqkit/split2/tests/part.config' is unchanged -'modules/nf-core/seqkit/split2/tests/length.config' is unchanged -'modules/nf-core/seqkit/split2/tests/main.nf.test' is unchanged -'modules/nf-core/seqkit/split2/tests/tags.yml' is unchanged -'modules/nf-core/seqkit/split2/tests/main.nf.test.snap' is unchanged -************************************************************ diff --git a/modules/nf-core/seqkit/split2/tests/main.nf.test b/modules/nf-core/seqkit/split2/tests/main.nf.test index ea48154b..742bcddc 100644 --- a/modules/nf-core/seqkit/split2/tests/main.nf.test +++ b/modules/nf-core/seqkit/split2/tests/main.nf.test @@ -6,6 +6,7 @@ nextflow_process { tag "modules" tag "modules_nfcore" + tag "gunzip" tag "seqkit" tag "seqkit/split2" @@ -219,4 +220,37 @@ nextflow_process { } + test("single_end - length - no_compression") { + + config "./length.config" + + setup { + run("GUNZIP") { + script "../../../gunzip/main.nf" + process { + """ + input[0] = [ [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + ] + """ + } + } + } + + when { + process { + """ + input[0] = GUNZIP.out.gunzip + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } } diff --git a/modules/nf-core/seqkit/split2/tests/main.nf.test.snap b/modules/nf-core/seqkit/split2/tests/main.nf.test.snap index 2ed2c165..619c0309 100644 --- a/modules/nf-core/seqkit/split2/tests/main.nf.test.snap +++ b/modules/nf-core/seqkit/split2/tests/main.nf.test.snap @@ -200,9 +200,9 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.3" + "nextflow": "25.04.6" }, - "timestamp": "2025-01-15T16:15:25.267006" + "timestamp": "2025-10-22T15:35:32.360638952" }, "single_end - part - stub": { "content": [ @@ -233,11 +233,52 @@ ] } ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.6" + }, + "timestamp": "2025-10-22T15:35:12.246421385" + }, + "single_end - length - no_compression": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_1.part_001.fastq:md5,ffc87eb34d91d23ec9095bd8609a6a70", + "test_1.part_002.fastq:md5,8d71a0abe239e05e5c57c4d27c799a1d" + ] + ] + ], + "1": [ + "versions.yml:md5,f5d878e7143d05609ce5bb5974126990" + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_1.part_001.fastq:md5,ffc87eb34d91d23ec9095bd8609a6a70", + "test_1.part_002.fastq:md5,8d71a0abe239e05e5c57c4d27c799a1d" + ] + ] + ], + "versions": [ + "versions.yml:md5,f5d878e7143d05609ce5bb5974126990" + ] + } + ], "meta": { "nf-test": "0.9.2", "nextflow": "24.10.3" }, - "timestamp": "2025-01-15T16:15:11.624135" + "timestamp": "2025-01-15T16:14:49.713576" }, "single_end - length - stub": { "content": [ @@ -270,9 +311,9 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.3" + "nextflow": "25.04.6" }, - "timestamp": "2025-01-15T16:14:58.47365" + "timestamp": "2025-10-22T15:34:53.37273267" }, "paired_end - length": { "content": [ diff --git a/modules/nf-core/seqkit/split2/tests/tags.yml b/modules/nf-core/seqkit/split2/tests/tags.yml deleted file mode 100644 index cd4f5c4c..00000000 --- a/modules/nf-core/seqkit/split2/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -seqkit/split2: - - "modules/nf-core/seqkit/split2/**" diff --git a/modules/nf-core/seqtk/cutn/environment.yml b/modules/nf-core/seqtk/cutn/environment.yml index 693aa5c1..b1d11cbd 100644 --- a/modules/nf-core/seqtk/cutn/environment.yml +++ b/modules/nf-core/seqtk/cutn/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/seqtk/cutn/main.nf b/modules/nf-core/seqtk/cutn/main.nf index c2344a86..24005703 100644 --- a/modules/nf-core/seqtk/cutn/main.nf +++ b/modules/nf-core/seqtk/cutn/main.nf @@ -12,7 +12,7 @@ process SEQTK_CUTN { output: tuple val(meta), path("*.bed") , emit: bed - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('seqtk'), eval("seqtk 2>&1 | sed -n 's/^Version: //p'"), emit: versions_seqtk, topic: versions when: task.ext.when == null || task.ext.when @@ -27,11 +27,6 @@ process SEQTK_CUTN { $args \\ -g $fasta \\ > ${prefix}.bed - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - seqtk: \$(echo \$(seqtk 2>&1) | sed 's/^.*Version: //; s/ .*\$//') - END_VERSIONS """ stub: @@ -39,11 +34,6 @@ process SEQTK_CUTN { """ touch ${prefix}.bed - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - seqtk: \$(echo \$(seqtk 2>&1) | sed 's/^.*Version: //; s/ .*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/seqtk/cutn/meta.yml b/modules/nf-core/seqtk/cutn/meta.yml index 2e39a477..037d381f 100644 --- a/modules/nf-core/seqtk/cutn/meta.yml +++ b/modules/nf-core/seqtk/cutn/meta.yml @@ -6,9 +6,9 @@ keywords: - seqtk tools: - seqtk: - description: Seqtk is a fast and lightweight tool for processing sequences in - the FASTA or FASTQ format. Seqtk mergepe command merges pair-end reads into - one interleaved file. + description: Seqtk is a fast and lightweight tool for processing sequences + in the FASTA or FASTQ format. Seqtk mergepe command merges pair-end reads + into one interleaved file. homepage: https://github.com/lh3/seqtk documentation: https://docs.csc.fi/apps/seqtk/ tool_dev_url: https://github.com/lh3/seqtk @@ -24,9 +24,10 @@ input: type: file description: A single fasta file to be split. pattern: "*.{fasta}" + ontologies: [] output: - - bed: - - meta: + bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -35,11 +36,28 @@ output: type: file description: The output bed which summarised locations of cuts pattern: "*.{bed}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_seqtk: + - - ${task.process}: + type: string + description: The name of the process + - seqtk: + type: string + description: The name of the tool + - "seqtk 2>&1 | sed -n 's/^Version: //p'": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - seqtk: + type: string + description: The name of the tool + - "seqtk 2>&1 | sed -n 's/^Version: //p'": + type: eval + description: The expression to obtain the version of the tool authors: - "@DLBPointon" maintainers: diff --git a/modules/nf-core/seqtk/cutn/tests/main.nf.test.snap b/modules/nf-core/seqtk/cutn/tests/main.nf.test.snap index 998beda5..efafb560 100644 --- a/modules/nf-core/seqtk/cutn/tests/main.nf.test.snap +++ b/modules/nf-core/seqtk/cutn/tests/main.nf.test.snap @@ -3,6 +3,10 @@ "content": [ "test.bed" ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.10.2" + }, "timestamp": "2024-02-22T16:02:14.744148" }, "homo_21_cut_stub": { @@ -18,7 +22,11 @@ ] ], "1": [ - "versions.yml:md5,3da8ed2738f3c093d1e62d796fd76428" + [ + "SEQTK_CUTN", + "seqtk", + "1.4-r122" + ] ], "bed": [ [ @@ -29,12 +37,20 @@ "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,3da8ed2738f3c093d1e62d796fd76428" + "versions_seqtk": [ + [ + "SEQTK_CUTN", + "seqtk", + "1.4-r122" + ] ] } ], - "timestamp": "2024-02-22T16:02:23.596389" + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.10.2" + }, + "timestamp": "2026-01-14T13:16:52.871002273" }, "homo_21_cut": { "content": [ @@ -49,7 +65,11 @@ ] ], "1": [ - "versions.yml:md5,3da8ed2738f3c093d1e62d796fd76428" + [ + "SEQTK_CUTN", + "seqtk", + "1.4-r122" + ] ], "bed": [ [ @@ -60,11 +80,19 @@ "test.bed:md5,16cbba84e3a4bdbb52217afb5051f948" ] ], - "versions": [ - "versions.yml:md5,3da8ed2738f3c093d1e62d796fd76428" + "versions_seqtk": [ + [ + "SEQTK_CUTN", + "seqtk", + "1.4-r122" + ] ] } ], - "timestamp": "2024-02-22T16:02:14.695205" + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.10.2" + }, + "timestamp": "2026-01-14T13:16:38.948952544" } } \ No newline at end of file diff --git a/modules/nf-core/seqtk/cutn/tests/tags.yml b/modules/nf-core/seqtk/cutn/tests/tags.yml deleted file mode 100644 index 13c64cc3..00000000 --- a/modules/nf-core/seqtk/cutn/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -seqtk/cutn: - - "modules/nf-core/seqtk/cutn/**" diff --git a/modules/nf-core/tabix/bgziptabix/environment.yml b/modules/nf-core/tabix/bgziptabix/environment.yml index 017c259d..771b1387 100644 --- a/modules/nf-core/tabix/bgziptabix/environment.yml +++ b/modules/nf-core/tabix/bgziptabix/environment.yml @@ -1,7 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::htslib=1.20 - - bioconda::tabix=1.11 + - bioconda::htslib=1.21 diff --git a/modules/nf-core/tabix/bgziptabix/main.nf b/modules/nf-core/tabix/bgziptabix/main.nf index 22f37a77..30eae745 100644 --- a/modules/nf-core/tabix/bgziptabix/main.nf +++ b/modules/nf-core/tabix/bgziptabix/main.nf @@ -4,16 +4,16 @@ process TABIX_BGZIPTABIX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/htslib:1.20--h5efdd21_2' : - 'biocontainers/htslib:1.20--h5efdd21_2' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/92/92859404d861ae01afb87e2b789aebc71c0ab546397af890c7df74e4ee22c8dd/data' : + 'community.wave.seqera.io/library/htslib:1.21--ff8e28a189fbecaa' }" input: tuple val(meta), path(input) output: - tuple val(meta), path("*.gz"), path("*.tbi"), optional: true, emit: gz_tbi - tuple val(meta), path("*.gz"), path("*.csi"), optional: true, emit: gz_csi - path "versions.yml" , emit: versions + tuple val(meta), path("*.gz"), path("*.{tbi,csi}"), emit: gz_index + tuple val("${task.process}"), val('tabix'), eval("tabix -h 2>&1 | grep -oP 'Version:\\s*\\K[^\\s]+'") , topic: versions , emit: versions_tabix + tuple val("${task.process}"), val('bgzip'), eval("bgzip --version | sed '1!d;s/.* //'"), topic: versions, emit: versions_bgzip when: task.ext.when == null || task.ext.when @@ -23,13 +23,9 @@ process TABIX_BGZIPTABIX { def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ - bgzip --threads ${task.cpus} -c $args $input > ${prefix}.${input.getExtension()}.gz + bgzip --threads ${task.cpus} -c $args $input > ${prefix}.${input.getExtension()}.gz tabix --threads ${task.cpus} $args2 ${prefix}.${input.getExtension()}.gz - cat <<-END_VERSIONS > versions.yml - "${task.process}": - tabix: \$(echo \$(tabix -h 2>&1) | sed 's/^.*Version: //; s/ .*\$//') - END_VERSIONS """ stub: @@ -40,9 +36,5 @@ process TABIX_BGZIPTABIX { echo "" | gzip > ${prefix}.${input.getExtension()}.gz touch ${prefix}.${input.getExtension()}.gz.${index} - cat <<-END_VERSIONS > versions.yml - "${task.process}": - tabix: \$(echo \$(tabix -h 2>&1) | sed 's/^.*Version: //; s/ .*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/tabix/bgziptabix/meta.yml b/modules/nf-core/tabix/bgziptabix/meta.yml index 806fbc12..2a3078c5 100644 --- a/modules/nf-core/tabix/bgziptabix/meta.yml +++ b/modules/nf-core/tabix/bgziptabix/meta.yml @@ -1,5 +1,6 @@ name: tabix_bgziptabix -description: bgzip a sorted tab-delimited genome file and then create tabix index +description: bgzip a sorted tab-delimited genome file and then create tabix + index keywords: - bgzip - compress @@ -23,9 +24,10 @@ input: - input: type: file description: Sorted tab-delimited genome file + ontologies: [] output: - - gz_tbi: - - meta: + gz_index: + - - meta: type: map description: | Groovy Map containing sample information @@ -34,29 +36,55 @@ output: type: file description: bgzipped tab-delimited genome file pattern: "*.gz" - - "*.tbi": + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + - "*.{tbi,csi}": type: file - description: tabix index file - pattern: "*.tbi" - - gz_csi: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.gz": - type: file - description: bgzipped tab-delimited genome file - pattern: "*.gz" - - "*.csi": - type: file - description: csi index file - pattern: "*.csi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + description: Tabix index file (either tbi or csi) + pattern: "*.{tbi,csi}" + ontologies: [] + versions_tabix: + - - ${task.process}: + type: string + description: The process the versions were collected from + - tabix: + type: string + description: The tool name + - tabix -h 2>&1 | grep -oP 'Version:\s*\K[^\s]+': + type: eval + description: The expression to obtain the version of the tool + versions_bgzip: + - - ${task.process}: + type: string + description: The process the versions were collected from + - bgzip: + type: string + description: The tool name + - bgzip --version | sed '1!d;s/.* //': + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - tabix: + type: string + description: The tool name + - tabix -h 2>&1 | grep -oP 'Version:\s*\K[^\s]+': + type: eval + description: The expression to obtain the version of the tool + - - ${task.process}: + type: string + description: The process the versions were collected from + - bgzip: + type: string + description: The tool name + - bgzip --version | sed '1!d;s/.* //': + type: eval + description: The expression to obtain the version of the tool + authors: - "@maxulysse" - "@DLBPointon" diff --git a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test index 4d4130dc..1955b143 100644 --- a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test +++ b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_process { name "Test Process TABIX_BGZIPTABIX" - script "modules/nf-core/tabix/bgziptabix/main.nf" + script "../main.nf" process "TABIX_BGZIPTABIX" tag "modules" @@ -9,10 +9,13 @@ nextflow_process { tag "tabix" tag "tabix/bgziptabix" - test("sarscov2_bed_tbi") { - config "./tabix_tbi.config" + config "./nextflow.config" + test("sarscov2_bed_tbi") { when { + params { + module_args = '-p vcf' + } process { """ input[0] = [ @@ -26,19 +29,16 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, - { assert snapshot( - file(process.out.gz_tbi[0][1]).name - ).match("tbi_test") - } + { assert snapshot(process.out).match() } ) } } test("sarscov2_bed_csi") { - config "./tabix_csi.config" - when { + params { + module_args = '-p vcf --csi' + } process { """ input[0] = [ @@ -52,22 +52,19 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, - { assert snapshot( - file(process.out.gz_csi[0][1]).name - ).match("csi_test") - } + { assert snapshot(process.out).match() } ) } } test("sarscov2_bed_csi_stub") { - config "./tabix_csi.config" - options "-stub" when { + params { + module_args = '-p vcf --csi' + } process { """ input[0] = [ @@ -81,22 +78,19 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, - { assert snapshot( - file(process.out.gz_csi[0][1]).name - ).match("csi_stub") - } + { assert snapshot(process.out).match() } ) } } test("sarscov2_bed_tbi_stub") { - config "./tabix_tbi.config" - options "-stub" when { + params { + module_args = '-p vcf' + } process { """ input[0] = [ @@ -110,11 +104,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, - { assert snapshot( - file(process.out.gz_tbi[0][1]).name - ).match("tbi_stub") - } + { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap index fb87799b..cf3ce8aa 100644 --- a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap +++ b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap @@ -12,15 +12,20 @@ ] ], "1": [ - + [ + "TABIX_BGZIPTABIX", + "tabix", + "1.21" + ] ], "2": [ - "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" - ], - "gz_csi": [ - + [ + "TABIX_BGZIPTABIX", + "bgzip", + "1.21" + ] ], - "gz_tbi": [ + "gz_index": [ [ { "id": "tbi_test" @@ -29,24 +34,32 @@ "tbi_test.bed.gz.tbi:md5,ca06caf88b1e3c67d5fcba0a1460b52c" ] ], - "versions": [ - "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" + "versions_bgzip": [ + [ + "TABIX_BGZIPTABIX", + "bgzip", + "1.21" + ] + ], + "versions_tabix": [ + [ + "TABIX_BGZIPTABIX", + "tabix", + "1.21" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-19T11:29:16.053817543" + "timestamp": "2026-01-29T23:36:32.823417" }, "sarscov2_bed_csi": { "content": [ { "0": [ - - ], - "1": [ [ { "id": "csi_test" @@ -55,10 +68,21 @@ "csi_test.bed.gz.csi:md5,c9c0377de58fdc89672bb3005a0d69f5" ] ], + "1": [ + [ + "TABIX_BGZIPTABIX", + "tabix", + "1.21" + ] + ], "2": [ - "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" + [ + "TABIX_BGZIPTABIX", + "bgzip", + "1.21" + ] ], - "gz_csi": [ + "gz_index": [ [ { "id": "csi_test" @@ -67,29 +91,27 @@ "csi_test.bed.gz.csi:md5,c9c0377de58fdc89672bb3005a0d69f5" ] ], - "gz_tbi": [ - + "versions_bgzip": [ + [ + "TABIX_BGZIPTABIX", + "bgzip", + "1.21" + ] ], - "versions": [ - "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" + "versions_tabix": [ + [ + "TABIX_BGZIPTABIX", + "tabix", + "1.21" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-19T11:29:27.667745444" - }, - "csi_test": { - "content": [ - "csi_test.bed.gz" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-02-19T14:51:00.548801" + "timestamp": "2026-01-29T23:36:36.715208" }, "sarscov2_bed_tbi_stub": { "content": [ @@ -104,15 +126,20 @@ ] ], "1": [ - + [ + "TABIX_BGZIPTABIX", + "tabix", + "1.21" + ] ], "2": [ - "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" - ], - "gz_csi": [ - + [ + "TABIX_BGZIPTABIX", + "bgzip", + "1.21" + ] ], - "gz_tbi": [ + "gz_index": [ [ { "id": "test" @@ -121,54 +148,32 @@ "test.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" + "versions_bgzip": [ + [ + "TABIX_BGZIPTABIX", + "bgzip", + "1.21" + ] + ], + "versions_tabix": [ + [ + "TABIX_BGZIPTABIX", + "tabix", + "1.21" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-25T14:45:18.533169949" - }, - "csi_stub": { - "content": [ - "test.bed.gz" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-02-19T14:51:09.218454" - }, - "tbi_stub": { - "content": [ - "test.bed.gz" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-25T14:45:18.550930179" - }, - "tbi_test": { - "content": [ - "tbi_test.bed.gz" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-02-19T14:50:51.579654" + "timestamp": "2026-01-29T23:36:45.016007" }, "sarscov2_bed_csi_stub": { "content": [ { "0": [ - - ], - "1": [ [ { "id": "test" @@ -177,10 +182,21 @@ "test.bed.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "1": [ + [ + "TABIX_BGZIPTABIX", + "tabix", + "1.21" + ] + ], "2": [ - "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" + [ + "TABIX_BGZIPTABIX", + "bgzip", + "1.21" + ] ], - "gz_csi": [ + "gz_index": [ [ { "id": "test" @@ -189,18 +205,26 @@ "test.bed.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "gz_tbi": [ - + "versions_bgzip": [ + [ + "TABIX_BGZIPTABIX", + "bgzip", + "1.21" + ] ], - "versions": [ - "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" + "versions_tabix": [ + [ + "TABIX_BGZIPTABIX", + "tabix", + "1.21" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-09-25T14:44:19.786135972" + "timestamp": "2026-01-29T23:36:40.5401" } } \ No newline at end of file diff --git a/modules/nf-core/tabix/bgziptabix/tests/tabix_csi.config b/modules/nf-core/tabix/bgziptabix/tests/nextflow.config similarity index 56% rename from modules/nf-core/tabix/bgziptabix/tests/tabix_csi.config rename to modules/nf-core/tabix/bgziptabix/tests/nextflow.config index fb41a314..5b2316c8 100644 --- a/modules/nf-core/tabix/bgziptabix/tests/tabix_csi.config +++ b/modules/nf-core/tabix/bgziptabix/tests/nextflow.config @@ -1,5 +1,5 @@ process { withName: TABIX_BGZIPTABIX { - ext.args2 = '-p vcf --csi' + ext.args2 = params.module_args } } diff --git a/modules/nf-core/tabix/bgziptabix/tests/tabix_tbi.config b/modules/nf-core/tabix/bgziptabix/tests/tabix_tbi.config deleted file mode 100644 index c1915dc4..00000000 --- a/modules/nf-core/tabix/bgziptabix/tests/tabix_tbi.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: TABIX_BGZIPTABIX { - ext.args2 = '-p vcf' - } -} \ No newline at end of file diff --git a/modules/nf-core/tabix/bgziptabix/tests/tags.yml b/modules/nf-core/tabix/bgziptabix/tests/tags.yml deleted file mode 100644 index 5052b4d7..00000000 --- a/modules/nf-core/tabix/bgziptabix/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -tabix/bgziptabix: - - "modules/nf-core/tabix/bgziptabix/**" diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/environment.yml b/modules/nf-core/ucsc/bedgraphtobigwig/environment.yml index 27868a44..2e853e09 100644 --- a/modules/nf-core/ucsc/bedgraphtobigwig/environment.yml +++ b/modules/nf-core/ucsc/bedgraphtobigwig/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/main.nf b/modules/nf-core/ucsc/bedgraphtobigwig/main.nf index 81cdee95..f5bd3d52 100644 --- a/modules/nf-core/ucsc/bedgraphtobigwig/main.nf +++ b/modules/nf-core/ucsc/bedgraphtobigwig/main.nf @@ -2,7 +2,6 @@ process UCSC_BEDGRAPHTOBIGWIG { tag "$meta.id" label 'process_single' - // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ucsc-bedgraphtobigwig:469--h9b8f530_0' : @@ -14,7 +13,7 @@ process UCSC_BEDGRAPHTOBIGWIG { output: tuple val(meta), path("*.bigWig"), emit: bigwig - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('ucsc'), eval("echo $VERSION"), topic: versions, emit: versions_ucsc when: task.ext.when == null || task.ext.when @@ -22,28 +21,19 @@ process UCSC_BEDGRAPHTOBIGWIG { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def VERSION = '469' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + VERSION = '469' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ bedGraphToBigWig \\ + $args \\ $bedgraph \\ $sizes \\ ${prefix}.bigWig - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - ucsc: $VERSION - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" - def VERSION = '469' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + VERSION = '469' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ touch ${prefix}.bigWig - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - ucsc: $VERSION - END_VERSIONS """ } diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/meta.yml b/modules/nf-core/ucsc/bedgraphtobigwig/meta.yml index 5d42cbde..53d99c55 100755 --- a/modules/nf-core/ucsc/bedgraphtobigwig/meta.yml +++ b/modules/nf-core/ucsc/bedgraphtobigwig/meta.yml @@ -23,13 +23,15 @@ input: type: file description: bedGraph file pattern: "*.{bedGraph}" - - - sizes: - type: file - description: chromosome sizes file - pattern: "*.{sizes}" + ontologies: [] + - sizes: + type: file + description: chromosome sizes file + pattern: "*.{sizes}" + ontologies: [] output: - - bigwig: - - meta: + bigwig: + - - meta: type: map description: | Groovy Map containing sample information @@ -38,11 +40,30 @@ output: type: file description: bigWig file pattern: "*.{bigWig}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_ucsc: + - - ${task.process}: + type: string + description: The process the versions were collected from + - ucsc: + type: string + description: The tool name + - echo $VERSION: + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - ucsc: + type: string + description: The tool name + - echo $VERSION: + type: eval + description: The expression to obtain the version of the tool + authors: - "@drpatelh" maintainers: diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap index 7c731f65..8da5bd01 100644 --- a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap +++ b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ], "1": [ - "versions.yml:md5,db26514184acfdf220bb2f061382cf8c" + [ + "UCSC_BEDGRAPHTOBIGWIG", + "ucsc", + "469" + ] ], "bigwig": [ [ @@ -21,16 +25,20 @@ "test.bigWig:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,db26514184acfdf220bb2f061382cf8c" + "versions_ucsc": [ + [ + "UCSC_BEDGRAPHTOBIGWIG", + "ucsc", + "469" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-10-18T10:47:58.558813949" + "timestamp": "2026-01-19T14:08:59.289945641" }, "Should run without failures": { "content": [ @@ -44,7 +52,11 @@ ] ], "1": [ - "versions.yml:md5,db26514184acfdf220bb2f061382cf8c" + [ + "UCSC_BEDGRAPHTOBIGWIG", + "ucsc", + "469" + ] ], "bigwig": [ [ @@ -54,15 +66,19 @@ "test.bigWig:md5,910ecc7f57e3bbd5fac5a8edba4f615d" ] ], - "versions": [ - "versions.yml:md5,db26514184acfdf220bb2f061382cf8c" + "versions_ucsc": [ + [ + "UCSC_BEDGRAPHTOBIGWIG", + "ucsc", + "469" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-10-18T10:47:36.476844229" + "timestamp": "2026-01-19T14:08:54.132930562" } } \ No newline at end of file diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml b/modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml deleted file mode 100644 index 481e8b8b..00000000 --- a/modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -ucsc/bedgraphtobigwig: - - modules/nf-core/ucsc/bedgraphtobigwig/** diff --git a/modules/nf-core/ucsc/bedtobigbed/environment.yml b/modules/nf-core/ucsc/bedtobigbed/environment.yml index 62670c4e..d7b6802e 100644 --- a/modules/nf-core/ucsc/bedtobigbed/environment.yml +++ b/modules/nf-core/ucsc/bedtobigbed/environment.yml @@ -1,3 +1,5 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda diff --git a/modules/nf-core/ucsc/bedtobigbed/main.nf b/modules/nf-core/ucsc/bedtobigbed/main.nf index 9902560f..03b01688 100644 --- a/modules/nf-core/ucsc/bedtobigbed/main.nf +++ b/modules/nf-core/ucsc/bedtobigbed/main.nf @@ -33,6 +33,7 @@ process UCSC_BEDTOBIGBED { $args \\ ${prefix}.bigBed + cat <<-END_VERSIONS > versions.yml "${task.process}": ucsc: $VERSION diff --git a/modules/nf-core/ucsc/bedtobigbed/meta.yml b/modules/nf-core/ucsc/bedtobigbed/meta.yml index 6afc3148..b668fbc2 100755 --- a/modules/nf-core/ucsc/bedtobigbed/meta.yml +++ b/modules/nf-core/ucsc/bedtobigbed/meta.yml @@ -23,17 +23,20 @@ input: type: file description: bed file pattern: "*.{bed}" - - - sizes: - type: file - description: chromosome sizes file - pattern: "*.{sizes}" - - - autosql: - type: file - description: autoSql file to describe the columns of the BED file - pattern: "*.{as}" + ontologies: [] + - sizes: + type: file + description: chromosome sizes file + pattern: "*.{sizes}" + ontologies: [] + - autosql: + type: file + description: autoSql file to describe the columns of the BED file + pattern: "*.{as}" + ontologies: [] output: - - bigbed: - - meta: + bigbed: + - - meta: type: map description: | Groovy Map containing sample information @@ -42,11 +45,14 @@ output: type: file description: bigBed file pattern: "*.{bigBed}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" maintainers: diff --git a/modules/nf-core/ucsc/bedtobigbed/tests/main.nf.test b/modules/nf-core/ucsc/bedtobigbed/tests/main.nf.test new file mode 100644 index 00000000..d12333d1 --- /dev/null +++ b/modules/nf-core/ucsc/bedtobigbed/tests/main.nf.test @@ -0,0 +1,114 @@ +nextflow_process { + + name "Test Process UCSC_BEDTOBIGBED" + config "./nextflow.config" + script "../main.nf" + process "UCSC_BEDTOBIGBED" + + tag "modules" + tag "modules_nfcore" + tag "ucsc" + tag "ucsc/bedtobigbed" + + + + test("test_ucsc_bedtobigbed") { + + when { + params { + module_args = '' + } + process { + """ + input[0] = [[id:'test'],// meta map + [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed',checkIfExists:true)] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.sizes',checkIfExists:true) + input[2] = [] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + + + test("test_ucsc_bedtobigbed_autosql") { + + when { + params { + module_args = "-type=bed3+3" + } + process { + """ + input[0] = [[id:'test'],// meta map + [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed',checkIfExists:true)] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.sizes',checkIfExists:true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/bed6alt.as',checkIfExists:true) + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + + test("test_ucsc_bedtobigbed -- stub") { + options '-stub' + when { + params { + module_args = '' + } + process { + """ + input[0] = [[id:'test'],// meta map + [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed',checkIfExists:true)] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.sizes',checkIfExists:true) + input[2] = [] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + + test("test_ucsc_bedtobigbed_autosql -- stub") { + options '-stub' + when { + params { + module_args = "-type=bed3+3" + } + process { + """ + input[0] = [[id:'test'],// meta map + [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed',checkIfExists:true)] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.sizes',checkIfExists:true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/bed6alt.as',checkIfExists:true) + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/ucsc/bedtobigbed/tests/main.nf.test.snap b/modules/nf-core/ucsc/bedtobigbed/tests/main.nf.test.snap new file mode 100644 index 00000000..1f7802dd --- /dev/null +++ b/modules/nf-core/ucsc/bedtobigbed/tests/main.nf.test.snap @@ -0,0 +1,134 @@ +{ + "test_ucsc_bedtobigbed -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bigBed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,856c79a0d97bfd484d3d0130d302579a" + ], + "bigbed": [ + [ + { + "id": "test" + }, + "test.bigBed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,856c79a0d97bfd484d3d0130d302579a" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-03-26T04:00:23.122909774" + }, + "test_ucsc_bedtobigbed_autosql -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bigBed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,856c79a0d97bfd484d3d0130d302579a" + ], + "bigbed": [ + [ + { + "id": "test" + }, + "test.bigBed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,856c79a0d97bfd484d3d0130d302579a" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-03-26T04:00:35.79284886" + }, + "test_ucsc_bedtobigbed_autosql": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bigBed:md5,6dc69a14b95bcceee98e9e6b3c3def09" + ] + ], + "1": [ + "versions.yml:md5,856c79a0d97bfd484d3d0130d302579a" + ], + "bigbed": [ + [ + { + "id": "test" + }, + "test.bigBed:md5,6dc69a14b95bcceee98e9e6b3c3def09" + ] + ], + "versions": [ + "versions.yml:md5,856c79a0d97bfd484d3d0130d302579a" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-03-26T04:00:06.9299003" + }, + "test_ucsc_bedtobigbed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bigBed:md5,3c2400aab8f7a3ac333905c7484d9a24" + ] + ], + "1": [ + "versions.yml:md5,856c79a0d97bfd484d3d0130d302579a" + ], + "bigbed": [ + [ + { + "id": "test" + }, + "test.bigBed:md5,3c2400aab8f7a3ac333905c7484d9a24" + ] + ], + "versions": [ + "versions.yml:md5,856c79a0d97bfd484d3d0130d302579a" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-03-26T03:59:56.118791926" + } +} \ No newline at end of file diff --git a/modules/nf-core/ucsc/bedtobigbed/tests/nextflow.config b/modules/nf-core/ucsc/bedtobigbed/tests/nextflow.config new file mode 100644 index 00000000..b79d53f4 --- /dev/null +++ b/modules/nf-core/ucsc/bedtobigbed/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: "UCSC_BEDTOBIGBED" { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/windowmasker/mkcounts/environment.yml b/modules/nf-core/windowmasker/mkcounts/environment.yml index 777e097e..0a7e8e60 100644 --- a/modules/nf-core/windowmasker/mkcounts/environment.yml +++ b/modules/nf-core/windowmasker/mkcounts/environment.yml @@ -1,5 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::blast=2.15.0 + - bioconda::blast=2.17.0 diff --git a/modules/nf-core/windowmasker/mkcounts/main.nf b/modules/nf-core/windowmasker/mkcounts/main.nf index 406f7761..5a90c7e4 100644 --- a/modules/nf-core/windowmasker/mkcounts/main.nf +++ b/modules/nf-core/windowmasker/mkcounts/main.nf @@ -1,18 +1,18 @@ process WINDOWMASKER_MKCOUNTS { - tag "$meta.id" + 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/blast:2.15.0--pl5321h6f7f691_1': - 'biocontainers/blast:2.15.0--pl5321h6f7f691_1' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/0c/0c86cbb145786bf5c24ea7fb13448da5f7d5cd124fd4403c1da5bc8fc60c2588/data': + 'community.wave.seqera.io/library/blast:2.17.0--d4fb881691596759' }" input: tuple val(meta), path(ref) output: tuple val(meta), path("*.txt") , emit: counts - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('windowmasker'), eval("windowmasker -version-full | head -n 1 | sed 's/^.*windowmasker. //; s/ .*\$//'"), topic: versions, emit: versions_windowmasker when: task.ext.when == null || task.ext.when @@ -30,15 +30,10 @@ process WINDOWMASKER_MKCOUNTS { """ windowmasker -mk_counts \\ - $args \\ + ${args} \\ -mem ${memory} \\ -in ${ref} \\ -out ${prefix}.txt - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - windowmasker: \$(windowmasker -version-full | head -n 1 | sed 's/^.*windowmasker: //; s/ .*\$//') - END_VERSIONS """ stub: @@ -46,10 +41,5 @@ process WINDOWMASKER_MKCOUNTS { """ touch ${prefix}.txt - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - windowmasker: \$(windowmasker -version-full | head -n 1 | sed 's/^.*windowmasker: //; s/ .*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/windowmasker/mkcounts/meta.yml b/modules/nf-core/windowmasker/mkcounts/meta.yml index 825a0674..5ad302af 100644 --- a/modules/nf-core/windowmasker/mkcounts/meta.yml +++ b/modules/nf-core/windowmasker/mkcounts/meta.yml @@ -21,9 +21,10 @@ input: - ref: type: file description: An input nucleotide fasta file. + ontologies: [] output: - - counts: - - meta: + counts: + - - meta: type: map description: | Groovy Map containing sample information @@ -32,11 +33,28 @@ output: type: file description: A file containing frequency counts of repetitive units. pattern: "*.txt" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_windowmasker: + - - ${task.process}: + type: string + description: The name of the process + - windowmasker: + type: string + description: The name of the tool + - windowmasker -version-full | head -n 1 | sed 's/^.*windowmasker. //; s/ .*\$//': + type: string + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - windowmasker: + type: string + description: The name of the tool + - windowmasker -version-full | head -n 1 | sed 's/^.*windowmasker. //; s/ .*\$//': + type: eval + description: The expression to obtain the version of the tool authors: - "@DLBPointon" maintainers: diff --git a/modules/nf-core/windowmasker/mkcounts/tests/main.nf.test b/modules/nf-core/windowmasker/mkcounts/tests/main.nf.test index bf53d7fa..8352bcaa 100644 --- a/modules/nf-core/windowmasker/mkcounts/tests/main.nf.test +++ b/modules/nf-core/windowmasker/mkcounts/tests/main.nf.test @@ -12,10 +12,6 @@ nextflow_process { test("sarscov2_fasta") { when { - params { - // define parameters here. Example: - // outdir = "tests/results" - } process { """ input[0] = [ diff --git a/modules/nf-core/windowmasker/mkcounts/tests/main.nf.test.snap b/modules/nf-core/windowmasker/mkcounts/tests/main.nf.test.snap index cae2d306..eb95eddb 100644 --- a/modules/nf-core/windowmasker/mkcounts/tests/main.nf.test.snap +++ b/modules/nf-core/windowmasker/mkcounts/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ], "1": [ - "versions.yml:md5,57ae356f69298e25eb5d070900865cf2" + [ + "WINDOWMASKER_MKCOUNTS", + "windowmasker", + "1.0.0" + ] ], "counts": [ [ @@ -21,12 +25,20 @@ "test.txt:md5,5f5d7e926fdf13b0c57651f962cc1253" ] ], - "versions": [ - "versions.yml:md5,57ae356f69298e25eb5d070900865cf2" + "versions_windowmasker": [ + [ + "WINDOWMASKER_MKCOUNTS", + "windowmasker", + "1.0.0" + ] ] } ], - "timestamp": "2024-02-15T13:29:58.837482" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-02-16T12:29:24.977086238" }, "sarscov2_fasta_stub": { "content": [ @@ -40,7 +52,11 @@ ] ], "1": [ - "versions.yml:md5,57ae356f69298e25eb5d070900865cf2" + [ + "WINDOWMASKER_MKCOUNTS", + "windowmasker", + "1.0.0" + ] ], "counts": [ [ @@ -50,11 +66,19 @@ "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,57ae356f69298e25eb5d070900865cf2" + "versions_windowmasker": [ + [ + "WINDOWMASKER_MKCOUNTS", + "windowmasker", + "1.0.0" + ] ] } ], - "timestamp": "2024-02-15T13:30:07.618636" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-02-16T12:29:31.801768092" } } \ No newline at end of file diff --git a/modules/nf-core/windowmasker/mkcounts/tests/nextflow.config b/modules/nf-core/windowmasker/mkcounts/tests/nextflow.config deleted file mode 100644 index 65fc1910..00000000 --- a/modules/nf-core/windowmasker/mkcounts/tests/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: WINDOWMASKER_MKCOUNTS { - ext.args = "" - } -} \ No newline at end of file diff --git a/modules/nf-core/windowmasker/mkcounts/tests/tags.yml b/modules/nf-core/windowmasker/mkcounts/tests/tags.yml deleted file mode 100644 index 95c67635..00000000 --- a/modules/nf-core/windowmasker/mkcounts/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -windowmasker/mkcounts: - - "modules/nf-core/windowmasker/mkcounts/**" diff --git a/modules/nf-core/windowmasker/ustat/environment.yml b/modules/nf-core/windowmasker/ustat/environment.yml index 777e097e..0a7e8e60 100644 --- a/modules/nf-core/windowmasker/ustat/environment.yml +++ b/modules/nf-core/windowmasker/ustat/environment.yml @@ -1,5 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::blast=2.15.0 + - bioconda::blast=2.17.0 diff --git a/modules/nf-core/windowmasker/ustat/main.nf b/modules/nf-core/windowmasker/ustat/main.nf index 7a7d29f6..0385aeab 100644 --- a/modules/nf-core/windowmasker/ustat/main.nf +++ b/modules/nf-core/windowmasker/ustat/main.nf @@ -1,11 +1,11 @@ process WINDOWMASKER_USTAT { - tag "$meta.id" + 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/blast:2.15.0--pl5321h6f7f691_1': - 'biocontainers/blast:2.15.0--pl5321h6f7f691_1' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/0c/0c86cbb145786bf5c24ea7fb13448da5f7d5cd124fd4403c1da5bc8fc60c2588/data': + 'community.wave.seqera.io/library/blast:2.17.0--d4fb881691596759' }" input: tuple val(meta) , path(counts) @@ -13,7 +13,7 @@ process WINDOWMASKER_USTAT { output: tuple val(meta), path("${output}") , emit: intervals - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('windowmasker'), eval("windowmasker -version-full | head -n 1 | sed 's/^.*windowmasker. //; s/ .*\$//'"), topic: versions, emit: versions_windowmasker when: task.ext.when == null || task.ext.when @@ -35,14 +35,9 @@ process WINDOWMASKER_USTAT { """ windowmasker -ustat \\ ${counts} \\ - $args \\ + ${args} \\ -in ${ref} \\ -out ${output} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - windowmasker: \$(windowmasker -version-full | head -n 1 | sed 's/^.*windowmasker: //; s/ .*\$//') - END_VERSIONS """ stub: @@ -60,10 +55,5 @@ process WINDOWMASKER_USTAT { output = "${prefix}.${outfmt}" """ touch ${output} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - windowmasker: \$(windowmasker -version-full | head -n 1 | sed 's/^.*windowmasker: //; s/ .*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/windowmasker/ustat/meta.yml b/modules/nf-core/windowmasker/ustat/meta.yml index bc51a934..9f558efd 100644 --- a/modules/nf-core/windowmasker/ustat/meta.yml +++ b/modules/nf-core/windowmasker/ustat/meta.yml @@ -22,6 +22,7 @@ input: - counts: type: file description: Contains count data of repetitive regions. + ontologies: [] - - meta2: type: map description: | @@ -30,9 +31,10 @@ input: - ref: type: file description: An input nucleotide fasta file. + ontologies: [] output: - - intervals: - - meta: + intervals: + - - meta: type: map description: | Groovy Map containing sample information @@ -40,11 +42,28 @@ output: - ${output}: type: file description: intervals - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions_windowmasker: + - - ${task.process}: + type: string + description: The name of the process + - windowmasker: + type: string + description: The name of the tool + - windowmasker -version-full | head -n 1 | sed 's/^.*windowmasker. //; s/ .*\$//': + type: string + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - windowmasker: + type: string + description: The name of the tool + - windowmasker -version-full | head -n 1 | sed 's/^.*windowmasker. //; s/ .*\$//': + type: eval + description: The expression to obtain the version of the tool authors: - "@DLBPointon" maintainers: diff --git a/modules/nf-core/windowmasker/ustat/tests/main.nf.test.snap b/modules/nf-core/windowmasker/ustat/tests/main.nf.test.snap index 79d3d82d..0679a399 100644 --- a/modules/nf-core/windowmasker/ustat/tests/main.nf.test.snap +++ b/modules/nf-core/windowmasker/ustat/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ], "1": [ - "versions.yml:md5,d43f04bb181ac80da9ec79d9b49131cf" + [ + "WINDOWMASKER_USTAT", + "windowmasker", + "1.0.0" + ] ], "intervals": [ [ @@ -21,12 +25,20 @@ "test.interval:md5,c91346601564ab88cbb0f913881d05e2" ] ], - "versions": [ - "versions.yml:md5,d43f04bb181ac80da9ec79d9b49131cf" + "versions_windowmasker": [ + [ + "WINDOWMASKER_USTAT", + "windowmasker", + "1.0.0" + ] ] } ], - "timestamp": "2024-02-15T14:19:12.033774" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-02-16T12:29:57.79821227" }, "sarscov2_fasta_stub": { "content": [ @@ -40,7 +52,11 @@ ] ], "1": [ - "versions.yml:md5,d43f04bb181ac80da9ec79d9b49131cf" + [ + "WINDOWMASKER_USTAT", + "windowmasker", + "1.0.0" + ] ], "intervals": [ [ @@ -50,11 +66,19 @@ "test.interval:md5,c91346601564ab88cbb0f913881d05e2" ] ], - "versions": [ - "versions.yml:md5,d43f04bb181ac80da9ec79d9b49131cf" + "versions_windowmasker": [ + [ + "WINDOWMASKER_USTAT", + "windowmasker", + "1.0.0" + ] ] } ], - "timestamp": "2024-02-15T14:19:21.850526" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-02-16T12:30:06.750626869" } } \ No newline at end of file diff --git a/modules/nf-core/windowmasker/ustat/tests/nextflow.config b/modules/nf-core/windowmasker/ustat/tests/nextflow.config index 00b63c45..8f443ef7 100644 --- a/modules/nf-core/windowmasker/ustat/tests/nextflow.config +++ b/modules/nf-core/windowmasker/ustat/tests/nextflow.config @@ -2,4 +2,4 @@ process { withName: 'test_windowmasker_ustat:WINDOWMASKER_USTAT' { ext.args = "-dust true -outfmt interval" } -} \ No newline at end of file +} diff --git a/modules/nf-core/windowmasker/ustat/tests/tags.yml b/modules/nf-core/windowmasker/ustat/tests/tags.yml deleted file mode 100644 index 28c74ca9..00000000 --- a/modules/nf-core/windowmasker/ustat/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -windowmasker/ustat: - - "modules/nf-core/windowmasker/ustat/**" diff --git a/modules/nf-core/yahs/environment.yml b/modules/nf-core/yahs/environment.yml index cb2acec8..051b20b6 100644 --- a/modules/nf-core/yahs/environment.yml +++ b/modules/nf-core/yahs/environment.yml @@ -1,5 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::yahs=1.2a.2 + - bioconda::yahs=1.2.2 diff --git a/modules/nf-core/yahs/main.nf b/modules/nf-core/yahs/main.nf index 6475fd91..cb338ae8 100644 --- a/modules/nf-core/yahs/main.nf +++ b/modules/nf-core/yahs/main.nf @@ -1,51 +1,52 @@ process YAHS { - tag "$meta.id" + 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/yahs:1.2--he4a0461_1': - 'biocontainers/yahs:1.2--he4a0461_1' }" + 'https://depot.galaxyproject.org/singularity/yahs:1.2.2--h577a1d6_1': + 'biocontainers/yahs:1.2.2--h577a1d6_1' }" input: - tuple val(meta), path(hic_map) - path fasta - path fai + tuple val(meta), path(fasta), path(fai), path(hic_map), path(agp) output: - tuple val(meta), path("*scaffolds_final.fa") , emit: scaffolds_fasta, optional: true - tuple val(meta), path("*scaffolds_final.agp"), emit: scaffolds_agp, optional: true - tuple val(meta), path("*bin") , emit: binary - path "versions.yml" , emit: versions + // note: typo in yahs file outputs - it writes "inital", not "initial" + tuple val(meta), path("${prefix}_scaffolds_final.fa") , emit: scaffolds_fasta , optional: true + tuple val(meta), path("${prefix}_scaffolds_final.agp") , emit: scaffolds_agp , optional: true + tuple val(meta), path("${prefix}_{inital,no}_break*.agp"), emit: initial_break_agp , optional: true + tuple val(meta), path("${prefix}_r*_*.agp") , emit: round_agp , optional: true + tuple val(meta), path("${prefix}.bin") , emit: binary + tuple val(meta), path("${prefix}.log") , emit: log + tuple val("${task.process}"), val('yahs'), eval("yahs --version 2>&1"), emit: versions_yahs, topic: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + def agp_input = agp ? "-a ${agp}" : "" """ - yahs $args \\ - -o $prefix \\ - $fasta \\ - $hic_map - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - yahs: \$(yahs --version 2>&1) - END_VERSIONS + yahs \\ + -o ${prefix} \\ + ${agp_input} \\ + ${args} \\ + ${fasta} \\ + ${hic_map} \\ + 2>| >( tee ${prefix}.log >&2 ) """ stub: + prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}_scaffold_final.fa + touch ${prefix}_scaffolds_final.fa touch ${prefix}_scaffolds_final.agp + touch ${prefix}_inital_break_01.agp + touch ${prefix}_no_break.agp + touch ${prefix}_r01.agp + touch ${prefix}_r01_break.agp touch ${prefix}.bin - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - yahs: \$(yahs --version 2>&1) - END_VERSIONS + touch ${prefix}.log """ } diff --git a/modules/nf-core/yahs/meta.yml b/modules/nf-core/yahs/meta.yml index 38869045..3d06083c 100644 --- a/modules/nf-core/yahs/meta.yml +++ b/modules/nf-core/yahs/meta.yml @@ -12,65 +12,137 @@ tools: documentation: "https://github.com/c-zhou/yahs" tool_dev_url: "https://github.com/c-zhou/yahs" doi: "10.1093/bioinformatics/btac808" - licence: ["MIT"] + licence: + - "MIT" identifier: biotools:yahs input: - # Only when we have meta - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test' ] - - hic_map: - type: file - description: BED file containing coordinates of read alignments - pattern: "*.{bed,bam,bin}" - - - fasta: + - fasta: type: file description: FASTA reference file pattern: "*.{fasta,fa}" - - - fai: + ontologies: + - edam: http://edamontology.org/format_1929 + - fai: type: file description: index of the reference file pattern: "*.{fai}" + ontologies: + - edam: http://edamontology.org/format_3475 + - hic_map: + type: file + description: BED file containing coordinates of read alignments + pattern: "*.{bed,bam,bin}" + ontologies: + - edam: http://edamontology.org/format_3003 + - edam: http://edamontology.org/format_2572 + - agp: + type: file + description: | + Optional AGP file describing a set of scaffolds from the input contigs + to use as a start point + pattern: "*.agp" + ontologies: + - edam: http://edamontology.org/format_3693 output: - #Only when we have meta - - scaffolds_fasta: - - meta: + scaffolds_fasta: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test' ] - - "*scaffolds_final.fa": + - ${prefix}_scaffolds_final.fa: type: file description: FASTA file with resulting contigs - pattern: "*scaffolds_final.fa" - - scaffolds_agp: - - meta: + pattern: "${prefix}_scaffolds_final.fa" + ontologies: + - edam: http://edamontology.org/format_1929 + scaffolds_agp: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test' ] - - "*scaffolds_final.agp": + - ${prefix}_scaffolds_final.agp: type: file description: AGP file containing contigs placing coordinates - pattern: "*scaffolds_final.agp" - - binary: - - meta: + pattern: "${prefix}_scaffolds_final.agp" + ontologies: + - edam: http://edamontology.org/format_3693 + initial_break_agp: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test' ] - - "*bin": + - ${prefix}_{inital,no}_break*.agp: type: file - description: BIN file with alignment results of Hi-C reads to the contigs in - internal YaHS binary format - pattern: "*bin" - - versions: - - versions.yml: + description: AGP file describing initial contig breaks + pattern: "${prefix}_{inital,no}_break*.agp" + ontologies: + - edam: http://edamontology.org/format_3693 + round_agp: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - ${prefix}_r*_*.agp: + type: file + description: AGP file describing intermediate rounds of scaffolding + pattern: "${prefix}_{initial,no}_break*.agp" + ontologies: + - edam: http://edamontology.org/format_3693 + binary: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - ${prefix}.bin: + type: file + description: | + Binary data file with alignment results of Hi-C reads + to the contigs in internal YaHS binary format + pattern: "${prefix}.bin" + ontologies: [] + log: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - ${prefix}.log: type: file - description: File containing software versions - pattern: "versions.yml" + description: Log file describing YaHS run + pattern: "${prefix}.log" + ontologies: + - edam: "http://edamontology.org/format_2330" + versions_yahs: + - - ${task.process}: + type: string + description: The name of the process + - yahs: + type: string + description: The name of the tool + - yahs --version 2>&1: + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - yahs: + type: string + description: The name of the tool + - yahs --version 2>&1: + type: eval + description: The expression to obtain the version of the tool authors: - "@ksenia-krasheninnikova" maintainers: diff --git a/modules/nf-core/yahs/tests/main.nf.test b/modules/nf-core/yahs/tests/main.nf.test index ee53a110..e676604d 100644 --- a/modules/nf-core/yahs/tests/main.nf.test +++ b/modules/nf-core/yahs/tests/main.nf.test @@ -1,4 +1,3 @@ - nextflow_process { name "Test Process YAHS" @@ -9,36 +8,120 @@ nextflow_process { tag "modules" tag "modules_nfcore" tag "yahs" - tag "samtools/view" - setup { - run("SAMTOOLS_VIEW") { - script "../../samtools/view" + test("homo_sapiens - bam - fasta - fai") { + + when { + + params { + yahs_args = "" + } + process { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + """ + input[0] = [ + [ id: "test" ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), [] - ]) - input[1] = Channel.of([ - [ id:'genome' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ]) - input[2] = [] + ] """ } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.scaffolds_fasta, + process.out.scaffolds_agp, + process.out.initial_break_agp, + process.out.round_agp, + process.out.binary, + process.out.findAll { key, val -> key.startsWith("versions")}, + ).match() }, + { file(process.out.log.get(0).get(1)).readLines().last().contains("Real time") } + ) + } + } + + test("homo_sapiens - bam - fasta - fai - agp") { + + setup { + + run("YAHS", alias: "YAHS_INIT") { + script "../main.nf" + process { + """ + input[0] = [ + [ id: "test" ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + [] + ] + """ + } + } + + } + + when { + + params { + yahs_args = "--no-contig-ec" + } + + process { + """ + input[0] = channel.of( + [ + [ id: "test" ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + ] + ).combine(YAHS_INIT.out.scaffolds_agp, by: 0) + """ } } - test("homo_sapiens-bam-fasta-fai") { - + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.scaffolds_fasta, + process.out.scaffolds_agp, + process.out.initial_break_agp, + process.out.round_agp, + process.out.binary, + process.out.findAll { key, val -> key.startsWith("versions")}, + ).match() }, + { file(process.out.log.get(0).get(1)).readLines().last().contains("Real time") } + ) + } + } + + test("homo_sapiens - bam - fasta - fai - stub") { + + options "-stub" + when { + + params { + yahs_args = "" + } + process { """ - input[0] = SAMTOOLS_VIEW.out.bam - input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + input[0] = [ + [ id: "test" ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + [] + ] """ } } @@ -50,5 +133,6 @@ nextflow_process { ) } } - + + } diff --git a/modules/nf-core/yahs/tests/main.nf.test.snap b/modules/nf-core/yahs/tests/main.nf.test.snap index c62caa91..e41229da 100644 --- a/modules/nf-core/yahs/tests/main.nf.test.snap +++ b/modules/nf-core/yahs/tests/main.nf.test.snap @@ -1,37 +1,230 @@ { - "homo_sapiens-bam-fasta-fai": { + "homo_sapiens - bam - fasta - fai - stub": { "content": [ { "0": [ - + [ + { + "id": "test" + }, + "test_scaffolds_final.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "1": [ - + [ + { + "id": "test" + }, + "test_scaffolds_final.agp:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "2": [ - + [ + { + "id": "test" + }, + [ + "test_inital_break_01.agp:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_no_break.agp:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] ], "3": [ - + [ + { + "id": "test" + }, + "test_r01_break.agp:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + "YAHS", + "yahs", + "1.2.2" + ] ], "binary": [ - + [ + { + "id": "test" + }, + "test.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "initial_break_agp": [ + [ + { + "id": "test" + }, + [ + "test_inital_break_01.agp:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_no_break.agp:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "log": [ + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "round_agp": [ + [ + { + "id": "test" + }, + "test_r01_break.agp:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "scaffolds_agp": [ - + [ + { + "id": "test" + }, + "test_scaffolds_final.agp:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "scaffolds_fasta": [ - + [ + { + "id": "test" + }, + "test_scaffolds_final.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], - "versions": [ - + "versions_yahs": [ + [ + "YAHS", + "yahs", + "1.2.2" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T13:13:16.431723" + }, + "homo_sapiens - bam - fasta - fai": { + "content": [ + [ + [ + { + "id": "test" + }, + "test_scaffolds_final.fa:md5,a767604036a4cd6980ebd24f11e4dd95" + ] + ], + [ + [ + { + "id": "test" + }, + "test_scaffolds_final.agp:md5,374235b079d9e1c738c6f12697029b78" + ] + ], + [ + [ + { + "id": "test" + }, + "test_inital_break_01.agp:md5,374235b079d9e1c738c6f12697029b78" + ] + ], + [ + + ], + [ + [ + { + "id": "test" + }, + "test.bin:md5,da45a2ec8a97fc24783e9a63373db379" + ] + ], + { + "versions_yahs": [ + [ + "YAHS", + "yahs", + "1.2.2" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T13:13:08.310976" + }, + "homo_sapiens - bam - fasta - fai - agp": { + "content": [ + [ + [ + { + "id": "test" + }, + "test_scaffolds_final.fa:md5,a767604036a4cd6980ebd24f11e4dd95" + ] + ], + [ + [ + { + "id": "test" + }, + "test_scaffolds_final.agp:md5,374235b079d9e1c738c6f12697029b78" + ] + ], + [ + + ], + [ + + ], + [ + [ + { + "id": "test" + }, + "test.bin:md5,da45a2ec8a97fc24783e9a63373db379" + ] + ], + { + "versions_yahs": [ + [ + "YAHS", + "yahs", + "1.2.2" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-09-26T22:35:24.103271222" + "timestamp": "2026-02-10T13:13:12.93575" } } \ No newline at end of file diff --git a/modules/nf-core/yahs/tests/nextflow.config b/modules/nf-core/yahs/tests/nextflow.config index 1691f241..15279238 100644 --- a/modules/nf-core/yahs/tests/nextflow.config +++ b/modules/nf-core/yahs/tests/nextflow.config @@ -1,6 +1,10 @@ process { - withName: 'test_yahs:YAHS' { - ext.prefix = { "${meta.id}" } - ext.args = '--no-contig-ec' + + withName: 'YAHS' { + ext.args = params.yahs_args + } + + withName: 'YAHS_INIT' { + ext.args = params.yahs_args } } diff --git a/subworkflows/local/ancestral_gene/main.nf b/subworkflows/local/ancestral_gene/main.nf index f4b63ac2..98055158 100755 --- a/subworkflows/local/ancestral_gene/main.nf +++ b/subworkflows/local/ancestral_gene/main.nf @@ -16,7 +16,7 @@ workflow ANCESTRAL_GENE { ancestral_table // Channel: val(ancestral_table location) main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // MODULE: EXTRACTS ANCESTRALLY LINKED BUSCO GENES FROM FULL TABLE @@ -43,14 +43,13 @@ workflow ANCESTRAL_GENE { ASSIGN_ANCESTRAL.out.assigned_bed, [] ) - ch_versions = ch_versions.mix(BEDTOOLS_SORT.out.versions) // // MODULES: CONVERT BED TO INDEXED BIGBED // UCSC_BEDTOBIGBED( BEDTOOLS_SORT.out.sorted, - dot_genome.map{ it[1] }, // Pull file from tuple(meta, file) + dot_genome.map{ _meta, file -> file }, // Pull file from tuple(meta, file) buscogene_as ) ch_versions = ch_versions.mix(UCSC_BEDTOBIGBED.out.versions) diff --git a/subworkflows/local/busco_annotation/main.nf b/subworkflows/local/busco_annotation/main.nf index 3281c255..7e38347c 100755 --- a/subworkflows/local/busco_annotation/main.nf +++ b/subworkflows/local/busco_annotation/main.nf @@ -28,7 +28,7 @@ workflow BUSCO_ANNOTATION { ancestral_table // Channel: val(ancestral_table location) main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // MODULE: RUN BUSCO TO OBTAIN FULL_TABLE.CSV @@ -39,12 +39,11 @@ workflow BUSCO_ANNOTATION { "genome", lineageinfo, lineagespath, - [] + [], + false ) - ch_versions = ch_versions.mix(BUSCO_BUSCO.out.versions.first()) ch_busco_full_table = BUSCO_BUSCO.out.busco_dir.map { meta, dir -> tuple(meta, files(dir.resolve("*/*/full_table.tsv"), checkIfExists: true)) } - // // MODULE: EXTRACT THE BUSCO GENES FOUND IN REFERENCE // @@ -53,7 +52,6 @@ workflow BUSCO_ANNOTATION { file("${projectDir}/bin/get_busco_gene.awk"), false ) - ch_versions = ch_versions.mix( GAWK_EXTRACT_BUSCOGENE.out.versions ) // @@ -68,6 +66,8 @@ workflow BUSCO_ANNOTATION { ) } .set { bedtools_input } + + // // MODULE: SORT THE EXTRACTED BUSCO GENE // @@ -75,17 +75,17 @@ workflow BUSCO_ANNOTATION { bedtools_input, [] ) - ch_versions = ch_versions.mix( BEDTOOLS_SORT.out.versions ) + // // MODULE: CONVERT THE BED TO BIGBED // UCSC_BEDTOBIGBED( BEDTOOLS_SORT.out.sorted, - dot_genome.map{it[1]}, // Gets file from tuple (meta, file) + dot_genome.map{ _meta, file -> file }, // Gets file from tuple (meta, file) buscogene_as ) - ch_versions = ch_versions.mix( UCSC_BEDTOBIGBED.out.versions ) + ch_versions = ch_versions.mix( UCSC_BEDTOBIGBED.out.versions ) // // SUBWORKFLOW: RUN ANCESTRAL BUSCO ID (ONLY AVAILABLE FOR LEPIDOPTERA) @@ -110,7 +110,7 @@ workflow BUSCO_ANNOTATION { buscogene_as, ch_busco_lep_data.atable ) - ch_versions = ch_versions.mix( ANCESTRAL_GENE.out.versions ) + ch_versions = ch_versions.mix( ANCESTRAL_GENE.out.versions ) emit: ch_buscogene_bigbed = UCSC_BEDTOBIGBED.out.bigbed diff --git a/subworkflows/local/gap_finder/main.nf b/subworkflows/local/gap_finder/main.nf index 55570259..ac16aa9d 100755 --- a/subworkflows/local/gap_finder/main.nf +++ b/subworkflows/local/gap_finder/main.nf @@ -12,7 +12,6 @@ workflow GAP_FINDER { reference_tuple // Channel: tuple [ val(meta), path(fasta) ] main: - ch_versions = Channel.empty() // // MODULE: GENERATES A GAP SUMMARY FILE @@ -20,7 +19,6 @@ workflow GAP_FINDER { SEQTK_CUTN ( reference_tuple ) - ch_versions = ch_versions.mix( SEQTK_CUTN.out.versions ) // // MODULE: ADD THE LENGTH OF GAP TO BED FILE - INPUT FOR PRETEXT MODULE @@ -30,7 +28,6 @@ workflow GAP_FINDER { file("${projectDir}/bin/gawk_gap_length.awk"), false ) - ch_versions = ch_versions.mix( GAWK_GAP_LENGTH.out.versions ) // // MODULE: BGZIP AND TABIX THE GAP FILE @@ -38,10 +35,8 @@ workflow GAP_FINDER { TABIX_BGZIPTABIX ( SEQTK_CUTN.out.bed ) - ch_versions = ch_versions.mix( TABIX_BGZIPTABIX.out.versions ) emit: gap_file = GAWK_GAP_LENGTH.out.output - gap_tabix = TABIX_BGZIPTABIX.out.gz_csi - versions = ch_versions + gap_tabix = TABIX_BGZIPTABIX.out.gz_index } diff --git a/subworkflows/local/gene_alignment/main.nf b/subworkflows/local/gene_alignment/main.nf index 96c48ff3..3b0e0614 100755 --- a/subworkflows/local/gene_alignment/main.nf +++ b/subworkflows/local/gene_alignment/main.nf @@ -20,17 +20,9 @@ workflow GENE_ALIGNMENT { reference_index // Channel: [ val(meta), path(file) ] alignment_genesets // Channel: [ path(geneset_csv) ] intron_size // Channel: val(50k) - as_files // Channel: [ val(meta), path(file) ] main: - ch_versions = Channel.empty() - - reference_tuple - .map{ meta, file -> - "${meta.class}" - } - .set { assembly_class } - + ch_versions = channel.empty() // // LOGIC: TAKES A SINGLE LIKE CSV STRING AND CONVERTS TO LIST OF VALUES @@ -41,7 +33,7 @@ workflow GENE_ALIGNMENT { .flatten() // - // LOGIC: COMBINE CH_DATA WITH ALIGNMENT_DIR AND ASSEMBLY_CLASS + // LOGIC: COMBINE CH_DATA WITH ALIGNMENT_DIR // CONVERTS THESE VALUES INTO A PATH AND DOWNLOADS IT, THEN TURNS IT TO A TUPLE OF // [ [ META.ID, META.TYPE, META.ORG ], GENE_ALIGNMENT_FILE ] // DATA IS THEN BRANCHED BASED ON META.TYPE TO THE APPROPRIATE @@ -61,11 +53,11 @@ workflow GENE_ALIGNMENT { ], data_file )} - .branch { - pep: it[0].type == 'pep' - gen: it[0].type == 'cdna' - rna: it[0].type == 'rna' - cds: it[0].type == 'cds' + .branch { meta, _file -> + pep: meta.type == 'pep' + gen: meta.type == 'cdna' + rna: meta.type == 'rna' + cds: meta.type == 'cds' } .set {ch_alignment_data} diff --git a/subworkflows/local/generate_genome/main.nf b/subworkflows/local/generate_genome/main.nf index c1ee9076..f9ca7f54 100755 --- a/subworkflows/local/generate_genome/main.nf +++ b/subworkflows/local/generate_genome/main.nf @@ -1,10 +1,5 @@ #!/usr/bin/env nextflow -// -// MODULE IMPORT BLOCK -// -include { GET_LARGEST_SCAFFOLD } from '../../../modules/local/get/largest_scaffold/main' - // // SUBWORKFLOW IMPORT BLOCK // @@ -17,41 +12,40 @@ workflow GENERATE_GENOME { map_order // Channel: val main: - ch_versions = Channel.empty() - ch_genomesize = Channel.empty() - ch_genome_fai = Channel.empty() + ch_genomesize = channel.empty() + ch_genome_fai = channel.empty() + // // MODULE: GENERATE INDEX OF REFERENCE // EMITS REFERENCE INDEX FILE MODIFIED FOR SCAFF SIZES // - reference_file .combine(map_order) - .map{ ref_meta, ref, map_order -> + .map{ ref_meta, ref, map_order_input -> tuple( [ id: ref_meta.id, - map_order :map_order + map_order :map_order_input ], ref ) } - .branch{ - sorted : it[0].map_order == "length" - unsorted : it[0].map_order != "length" + .branch{ meta, _ref -> + sorted : meta.map_order == "length" + unsorted : meta.map_order != "length" } .set{ch_genomesize_input} + // // SUBWORKFLOW: GENERATE CHROMOSOME SIZES FILE RANKED BY LENGTH (DEFINED BY USER) // GENERATE_SORTED_GENOME ( ch_genomesize_input.sorted ) - ch_versions = ch_versions.mix( GENERATE_SORTED_GENOME.out.versions ) ch_genomesize = GENERATE_SORTED_GENOME.out.genomesize ch_genome_fai = GENERATE_SORTED_GENOME.out.ref_index - ch_versions = GENERATE_SORTED_GENOME.out.versions + // // SUBWORKFLOW: GENERATE UNSORTED CHROMOSOME SIZES FILE (DEFINED BY USER) @@ -59,24 +53,11 @@ workflow GENERATE_GENOME { GENERATE_UNSORTED_GENOME ( ch_genomesize_input.unsorted ) - ch_versions = ch_versions.mix( GENERATE_UNSORTED_GENOME.out.versions ) ch_genomesize = ch_genomesize.mix( GENERATE_UNSORTED_GENOME.out.genomesize ) ch_genome_fai = ch_genome_fai.mix( GENERATE_UNSORTED_GENOME.out.ref_index ) - ch_versions = GENERATE_UNSORTED_GENOME.out.versions - - // - // MODULE: Cut out the largest scaffold size and use as comparator against 512MB - // This is the cut off for TABIX using tbi indexes - // - GET_LARGEST_SCAFFOLD ( - ch_genomesize - ) - ch_versions = ch_versions.mix( GET_LARGEST_SCAFFOLD.out.versions ) emit: - max_scaff_size = GET_LARGEST_SCAFFOLD.out.scaff_size.toInteger() dot_genome = ch_genomesize ref_index = ch_genome_fai ref = reference_file - versions = ch_versions } diff --git a/subworkflows/local/generate_sorted_genome/main.nf b/subworkflows/local/generate_sorted_genome/main.nf index 024fc047..5d13f2f8 100755 --- a/subworkflows/local/generate_sorted_genome/main.nf +++ b/subworkflows/local/generate_sorted_genome/main.nf @@ -3,7 +3,7 @@ // // MODULE IMPORT BLOCK // -include { CUSTOM_GETCHROMSIZES } from '../../../modules/nf-core/custom/getchromsizes/main' +include { SAMTOOLS_FAIDX } from '../../../modules/nf-core/samtools/faidx/main' include { GNU_SORT } from '../../../modules/nf-core/gnu/sort' workflow GENERATE_SORTED_GENOME { @@ -11,23 +11,46 @@ workflow GENERATE_SORTED_GENOME { reference_file // Channel: path(file) main: - ch_versions = Channel.empty() - genome_size = Channel.empty() - CUSTOM_GETCHROMSIZES ( - reference_file, - "unsorted.genome" - ) - ch_versions = ch_versions.mix( CUSTOM_GETCHROMSIZES.out.versions ) - genome_size = CUSTOM_GETCHROMSIZES.out.sizes + reference_file + .map { ref_meta, ref -> + tuple( ref_meta, ref, [] ) + } + .set { ch_faidx_input } + + // + // MODULE: INDEX THE INPUT FASTA + // + SAMTOOLS_FAIDX ( + ch_faidx_input, + true // get sizes + ) + + SAMTOOLS_FAIDX.out.sizes + .view{"SIZES: $it"} + + // + // MODULE: SORT THE SIZES FILE + // GNU_SORT ( - CUSTOM_GETCHROMSIZES.out.sizes - ) - ch_versions = ch_versions.mix( GNU_SORT.out.versions ) + SAMTOOLS_FAIDX.out.sizes + ) + + + // + // LOGIC: RENAME THE SORTED SIZES FILE + // + // GNU_SORT.out.sorted + // .map { meta, sizes -> + // tuple( + // meta, + // file(sizes).copyTo("${meta.id}.sorted.genome") + // ) + // } + // .set { ch_sizes } emit: genomesize = GNU_SORT.out.sorted - ref_index = CUSTOM_GETCHROMSIZES.out.fai - versions = ch_versions + ref_index = SAMTOOLS_FAIDX.out.fai } diff --git a/subworkflows/local/generate_unsorted_genome/main.nf b/subworkflows/local/generate_unsorted_genome/main.nf index dfe06082..1213941e 100755 --- a/subworkflows/local/generate_unsorted_genome/main.nf +++ b/subworkflows/local/generate_unsorted_genome/main.nf @@ -3,25 +3,44 @@ // // MODULE IMPORT BLOCK // -include { CUSTOM_GETCHROMSIZES } from '../../../modules/nf-core/custom/getchromsizes/main' +include { SAMTOOLS_FAIDX } from '../../../modules/nf-core/samtools/faidx/main' workflow GENERATE_UNSORTED_GENOME { take: reference_file // Channel: path(file) main: - ch_versions = Channel.empty() - genome_size = Channel.empty() - CUSTOM_GETCHROMSIZES ( - reference_file, - "unsorted.genome" - ) - ch_versions = ch_versions.mix( CUSTOM_GETCHROMSIZES.out.versions ) + reference_file + .map { ref_meta, ref -> + tuple( ref_meta, ref, [] ) + } + .set { ch_faidx_input } + + + // + // MODULE: INDEX THE INPUT FASTA + // + SAMTOOLS_FAIDX ( + ch_faidx_input, + true // get sizes + ) - emit: - genomesize = CUSTOM_GETCHROMSIZES.out.sizes - ref_index = CUSTOM_GETCHROMSIZES.out.fai - versions = ch_versions + // + // LOGIC: RENAME THE SORTED SIZES FILE + // + SAMTOOLS_FAIDX.out.sizes + .map { meta, sizes -> + tuple( + meta, + file(sizes).moveTo("${meta.id}.unsorted.genome") + ) + } + .set { ch_sizes } + + + emit: + genomesize = ch_sizes + ref_index = SAMTOOLS_FAIDX.out.fai } diff --git a/subworkflows/local/hic_bamtobed/main.nf b/subworkflows/local/hic_bamtobed/main.nf index a8037c90..d4cfdeda 100755 --- a/subworkflows/local/hic_bamtobed/main.nf +++ b/subworkflows/local/hic_bamtobed/main.nf @@ -19,16 +19,15 @@ workflow HIC_BAMTOBED { reference_tuple // Channel: tuple [ val(meta), path( file ) ] main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // MODULE: MERGE POSITION SORTED BAM FILES AND MARK DUPLICATES // SAMTOOLS_MARKDUP ( bam_file, - reference_tuple + reference_tuple.map{ meta, fasta -> [meta, fasta, []]} ) - ch_versions = ch_versions.mix ( SAMTOOLS_MARKDUP.out.versions ) // // MODULE: SAMTOOLS FILTER OUT DUPLICATE READS | BAMTOBED | SORT BED FILE diff --git a/subworkflows/local/hic_bwamem2/main.nf b/subworkflows/local/hic_bwamem2/main.nf index d342711b..45539506 100755 --- a/subworkflows/local/hic_bwamem2/main.nf +++ b/subworkflows/local/hic_bwamem2/main.nf @@ -19,19 +19,18 @@ workflow HIC_BWAMEM2 { reference_index main: - ch_versions = Channel.empty() - mappedbam_ch = Channel.empty() + ch_versions = channel.empty() + mappedbam_ch = channel.empty() BWAMEM2_INDEX ( reference_tuple ) - ch_versions = ch_versions.mix( BWAMEM2_INDEX.out.versions ) csv_ch .splitCsv() .combine ( reference_tuple ) .combine ( BWAMEM2_INDEX.out.index ) - .map{ cram_id, cram_info, ref_id, ref_dir, bwa_id, bwa_path -> + .map{ cram_id, cram_info, _ref_id, ref_dir, _bwa_id, bwa_path -> tuple([ id: cram_id.id ], @@ -62,7 +61,7 @@ workflow HIC_BWAMEM2 { // LOGIC: PREPARING BAMS FOR MERGE // mappedbam_ch - .map{ meta, file -> + .map{ _meta, file -> tuple( file ) } .collect() @@ -76,16 +75,27 @@ workflow HIC_BWAMEM2 { } .set { collected_files_for_merge } + // + // LOGIC: PREPARING REFERENCE FOR MERGE + // + reference_tuple + .combine ( reference_index ) + .map{ _ref_meta, ref, _ref_index_meta, ref_index -> + tuple( + [id: _ref_meta.id], + ref, + ref_index, + []) + } + .set { reference_for_merge } + // // MODULE: MERGE POSITION SORTED BAM FILES AND MARK DUPLICATES // SAMTOOLS_MERGE ( collected_files_for_merge, - reference_tuple, - reference_index + reference_for_merge ) - ch_versions = ch_versions.mix ( SAMTOOLS_MERGE.out.versions.first() ) - emit: mergedbam = SAMTOOLS_MERGE.out.bam diff --git a/subworkflows/local/hic_mapping/main.nf b/subworkflows/local/hic_mapping/main.nf index 4881109b..d13be78e 100755 --- a/subworkflows/local/hic_mapping/main.nf +++ b/subworkflows/local/hic_mapping/main.nf @@ -14,7 +14,7 @@ include { PRETEXTMAP as PRETEXTMAP_STANDRD } from '../../../modul include { PRETEXTMAP as PRETEXTMAP_HIGHRES } from '../../../modules/nf-core/pretextmap/main' include { PRETEXTSNAPSHOT as SNAPSHOT_SRES } from '../../../modules/nf-core/pretextsnapshot/main' include { GENERATE_CRAM_CSV } from '../../../modules/local/generate/cram_csv/main' -include { JUICER_TOOLS_PRE } from '../../../modules/local/juicer/tools_pre/main' +include { JUICERTOOLS_PRE } from '../../../modules/nf-core/juicertools/pre/main' include { SUBSAMPLE_BAM } from '../../../modules/local/subsample/bam/main' include { PRETEXT_GRAPH as PRETEXT_INGEST_SNDRD } from '../../../modules/local/pretext/graph/main' include { PRETEXT_GRAPH as PRETEXT_INGEST_HIRES } from '../../../modules/local/pretext/graph/main' @@ -34,7 +34,6 @@ workflow HIC_MAPPING { reference_index // Channel: tuple [ val(meta), path( file ) ] dot_genome // Channel: tuple [ val(meta), path( datafile ) ] hic_reads_path // Channel: tuple [ val(meta), path( directory ) ] - assembly_id // Channel: val( id ) gap_file // Channel: tuple [ val(meta), path( file ) ] coverage_file // Channel: tuple [ val(meta), path( file ) ] telo_file // Channel: tuple [ val(meta), path( file ) ] @@ -42,15 +41,15 @@ workflow HIC_MAPPING { workflow_setting // string: Run mode (FULL, RAPID, RAPID_TOL, etc.) binfile // boolean: Generate bin file using YAHS juicer // boolean: Generate .hic file using Juicer - run_hires // boolean: Generate high resolution pretext maps + _run_hires // boolean: Generate high resolution pretext maps main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // COMMENT: 1000bp BIN SIZE INTERVALS FOR CLOAD // - ch_cool_bin = Channel.of( 1000 ) + ch_cool_bin = channel.of( 1000 ) // @@ -58,10 +57,10 @@ workflow HIC_MAPPING { // reference_tuple .combine( hic_reads_path ) - .map { meta, ref, hic_meta, hic_reads_path -> + .map { meta, _ref, _hic_meta, hic_reads_path_input -> tuple( [ id: meta.id, single_end: true], - hic_reads_path + hic_reads_path_input ) } .set { get_reads_input } @@ -80,15 +79,15 @@ workflow HIC_MAPPING { // hic_reads_path .combine(reference_tuple) - .map{ meta, hic_read_path, ref_meta, ref -> + .map{ meta, _hic_read_path, ref_meta, ref -> [ [ id: ref_meta, aligner: meta.aligner ], ref ] } - .branch{ - minimap2 : it[0].aligner == "minimap2" - bwamem2 : it[0].aligner == "bwamem2" + .branch{ meta, _ref -> + minimap2 : meta.aligner == "minimap2" + bwamem2 : meta.aligner == "bwamem2" } .set{ch_aligner} @@ -123,7 +122,7 @@ workflow HIC_MAPPING { mergedbam .combine( reference_tuple ) .combine ( dot_genome ) - .multiMap { bam_meta, bam, ref_meta, ref_fa, genome_meta, genome_file -> + .multiMap { bam_meta, bam, ref_meta, ref_fa, _genome_meta, genome_file -> input_bam: [[ id: bam_meta.id, sz: file( bam ).size() ], bam] // NOTE: Inject the genome file into the channel to speed up PretextMap @@ -149,7 +148,7 @@ workflow HIC_MAPPING { // run_yahs_sw.run_yahs .combine(reference_index) - .map { ref_meta, ref, fai_meta, fai -> + .map { ref_meta, ref, _fai_meta, fai -> def ref_name = ref.getName() def expected_fai = file("${fai.parent}/${ref_name}.fai") @@ -163,17 +162,21 @@ workflow HIC_MAPPING { def new_path = "${copy_to_dir}/${ref_name}.fai" if (!file(new_path).exists()) { - new_location = file(copy_to_dir).mkdirs() + file(copy_to_dir).mkdirs() fai.mklink(new_path) } return [ref_meta, ref, file(new_path) ] } } - .multiMap { ref_meta, ref, fai -> - bam_input: ref_meta // For mergedbam combination - ref_file: ref - fai_file: fai + .combine(mergedbam) + .map { ref_meta, ref, fai, _bam_ref, merged_bam_path -> + tuple( + ref_meta, + ref, + fai, + merged_bam_path, + "") // Placeholder for AGP file input if needed in the future } .set { ch_yahs_input } @@ -181,12 +184,8 @@ workflow HIC_MAPPING { // MODULE: RUN YAHS TO GENERATE ALIGNMENT BIN FILE // YAHS ( - mergedbam, - ch_yahs_input.ref_file, - ch_yahs_input.fai_file + ch_yahs_input ) - ch_versions = ch_versions.mix( YAHS.out.versions ) - // // MODULE: GENERATE PRETEXT MAP FROM MAPPED BAM FOR LOW RES @@ -195,8 +194,6 @@ workflow HIC_MAPPING { pretext_input.input_bam, pretext_input.reference ) - ch_versions = ch_versions.mix( PRETEXTMAP_STANDRD.out.versions ) - // // MODULE: INGEST ACCESSORY FILES INTO PRETEXT BY DEFAULT @@ -219,8 +216,6 @@ workflow HIC_MAPPING { pretext_input.input_bam, pretext_input.reference ) - ch_versions = ch_versions.mix( PRETEXTMAP_HIGHRES.out.versions ) - // // NOTICE: This could fail on LARGE hires maps due to some memory parameter in the C code @@ -241,18 +236,15 @@ workflow HIC_MAPPING { ch_versions = ch_versions.mix( PRETEXT_INGEST_HIRES.out.versions ) hires_pretext = PRETEXT_INGEST_HIRES.out.pretext } else { - hires_pretext = Channel.empty() + hires_pretext = channel.empty() } - // // MODULE: GENERATE PNG FROM STANDARD PRETEXT // SNAPSHOT_SRES ( PRETEXTMAP_STANDRD.out.pretext ) - ch_versions = ch_versions.mix ( SNAPSHOT_SRES.out.versions ) - // // LOGIC: PREPARE BAMTOBED JUICER INPUT. @@ -270,7 +262,6 @@ workflow HIC_MAPPING { } .set { ch_merged_bam } - // // MODULE: SUBSAMPLE BAM // @@ -279,14 +270,12 @@ workflow HIC_MAPPING { ) ch_versions = ch_versions.mix ( SUBSAMPLE_BAM.out.versions ) - // // LOGIC: COMBINE BRANCHED TO SINGLE OUTPUT // ch_subsampled_bam = SUBSAMPLE_BAM.out.subsampled_bam ch_subsampled_bam.mix(ch_merged_bam.unmodified) - // // LOGIC: PREPARE BAMTOBED JUICER INPUT // @@ -298,7 +287,6 @@ workflow HIC_MAPPING { } .set { ch_bamtobed_juicer_input } - // // SUBWORKFLOW: BAM TO BED FOR JUICER - USES THE SUBSAMPLED MERGED BAM // @@ -308,7 +296,6 @@ workflow HIC_MAPPING { ) ch_versions = ch_versions.mix( HIC_BAMTOBED_JUICER.out.versions ) - // // LOGIC: PREPARE JUICER TOOLS INPUT // @@ -316,8 +303,7 @@ workflow HIC_MAPPING { .combine( dot_genome ) .multiMap { meta, paired_contacts, meta_my_genome, my_genome -> paired : tuple([ id: meta.id, single_end: true], paired_contacts ) - genome : my_genome - id : meta.id + genome : tuple(meta_my_genome, "", my_genome) } .set { ch_juicer_input } @@ -325,15 +311,12 @@ workflow HIC_MAPPING { // // MODULE: GENERATE HIC MAP, ONLY IS PIPELINE IS RUNNING ON MODE FULL // - JUICER_TOOLS_PRE( + JUICERTOOLS_PRE( ch_juicer_input.paired, - ch_juicer_input.genome, - ch_juicer_input.id + ch_juicer_input.genome ) - ch_versions = ch_versions.mix( JUICER_TOOLS_PRE.out.versions ) } - // // LOGIC: PREPARE BAMTOBED COOLER INPUT // @@ -345,7 +328,6 @@ workflow HIC_MAPPING { } .set { ch_bamtobed_cooler_input } - // // SUBWORKFLOW: BAM TO BED FOR COOLER // @@ -361,48 +343,31 @@ workflow HIC_MAPPING { // HIC_BAMTOBED_COOLER.out.paired_contacts_bed .join( HIC_BAMTOBED_COOLER.out.sorted_bed ) - .combine( ch_cool_bin ) .set { ch_binned_pairs } - - // - // LOGIC: PREPARE COOLER INPUT - // - ch_binned_pairs - .combine(dot_genome) - .multiMap { meta, pairs, bed, cool_bin, meta_my_genome, my_genome -> - cooler_in : tuple ( meta, pairs, bed, cool_bin ) - genome_file : my_genome - } - .set { ch_cooler } - - // // MODULE: GENERATE A MULTI-RESOLUTION COOLER FILE BY COARSENING // COOLER_CLOAD( - ch_cooler.cooler_in, - ch_cooler.genome_file + ch_binned_pairs, + dot_genome, + "pairs", + ch_cool_bin ) - ch_versions = ch_versions.mix(COOLER_CLOAD.out.versions) - // // LOGIC: REFACTOR CHANNEL FOR ZOOMIFY // COOLER_CLOAD.out.cool - .map{ meta, cools, cool_bin -> - [meta, cools] + .map{ meta, cools -> + tuple(meta, cools) } .set{ch_cool} - // // MODULE: ZOOM COOL TO MCOOL // COOLER_ZOOMIFY(ch_cool) - ch_versions = ch_versions.mix(COOLER_ZOOMIFY.out.versions) - emit: hires_pretext diff --git a/subworkflows/local/hic_minimap2/main.nf b/subworkflows/local/hic_minimap2/main.nf index ee371057..d4477b29 100755 --- a/subworkflows/local/hic_minimap2/main.nf +++ b/subworkflows/local/hic_minimap2/main.nf @@ -21,8 +21,8 @@ workflow HIC_MINIMAP2 { reference_index main: - ch_versions = Channel.empty() - mappedbam_ch = Channel.empty() + ch_versions = channel.empty() + mappedbam_ch = channel.empty() // // MODULE: generate minimap2 mmi file @@ -30,7 +30,6 @@ workflow HIC_MINIMAP2 { MINIMAP2_INDEX ( reference_tuple ) - ch_versions = ch_versions.mix( MINIMAP2_INDEX.out.versions ) // // LOGIC: generate input channel for mapping @@ -39,7 +38,7 @@ workflow HIC_MINIMAP2 { .splitCsv() .combine ( reference_tuple ) .combine ( MINIMAP2_INDEX.out.index ) - .map{ cram_id, cram_info, ref_id, ref_dir, mmi_id, mmi_path-> + .map{ cram_id, cram_info, _ref_id, ref_dir, _mmi_id, mmi_path-> tuple([ id: cram_id.id ], @@ -60,7 +59,10 @@ workflow HIC_MINIMAP2 { // MODULE: map hic reads by 10,000 container per time // CRAM_FILTER_MINIMAP2_FILTER5END_FIXMATE_SORT ( - ch_filtering_input + ch_filtering_input, + "${projectDir}/bin/grep_pg.sh", + "${projectDir}/bin/filter_five_end.pl", + "${projectDir}/bin/awk_filter_reads.sh" ) ch_versions = ch_versions.mix( CRAM_FILTER_MINIMAP2_FILTER5END_FIXMATE_SORT.out.versions ) @@ -71,7 +73,7 @@ workflow HIC_MINIMAP2 { // LOGIC: PREPARING BAMS FOR MERGE // mappedbam_ch - .map{ meta, file -> + .map{ _meta, file -> tuple( file ) } .collect() @@ -85,15 +87,27 @@ workflow HIC_MINIMAP2 { } .set { collected_files_for_merge } + // + // LOGIC: PREPARING REFERENCE FOR MERGE + // + reference_tuple + .combine ( reference_index ) + .map{ _ref_meta, ref, _ref_index_meta, ref_index -> + tuple( + [id: _ref_meta.id], + ref, + ref_index, + []) + } + .set { reference_for_merge } + // // MODULE: MERGE POSITION SORTED BAM FILES AND MARK DUPLICATES // SAMTOOLS_MERGE ( collected_files_for_merge, - reference_tuple, - reference_index + reference_for_merge ) - ch_versions = ch_versions.mix ( SAMTOOLS_MERGE.out.versions.first() ) emit: mergedbam = SAMTOOLS_MERGE.out.bam diff --git a/subworkflows/local/insilico_digest/main.nf b/subworkflows/local/insilico_digest/main.nf index 5865bdf6..641ee21e 100755 --- a/subworkflows/local/insilico_digest/main.nf +++ b/subworkflows/local/insilico_digest/main.nf @@ -20,7 +20,7 @@ workflow INSILICO_DIGEST { dot_as // Channel: val(dot_as location) main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // LOGIC: COMBINES REFERENCE TUPLE WITH ENZYME CHANNEL @@ -38,9 +38,9 @@ workflow INSILICO_DIGEST { input_fasta .combine(ch_enzyme) - .multiMap { meta, reference, enzyme_id -> + .multiMap { meta, reference_input, enzyme_id -> fasta : tuple( meta, - reference + reference_input ) enzyme : enzyme_id } @@ -60,7 +60,7 @@ workflow INSILICO_DIGEST { // LOGIC: CREATES A TUPLE CONTAINING THE CMAP AND ORIGINAL GENOMIC LOCATIONS // MAKECMAP_FA2CMAPMULTICOLOR.out.cmap - .map{ meta, cfile -> + .map{ _meta, cfile -> tuple( [ id : cfile.toString().split('_')[-3] ], cfile @@ -117,7 +117,7 @@ workflow INSILICO_DIGEST { MAKECMAP_CMAP2BED.out.bedfile .combine(sizefile) .combine(dot_as) - .multiMap { meta, bed, meta_2, dot_genome, as_file -> + .multiMap { meta, bed, _meta_2, dot_genome, as_file -> bed_tuple : tuple( meta, bed ) genome_file : dot_genome autosql : as_file diff --git a/subworkflows/local/kmer/main.nf b/subworkflows/local/kmer/main.nf index 447732ff..33b4e62c 100755 --- a/subworkflows/local/kmer/main.nf +++ b/subworkflows/local/kmer/main.nf @@ -20,17 +20,16 @@ workflow KMER { reads_path // Channel: [ val(meta), val( str ) ] main: - ch_versions = Channel.empty() // // LOGIC: PREPARE GET_READS_FROM_DIRECTORY INPUT // reads_path - .map { meta, reads_path -> + .map { meta, reads_path_input -> tuple( [ id : meta.id, single_end : true ], - reads_path + reads_path_input ) } .set { get_reads_input } @@ -39,14 +38,12 @@ workflow KMER { // MODULE: JOIN PACBIO READ // CAT_CAT( get_reads_input ) - ch_versions = ch_versions.mix( CAT_CAT.out.versions.first() ) // // MODULE: COUNT KMERS // FASTK_FASTK( CAT_CAT.out.file_out ) - ch_versions = ch_versions.mix( FASTK_FASTK.out.versions.first() ) // @@ -55,7 +52,7 @@ workflow KMER { FASTK_FASTK.out.hist .combine( FASTK_FASTK.out.ktab ) .combine( reference_tuple ) - .map{ meta_hist, hist, meta_ktab, ktab, meta_ref, primary -> + .map{ meta_hist, hist, _meta_ktab, ktab, _meta_ref, primary -> tuple( meta_hist, hist, ktab, primary, [] ) } .set{ ch_merq } @@ -66,14 +63,11 @@ workflow KMER { // MERQURYFK_MERQURYFK ( ch_merq, - [], - [] + [[:], []], + [[:], []] ) - ch_versions = ch_versions.mix( MERQURYFK_MERQURYFK.out.versions.first() ) - emit: merquryk_completeness = MERQURYFK_MERQURYFK.out.stats // meta, stats merquryk_qv = MERQURYFK_MERQURYFK.out.qv // meta, qv - versions = ch_versions } diff --git a/subworkflows/local/nuc_alignments/main.nf b/subworkflows/local/nuc_alignments/main.nf index a02a2000..a8dc3d32 100755 --- a/subworkflows/local/nuc_alignments/main.nf +++ b/subworkflows/local/nuc_alignments/main.nf @@ -25,7 +25,7 @@ workflow NUC_ALIGNMENTS { intron_size // Channel: val(50k) main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // LOGIC: COLLECTION FROM GENE_ALIGNMENT IS A LIST OF ALL META AND ALL FILES @@ -36,7 +36,7 @@ workflow NUC_ALIGNMENTS { .buffer( size: 2 ) .combine ( reference_tuple ) .combine( intron_size ) - .map { meta, nuc_file, ref_meta, ref, intron -> + .map { meta, nuc_file, _ref_meta, ref, intron -> tuple( [id: meta.id, type: meta.type, org: meta.org, @@ -76,7 +76,6 @@ workflow NUC_ALIGNMENTS { formatted_input.bool_cigar_bam, formatted_input.bool_bedfile ) - ch_versions = ch_versions.mix(MINIMAP2_ALIGN.out.versions) // // LOGIC: CONVERTS THE MINIMAP OUTPUT TUPLE INTO A GROUPED TUPLE PER INPUT QUERY ORGANISM @@ -91,15 +90,28 @@ workflow NUC_ALIGNMENTS { .groupTuple( by: [0] ) // group by meta list .set { merge_input } + // + // LOGIC: PREPARING REFERENCE FOR MERGE + // + + reference_tuple + .combine ( reference_index ) + .map{ _ref_meta, ref, _ref_index_meta, ref_index -> + tuple( + [id: _ref_meta.id], + ref, + ref_index, + []) + } + .set { reference_for_merge } + // // MODULE: MERGES THE BAM FILES FOUND IN THE GROUPED TUPLE IN REGARDS TO THE REFERENCE // EMITS A MERGED BAM SAMTOOLS_MERGE ( merge_input, - reference_tuple, - reference_index + reference_for_merge ) - ch_versions = ch_versions.mix(SAMTOOLS_MERGE.out.versions) // // SUBWORKFLOW: GENERATES A PUNCHLIST FROM MERGED BAM FILE @@ -114,7 +126,6 @@ workflow NUC_ALIGNMENTS { // MODULE: CONVERTS THE ABOVE MERGED BAM INTO BED FORMAT // BEDTOOLS_BAMTOBED ( SAMTOOLS_MERGE.out.bam ) - ch_versions = ch_versions.mix(BEDTOOLS_BAMTOBED.out.versions) // TODO: try filtering out here too @@ -139,7 +150,6 @@ workflow NUC_ALIGNMENTS { bedtools_input, [] ) - ch_versions = ch_versions.mix(BEDTOOLS_SORT.out.versions) // // LOGIC: COMBINES GENOME_FILE CHANNEL AND ABOVE OUTPUT, SPLITS INTO TWO CHANNELS @@ -152,9 +162,9 @@ workflow NUC_ALIGNMENTS { file_size: file.size() ], file ) } - .filter { it[0].file_size >= 141 } // Take the first item in input (meta) and check if size is more than a symlink + .filter { meta, _file -> meta.file_size >= 141 } // Take the first item in input (meta) and check if size is more than a symlink .combine( dot_genome ) - .multiMap { meta, ref, genome_meta, genome -> + .multiMap { meta, ref, _genome_meta, genome -> bed_file: tuple( [ id: meta.id, type: meta.type, ], diff --git a/subworkflows/local/pep_alignments/main.nf b/subworkflows/local/pep_alignments/main.nf index ebd3bfbf..2809e153 100755 --- a/subworkflows/local/pep_alignments/main.nf +++ b/subworkflows/local/pep_alignments/main.nf @@ -1,8 +1,5 @@ #!/usr/bin/env nextflow -import java.math.RoundingMode; -import java.math.BigDecimal; - // // MODULE IMPORT BLOCK // @@ -19,7 +16,7 @@ workflow PEP_ALIGNMENTS { pep_files // Channel: tuple [ val(meta), path(file) ] main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // MODULE: CREATES INDEX OF REFERENCE FILE @@ -36,7 +33,7 @@ workflow PEP_ALIGNMENTS { .flatten() .buffer( size: 2 ) .combine ( MINIPROT_INDEX.out.index ) - .multiMap { pep_meta, pep_file, miniprot_meta, miniprot_index -> + .multiMap { pep_meta, pep_file, _miniprot_meta, miniprot_index -> pep_tuple : tuple( [ id: pep_meta.id, type: pep_meta.type, org: pep_meta.org @@ -78,7 +75,6 @@ workflow PEP_ALIGNMENTS { CAT_CAT ( grouped_tuple ) - ch_versions = ch_versions.mix( CAT_CAT.out.versions ) // // LOGIC: ADDING LINE COUNT TO THE FILE FOR BETTER RESOURCE USAGE @@ -101,7 +97,6 @@ workflow PEP_ALIGNMENTS { bedtools_input , [] ) - ch_versions = ch_versions.mix( BEDTOOLS_SORT.out.versions ) // // MODULE: CUTS GFF INTO PUNCHLIST @@ -118,11 +113,10 @@ workflow PEP_ALIGNMENTS { TABIX_BGZIPTABIX ( BEDTOOLS_SORT.out.sorted ) - ch_versions = ch_versions.mix( TABIX_BGZIPTABIX.out.versions ) emit: gff_file = BEDTOOLS_SORT.out.sorted - tbi_gff = TABIX_BGZIPTABIX.out.gz_tbi + tbi_gff = TABIX_BGZIPTABIX.out.gz_index pep_punch = EXTRACT_COV_IDEN.out.punchlist versions = ch_versions } diff --git a/subworkflows/local/punchlist/main.nf b/subworkflows/local/punchlist/main.nf index 83307e96..07a71221 100755 --- a/subworkflows/local/punchlist/main.nf +++ b/subworkflows/local/punchlist/main.nf @@ -8,11 +8,11 @@ include { PAF2BED } from '../../../modules/local/paf/to_bed/main' workflow PUNCHLIST { take: - reference_tuple // Channel: tuple [ val(meta), path(reference)] + _reference_tuple // Channel: tuple [ val(meta), path(reference)] merged_bam // Channel: tuple [ val(meta), path(bam_file)] main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // MODULE: CONVERTS BAM INTO PAF FOR THE PUNCHLIST GENERATION diff --git a/subworkflows/local/read_coverage/main.nf b/subworkflows/local/read_coverage/main.nf index 94c72b7c..2aefbbf0 100755 --- a/subworkflows/local/read_coverage/main.nf +++ b/subworkflows/local/read_coverage/main.nf @@ -3,7 +3,6 @@ // // MODULE IMPORT BLOCK // -include { BEDTOOLS_BAMTOBED } from '../../../modules/nf-core/bedtools/bamtobed/main' include { BEDTOOLS_GENOMECOV } from '../../../modules/nf-core/bedtools/genomecov/main' include { BEDTOOLS_MERGE as BEDTOOLS_MERGE_MAX } from '../../../modules/nf-core/bedtools/merge/main' include { BEDTOOLS_MERGE as BEDTOOLS_MERGE_MIN } from '../../../modules/nf-core/bedtools/merge/main' @@ -24,13 +23,13 @@ workflow READ_COVERAGE { read_ch // Channel: tuple [ val(meta), val( str ) ] read channel (.fasta.gz) main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // LOGIC: TAKE THE READ FOLDER AS INPUT AND GENERATE THE CHANNEL OF READ FILES // read_ch - .map { meta, files -> + .map { _meta, files -> tuple( files ) } .flatten() @@ -42,7 +41,7 @@ workflow READ_COVERAGE { reference_ch .combine( ch_reads_path ) .combine( read_ch ) - .map { meta, ref, reads_path, read_meta, readfolder -> + .map { meta, ref, reads_path, read_meta, _readfolder -> tuple( [ id : meta.id, single_end : read_meta.single_end, @@ -60,7 +59,7 @@ workflow READ_COVERAGE { .set { pre_minimap_input } pre_minimap_input - .multiMap { meta, reads_path, ref, bam_output, cigar_paf, cigar_bam, bed_output, reads_type -> + .multiMap { meta, reads_path, ref, bam_output, cigar_paf, cigar_bam, bed_output, _reads_type -> read_tuple : tuple( meta, reads_path) ref : tuple( meta, ref) bool_bam_ouput : bam_output @@ -83,11 +82,10 @@ workflow READ_COVERAGE { minimap_input.bool_cigar_bam, minimap_input.bool_bed_output ) - ch_versions = ch_versions.mix(MINIMAP2_ALIGN.out.versions) ch_beds = MINIMAP2_ALIGN.out.bed ch_beds - .map { meta, file -> + .map { _meta, file -> tuple( file ) } .collect() @@ -105,7 +103,6 @@ workflow READ_COVERAGE { CAT_CAT( collected_files_for_merge ) - ch_versions = ch_versions.mix( CAT_CAT.out.versions ) // // MODULE: SORT THE MERGED BED FILE INTO CHROMOSOME-LOCATION ORDER @@ -113,7 +110,6 @@ workflow READ_COVERAGE { GNU_SORT_BED( CAT_CAT.out.file_out ) - ch_versions = ch_versions.mix(GNU_SORT_BED.out.versions) ch_sorted_bed = GNU_SORT_BED.out.sorted // @@ -121,7 +117,7 @@ workflow READ_COVERAGE { // ch_sorted_bed .combine( dot_genome ) - .multiMap { meta, file, my_genome_meta, my_genome -> + .multiMap { meta, file, _my_genome_meta, my_genome -> input_tuple : tuple ( [ id : meta.id, single_end : true ], @@ -143,7 +139,6 @@ workflow READ_COVERAGE { genomecov_input.file_suffix, false ) - ch_versions = ch_versions.mix(BEDTOOLS_GENOMECOV.out.versions) // // LOGIC: BED2BIGWIG TAKES SORTED COVERAGE BED FILE @@ -151,7 +146,6 @@ workflow READ_COVERAGE { GNU_SORT_COVBED( BEDTOOLS_GENOMECOV.out.genomecov ) - ch_versions = ch_versions.mix(GNU_SORT_COVBED.out.versions) ch_sorted_covbed = GNU_SORT_COVBED.out.sorted // @@ -168,7 +162,6 @@ workflow READ_COVERAGE { BEDTOOLS_MERGE_MAX( GET_MIN_MAX_PUNCHES.out.max ) - ch_versions = ch_versions.mix(BEDTOOLS_MERGE_MAX.out.versions) // // MODULE: get_minmax_punches @@ -176,7 +169,6 @@ workflow READ_COVERAGE { BEDTOOLS_MERGE_MIN( GET_MIN_MAX_PUNCHES.out.min ) - ch_versions = ch_versions.mix(BEDTOOLS_MERGE_MIN.out.versions) // // MODULE: GENERATE DEPTHGRAPH @@ -185,7 +177,6 @@ workflow READ_COVERAGE { ch_sorted_covbed ) ch_versions = ch_versions.mix(GRAPH_OVERALL_COVERAGE.out.versions) - ch_depthgraph = GRAPH_OVERALL_COVERAGE.out.part // // LOGIC: PREPARING FIND_HALF_COVERAGE INPUT @@ -193,7 +184,7 @@ workflow READ_COVERAGE { ch_sorted_covbed .combine( GRAPH_OVERALL_COVERAGE.out.part ) .combine( dot_genome ) - .multiMap { meta, file, meta_depthgraph, depthgraph, meta_my_genome, my_genome -> + .multiMap { meta, file, _meta_depthgraph, depthgraph, _meta_my_genome, my_genome -> halfcov_bed : tuple( [ id : meta.id, single_end : true ], file ) genome_file : my_genome depthgraph_file : depthgraph @@ -216,7 +207,7 @@ workflow READ_COVERAGE { ch_sorted_covbed .combine( dot_genome ) .combine(reference_ch) - .multiMap { meta, file, meta_my_genome, my_genome, ref_meta, ref -> + .multiMap { _meta, file, _meta_my_genome, my_genome, ref_meta, _ref -> ch_coverage_bed : tuple ([ id: ref_meta.id, single_end: true], file) genome_file : my_genome } @@ -229,8 +220,6 @@ workflow READ_COVERAGE { bed2bw_normal_input.ch_coverage_bed, bed2bw_normal_input.genome_file ) - ch_versions = ch_versions.mix(BED2BW_NORMAL.out.versions) - emit: ch_minbed = BEDTOOLS_MERGE_MIN.out.bed diff --git a/subworkflows/local/repeat_density/main.nf b/subworkflows/local/repeat_density/main.nf index 4b0d96cf..55d5c0e7 100755 --- a/subworkflows/local/repeat_density/main.nf +++ b/subworkflows/local/repeat_density/main.nf @@ -25,14 +25,13 @@ workflow REPEAT_DENSITY { dot_genome main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // MODULE: MARK UP THE REPEAT REGIONS OF THE REFERENCE GENOME // WINDOWMASKER_MKCOUNTS ( reference_tuple ) - ch_versions = ch_versions.mix( WINDOWMASKER_MKCOUNTS.out.versions ) // // MODULE: CALCULATE THE STATISTICS OF THE MARKED UP REGIONS @@ -41,7 +40,6 @@ workflow REPEAT_DENSITY { WINDOWMASKER_MKCOUNTS.out.counts, reference_tuple ) - ch_versions = ch_versions.mix( WINDOWMASKER_USTAT.out.versions ) // // MODULE: USE USTAT OUTPUT TO EXTRACT REPEATS FROM FASTA @@ -57,14 +55,13 @@ workflow REPEAT_DENSITY { BEDTOOLS_MAKEWINDOWS( dot_genome ) - ch_versions = ch_versions.mix( BEDTOOLS_MAKEWINDOWS.out.versions ) // // LOGIC: COMBINE TWO CHANNELS AND OUTPUT tuple(meta, windows_file, repeat_file) // BEDTOOLS_MAKEWINDOWS.out.bed .combine( EXTRACT_REPEAT.out.bed ) - .map{ meta, windows_file, repeat_meta, repeat_file -> + .map{ meta, windows_file, _repeat_meta, repeat_file -> tuple ( meta, windows_file, @@ -80,7 +77,6 @@ workflow REPEAT_DENSITY { intervals, dot_genome ) - ch_versions = ch_versions.mix( BEDTOOLS_INTERSECT.out.versions ) // // MODULE: FIXES IDS FOR REPEATS @@ -90,25 +86,21 @@ workflow REPEAT_DENSITY { file("${projectDir}/bin/gawk_replace_dots.awk"), false ) - ch_versions = ch_versions.mix( GAWK_RENAME_IDS.out.versions ) // // MODULE: SORTS THE ABOVE BED FILES // GNU_SORT_A ( - GAWK_RENAME_IDS.out.output // Intersect file - ) - ch_versions = ch_versions.mix( GNU_SORT_A.out.versions ) + GAWK_RENAME_IDS.out.output // Intersect file + ) GNU_SORT_B ( dot_genome // Genome file - Will not run unless genome file is sorted to ) - ch_versions = ch_versions.mix( GNU_SORT_B.out.versions ) GNU_SORT_C ( BEDTOOLS_MAKEWINDOWS.out.bed // Windows file ) - ch_versions = ch_versions.mix( GNU_SORT_C.out.versions ) // // MODULE: ADDS 4TH COLUMN TO BED FILE USED IN THE REPEAT DENSITY GRAPH @@ -118,7 +110,6 @@ workflow REPEAT_DENSITY { file("${projectDir}/bin/gawk_reformat_intersect.awk"), false ) - ch_versions = ch_versions.mix( GAWK_REFORMAT_INTERSECT.out.versions ) // // MODULE: TABIX AND GZIP THE REPEAT DENSITY BED FILE FOR JBROWSE @@ -126,7 +117,6 @@ workflow REPEAT_DENSITY { TABIX_BGZIPTABIX ( GAWK_REFORMAT_INTERSECT.out.output ) - ch_versions = ch_versions.mix( TABIX_BGZIPTABIX.out.versions ) // // LOGIC: COMBINES THE REFORMATTED INTERSECT FILE AND WINDOWS FILE CHANNELS AND SORTS INTO @@ -134,7 +124,7 @@ workflow REPEAT_DENSITY { // GAWK_REFORMAT_INTERSECT.out.output .combine( GNU_SORT_C.out.sorted ) - .map{ intersect_meta, bed, sorted_meta, windows_file -> + .map{ intersect_meta, bed, _sorted_meta, windows_file -> tuple ( intersect_meta, windows_file, @@ -150,7 +140,6 @@ workflow REPEAT_DENSITY { for_mapping, GNU_SORT_B.out.sorted ) - ch_versions = ch_versions.mix( BEDTOOLS_MAP.out.versions ) // // MODULE: REPLACES . WITH 0 IN MAPPED FILE @@ -160,19 +149,17 @@ workflow REPEAT_DENSITY { file("${projectDir}/bin/gawk_replace_dots.awk"), false ) - ch_versions = ch_versions.mix( GAWK_REPLACE_DOTS.out.versions ) // // MODULE: CONVERTS GENOME FILE AND BED INTO A BIGWIG FILE // UCSC_BEDGRAPHTOBIGWIG( GAWK_REPLACE_DOTS.out.output, - GNU_SORT_B.out.sorted.map { it[1] } // Pulls file from tuple of meta and file + GNU_SORT_B.out.sorted.map { _meta, file -> file } // Pulls file from tuple of meta and file ) - ch_versions = ch_versions.mix( UCSC_BEDGRAPHTOBIGWIG.out.versions ) emit: repeat_density = UCSC_BEDGRAPHTOBIGWIG.out.bigwig - bed_gz_tbi = TABIX_BGZIPTABIX.out.gz_tbi + bed_gz_tbi = TABIX_BGZIPTABIX.out.gz_index versions = ch_versions } diff --git a/subworkflows/local/selfcomp/main.nf b/subworkflows/local/selfcomp/main.nf index 6f09d945..b1eb870e 100755 --- a/subworkflows/local/selfcomp/main.nf +++ b/subworkflows/local/selfcomp/main.nf @@ -17,23 +17,6 @@ include { CAT_CAT } from '../../../modules/nf-cor include { SELFCOMP_ALIGNMENTBLOCKS } from '../../../modules/local/selfcomp/alignmentblocks/main' include { CONCAT_BLOCKS } from '../../../modules/local/concat/blocks/main' -/*def processPaths(mytuple, prefix) { - if (mytuple == null || mytuple.isEmpty() || mytuple[0] == null) { - println "ERROR: processPaths received an empty or null tuple" - return [] - } - - def pathList = mytuple[0][1] ?: [] // Safeguard against null - def result = [] - - pathList.eachWithIndex { pathString, idx -> - def idxStr = "${prefix}${idx + 1}" - result.add([[id: idxStr], pathString]) - } - - return result -}*/ - workflow SELFCOMP { take: @@ -42,7 +25,7 @@ workflow SELFCOMP { selfcomp_as // Channel: val( dot_as location ) main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // MODULE: SPLITS INPUT FASTA INTO 50KB WINDOWS @@ -59,7 +42,7 @@ workflow SELFCOMP { // LOGIC: REFERENCE SHOULD BE UNDER 1GB TO OPTIMIZE MEMORY USAGE // reference_tuple - .map { it, file -> + .map { _meta, file -> def sizeInGB = (file.size() / 1_073_741_824.0) + 0.5 sizeInGB < 1 ? 1 : sizeInGB.toInteger() // Conditional operator for the logic } @@ -83,7 +66,7 @@ workflow SELFCOMP { // LOGIC: QUERY CHUNKS SHOULD BE UNDER 0.5GB PER CHUNK // reference_tuple - .map { it, file -> + .map { _meta, file -> def sizeInGB = (file.size() / 1_073_741_824.0) / 0.5 sizeInGB < 1 ? 1 : sizeInGB.toInteger() // Conditional operator for the logic } @@ -102,6 +85,7 @@ workflow SELFCOMP { } .set { windowed_fasta_query_ch } + // // MODULE: SPLIT QUERY FILE INTO 1GB CHUNKS // THIS IS THE QUERY, AND REFERENCE IF GENOME.size() > 1GB @@ -117,14 +101,14 @@ workflow SELFCOMP { ch_versions = ch_versions.mix(SEQKIT_SPLIT_REF.out.versions) SEQKIT_SPLIT_REF.out.reads - .map { meta, myfiles -> + .map { _meta, myfiles -> myfiles } .flatMap { it -> it} .set { ref_chunks } SEQKIT_SPLIT_QUERY.out.reads - .map { meta, myfiles -> + .map { _meta, myfiles -> myfiles } .flatMap { it -> it} @@ -154,13 +138,13 @@ workflow SELFCOMP { // ADD REFERENCE META // MUMMER.out.coords - .map{ meta, file -> + .map{ _meta, file -> file } .collect() .toList() .combine( reference_tuple ) - .map { files, meta, ref -> + .map { files, meta, _ref -> tuple( meta, files ) @@ -174,8 +158,6 @@ workflow SELFCOMP { CAT_CAT( ch_mummer_files ) - ch_versions = ch_versions.mix( CAT_CAT.out.versions ) - // // MODULE: CONVERT THE MUMMER ALIGNMENTS INTO BED FORMAT @@ -218,8 +200,6 @@ workflow SELFCOMP { bedtools_input, [] ) - ch_versions = ch_versions.mix( BEDTOOLS_SORT.out.versions ) - // // MODULE: BUILD ALIGNMENT BLOCKS @@ -244,7 +224,7 @@ workflow SELFCOMP { // UCSC_BEDTOBIGBED( CONCAT_BLOCKS.out.chainfile, - dot_genome.map{it[1]}, // Pulls file from tuple ( meta and file ) + dot_genome.map{_meta, file -> file}, // Pulls file from tuple ( meta and file ) selfcomp_as ) ch_versions = ch_versions.mix( UCSC_BEDTOBIGBED.out.versions ) diff --git a/subworkflows/local/synteny/main.nf b/subworkflows/local/synteny/main.nf index 13fc4396..f7a15605 100755 --- a/subworkflows/local/synteny/main.nf +++ b/subworkflows/local/synteny/main.nf @@ -11,7 +11,6 @@ workflow SYNTENY { synteny_paths // Channel: List [ path(file) ] main: - ch_versions = Channel.empty() ch_data = synteny_paths // .splitCsv() @@ -22,13 +21,10 @@ workflow SYNTENY { // AND PARSE INTO CHANNEL PER GENOME // ch_data - // .map{synteny_path -> - // file(synteny_path) - // } .combine(reference_tuple) .multiMap{syntenic_ref, meta, ref -> syntenic_tuple : tuple([ id: syntenic_ref.baseName, - class: meta.class, + defined_class: meta.defined_class, project_type: meta.project_type ], syntenic_ref) @@ -42,7 +38,7 @@ workflow SYNTENY { .set { mm_input } // - // MODULE: ALIGNS THE SUNTENIC GENOMES TO THE REFERENCE GENOME + // MODULE: ALIGNS THE SYNTENIC GENOMES TO THE REFERENCE GENOME // EMITS ALIGNED PAF FILE // MINIMAP2_ALIGN( @@ -54,9 +50,7 @@ workflow SYNTENY { mm_input.bool_cigar_bam, mm_input.bool_bedfile, ) - ch_versions = ch_versions.mix( MINIMAP2_ALIGN.out.versions ) emit: ch_paf = MINIMAP2_ALIGN.out.paf - versions = ch_versions } diff --git a/subworkflows/local/telo_extraction/main.nf b/subworkflows/local/telo_extraction/main.nf index 51d97351..8db0afac 100644 --- a/subworkflows/local/telo_extraction/main.nf +++ b/subworkflows/local/telo_extraction/main.nf @@ -1,4 +1,3 @@ -include { GAWK as GAWK_CLEAN_TELOMERE } from '../../../modules/nf-core/gawk/main' include { GAWK as GAWK_MAP_TELO } from '../../../modules/nf-core/gawk/main' include { FIND_TELOMERE_WINDOWS } from '../../../modules/local/find/telomere_windows/main' include { EXTRACT_TELOMERE } from '../../../modules/local/extract/telomere/main' @@ -9,20 +8,20 @@ workflow TELO_EXTRACTION { telomere_file //tuple(meta, file) main: - ch_versions = Channel.empty() - + ch_versions = channel.empty() // // MODULE: GENERATES A WINDOWS FILE FROM THE ABOVE // FIND_TELOMERE_WINDOWS ( - telomere_file + telomere_file, + "${projectDir}/bin/telomere.jar" ) ch_versions = ch_versions.mix( FIND_TELOMERE_WINDOWS.out.versions ) def windows_file = FIND_TELOMERE_WINDOWS.out.windows - def safe_windows = windows_file.ifEmpty { Channel.empty() } + def safe_windows = windows_file.ifEmpty { channel.empty() } // @@ -43,8 +42,7 @@ workflow TELO_EXTRACTION { [], false ) - ch_gawk_output = GAWK_MAP_TELO.out.output.ifEmpty( Channel.empty() ) - ch_versions = ch_versions.mix( GAWK_MAP_TELO.out.versions ) + ch_gawk_output = GAWK_MAP_TELO.out.output.ifEmpty( [] ) // @@ -56,12 +54,10 @@ workflow TELO_EXTRACTION { TABIX_BGZIPTABIX( merged_bed ) - ch_versions = ch_versions.mix( TABIX_BGZIPTABIX.out.versions ) - emit: bed_file = merged_bed - bed_gz_tbi = TABIX_BGZIPTABIX.out.gz_tbi + bed_gz_tbi = TABIX_BGZIPTABIX.out.gz_index bedgraph_file = EXTRACT_TELOMERE.out.bedgraph versions = ch_versions diff --git a/subworkflows/local/telo_finder/main.nf b/subworkflows/local/telo_finder/main.nf index 0e0b25ea..f8907aa6 100755 --- a/subworkflows/local/telo_finder/main.nf +++ b/subworkflows/local/telo_finder/main.nf @@ -15,7 +15,7 @@ workflow TELO_FINDER { teloseq main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // @@ -44,7 +44,6 @@ workflow TELO_FINDER { [], true ) - ch_versions = ch_versions.mix( GAWK_SPLIT_DIRECTIONS.out.versions ) // // LOGIC: COLLECT FILES AND ITERATE THROUGH @@ -60,6 +59,7 @@ workflow TELO_FINDER { files .findAll { file -> file.size() > 0 } .collect { file -> + def new_meta = meta + [direction: 0] if (file.name.contains("direction.0")) { new_meta = meta + [direction: 5] } diff --git a/subworkflows/local/utils_nfcore_treeval_pipeline/main.nf b/subworkflows/local/utils_nfcore_treeval_pipeline/main.nf index 9a9a1bb2..e850a3ea 100644 --- a/subworkflows/local/utils_nfcore_treeval_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_treeval_pipeline/main.nf @@ -30,7 +30,7 @@ workflow PIPELINE_INITIALISATION { take: version // boolean: Display version and exit validate_params // boolean: Boolean whether to validate parameters against the schema at runtime - monochrome_logs // boolean: Do not use coloured log outputs + _monochrome_logs // boolean: Do not use coloured log outputs nextflow_cli_args // array: List of positional nextflow CLI args outdir // string: The output directory where the results will be saved input // string: Path to input YAML @@ -93,7 +93,6 @@ workflow PIPELINE_INITIALISATION { ) emit: - assembly_id = YAML_INPUT.out.ch_assembly_id reference = YAML_INPUT.out.ch_reference map_order = YAML_INPUT.out.ch_map_order assem_reads = YAML_INPUT.out.ch_assem_reads diff --git a/subworkflows/local/yaml_input/main.nf b/subworkflows/local/yaml_input/main.nf index 643663c6..089ef3d7 100755 --- a/subworkflows/local/yaml_input/main.nf +++ b/subworkflows/local/yaml_input/main.nf @@ -7,9 +7,8 @@ workflow YAML_INPUT { workflow_name // String: params.mode main: - ch_versions = Channel.empty() - Channel.value(input_file) + channel.value(input_file) .map { file -> readYAML(file) } .flatten() .multiMap { data -> @@ -22,7 +21,7 @@ workflow YAML_INPUT { reference: tuple( [ id: tolid_ver, - class: data.assembly.defined_class, + defined_class: data.assembly.defined_class, project_type: data.assembly.project_id, ], file(data.reference_file, checkIfExists: true), @@ -65,7 +64,7 @@ workflow YAML_INPUT { .set { parsed } parsed.reference - .branch { meta, file -> + .branch { _meta, file -> zipped: file.name.endsWith('.gz') unzipped: !file.name.endsWith('.gz') } @@ -77,13 +76,11 @@ workflow YAML_INPUT { GUNZIP ( ch_input.zipped ) - ch_versions = ch_versions.mix(GUNZIP.out.versions) - // // LOGIC: MIX CHANNELS WHICH MAY OR MAY NOT BE EMPTY INTO A SINGLE QUEUE CHANNEL // - unzipped_input = Channel.empty() + unzipped_input = channel.empty() unzipped_input .mix(ch_input.unzipped, GUNZIP.out.gunzip) @@ -91,27 +88,25 @@ workflow YAML_INPUT { emit: - ch_assembly_id = parsed.tolid_version ch_reference = standardised_unzipped_input ch_map_order = parsed.map_order - ch_assem_reads = parsed.read_ch.filter { it } // filter [] + ch_assem_reads = parsed.read_ch.filter { value -> value } // filter [] ch_kmer_prof_file = parsed.kmer_prof ch_hic_reads = parsed.hic_ch ch_supp_reads = parsed.supplement_ch - ch_align_genesets = parsed.genesets.filter { it } // filter [] - ch_synteny_paths = parsed.synteny.filter { it } // filter [] - ch_intron_size = parsed.intron_size.filter { it } // filter "" + ch_align_genesets = parsed.genesets.filter { value -> value } // filter [] + ch_synteny_paths = parsed.synteny.filter { value -> value } // filter [] + ch_intron_size = parsed.intron_size.filter { value -> value } // filter "" ch_teloseq = parsed.teloseq ch_lineageinfo = parsed.busco_lineage ch_lineagespath = parsed.busco_lineages_path - versions = ch_versions } def readYAML(yamlfile) { return new org.yaml.snakeyaml.Yaml().load(new FileReader(yamlfile.toString())) } -def fn_get_validated_channel (data_type, tolid_ver, read_type, defined_class, project_id, files_list) { +def fn_get_validated_channel (data_type, tolid_ver, read_type, _defined_class, _project_id, files_list) { // Based on the the functions added in commit: 61f4ad9 // Edited to be a function working on the raw yaml data // rather than channels as it was previously @@ -124,8 +119,8 @@ def fn_get_validated_channel (data_type, tolid_ver, read_type, defined_class, pr files_list.each { file_path -> if (file_path.toString().contains(".fofn")) { def fofn_content = file(file_path).text.split('\n') - .collect { it.trim() } - .findAll { it } // Remove empty lines + .collect { value -> value.trim() } + .findAll { value -> value } // Remove empty lines fofn_files.addAll(fofn_content) } else { direct_files.add(file_path) @@ -137,17 +132,17 @@ def fn_get_validated_channel (data_type, tolid_ver, read_type, defined_class, pr // Validate files based on data type if (data_type == "cram") { - def invalid_files = all_files.findAll { - !it.toString().contains(".cram") + def invalid_files = all_files.findAll { file_path -> + !file_path.toString().contains(".cram") } if (invalid_files.size() > 0) { error "[Treeval: Error] One of the input hic files does not match cram format. Invalid files: ${invalid_files}" } } else if (data_type == "longread") { - def invalid_files = all_files.findAll { - !it.toString().contains(".fasta.gz") && - !it.toString().contains(".fa.gz") && - !it.toString().contains(".fn.gz") + def invalid_files = all_files.findAll { file_path -> + !file_path.toString().contains(".fasta.gz") && + !file_path.toString().contains(".fa.gz") && + !file_path.toString().contains(".fn.gz") } if (invalid_files.size() > 0) { error "[Treeval: Error] One of the input longread files does not match expected formats (fn.gz, fa.gz, fasta.gz). Invalid files: ${invalid_files}" @@ -172,7 +167,7 @@ def fn_get_validated_channel (data_type, tolid_ver, read_type, defined_class, pr aligner: read_type && data_type == "cram" ? read_type : "NA", read_type: read_type, ], - all_files.collect { file(it, checkIfExists: true) } + all_files.collect { file_path -> file(file_path, checkIfExists: true) } ) return resolved_channel diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap old mode 100644 new mode 100755 index bca9d95a..fe0c8097 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -1,7 +1,7 @@ { "Full run": { "content": [ - 96, + 95, { "BAMTOBED_SORT": { "samtools": 1.17, @@ -32,22 +32,22 @@ "bedtools": "2.31.1" }, "BUSCO_BUSCO": { - "busco": "5.7.1" + "busco": "6.0.0" }, "BWAMEM2_INDEX": { "bwamem2": "2.2.1" }, "CAT_CAT": { - "pigz": "2.3.4" + "pigz": 2.8 }, "CONCAT_BLOCKS": { "coreutils": 9.1 }, "COOLER_CLOAD": { - "cooler": "0.9.2" + "cooler": "0.10.4" }, "COOLER_ZOOMIFY": { - "cooler": "0.9.2" + "cooler": "0.10.4" }, "CRAM_FILTER_ALIGN_BWAMEM2_FIXMATE_SORT": { "samtools": 1.17, @@ -61,7 +61,7 @@ "coreutils": 9.1 }, "FASTK_FASTK": { - "fastk": "f18a4e6d2207539f7b84461daebc54530a9559b0" + "fastk": 1.2 }, "FIND_HALF_COVERAGE": { "python": "Python 3.9.1", @@ -101,29 +101,29 @@ "generate_cram_csv": 1.1, "samtools": 1.17 }, - "GET_LARGEST_SCAFFOLD": { - "coreutils": 9.1 - }, "GET_MIN_MAX_PUNCHES": { "coreutils": 9.1 }, "GET_PAIRED_CONTACT_BED": { "bed_to_contacts": "1.0.0" }, + "GNU_SORT": { + "coreutils": 9.5 + }, "GNU_SORT_A": { - "coreutils": 9.3 + "coreutils": 9.5 }, "GNU_SORT_B": { - "coreutils": 9.3 + "coreutils": 9.5 }, "GNU_SORT_BED": { - "coreutils": 9.3 + "coreutils": 9.5 }, "GNU_SORT_C": { - "coreutils": 9.3 + "coreutils": 9.5 }, "GNU_SORT_COVBED": { - "coreutils": 9.3 + "coreutils": 9.5 }, "GRAPH_OVERALL_COVERAGE": { "perl": "5, version 26, subversion 2 (v5.26.2) built for x86_64-linux-thread-multi Copyright 1987-2018, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using \"man perl\" or \"perldoc perl\". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.", @@ -142,13 +142,12 @@ "rename_cmapids.pl": 1.0 }, "MERQURYFK_MERQURYFK": { - "fastk": "f18a4e6d2207539f7b84461daebc54530a9559b0", - "merquryfk": "8ae344092df5dcaf83cfb7f90f662597a9b1fc61", - "r": "4.2.0" + "R": "4.3.3", + "fastk": 1.2, + "merquryfk": 1.2 }, "MINIMAP2_ALIGN": { - "minimap2": "2.28-r1209", - "samtools": 1.2 + "minimap2": "2.29-r1283" }, "MINIPROT_INDEX": { "miniprot": "0.11-r234" @@ -164,20 +163,22 @@ "paftools.js": null }, "PRETEXTMAP_STANDRD": { - "PretextGraph": "PretextMap Version 0.0.9", - "PretextMap": "0.1.9", - "samtools": 1.21 + "PretextMap": "0.2.3", + "samtools": 1.23 }, "PRETEXT_INGEST_SNDRD": { "PretextGraph": "0.0.9", "PretextMap": "0.1.9", "bigWigToBedGraph": 447 }, + "SAMTOOLS_FAIDX": { + "samtools": "1.22.1" + }, "SAMTOOLS_MARKDUP": { - "samtools": 1.21 + "samtools": "1.22.1" }, "SAMTOOLS_MERGE": { - "samtools": 1.21 + "samtools": "1.22.1" }, "SELFCOMP_ALIGNMENTBLOCKS": { "python": "Python 3.10.8", @@ -208,10 +209,11 @@ "seqtk": "1.4-r122" }, "SNAPSHOT_SRES": { - "pretextsnapshot": "0.0.4" + "PretextSnapshot": "0.0.5" }, "TABIX_BGZIPTABIX": { - "tabix": 1.2 + "bgzip": 1.21, + "tabix": 1.21 }, "UCSC_BEDGRAPHTOBIGWIG": { "ucsc": 469 @@ -262,10 +264,7 @@ "treeval_upload/LaetiporusSulphureus_synteny_grTriPseu1_1_UPPERCASED.paf", "treeval_upload/gap_grTriPseu1_1.bed.gz", "treeval_upload/gap_grTriPseu1_1.bed.gz.csi", - "treeval_upload/grTriPseu1_1.fa.fai", - "treeval_upload/grTriPseu1_1.unsorted.genome", "treeval_upload/grTriPseu1_1_buscogene.bigBed", - "treeval_upload/grTriPseu1_1_len_sorted.genome", "treeval_upload/grTriPseu1_1_selfcomp.bigBed", "treeval_upload/punchlists", "treeval_upload/punchlists/LaetiporusSulphureus.gfLaeSulp1_cdna_punchlist.bed", @@ -276,7 +275,7 @@ ], [ "grTriPseu1_1.gap.bedgraph:md5,d41d8cd98f00b204e9800998ecf8427e", - "grTriPseu1_1.grTriPseu1_1_UPPERCASED.spectra-cn.ln.png:md5,cddd75c3905022d973fc35151d2ebfcd", + "grTriPseu1_1.grTriPseu1_1_UPPERCASED.spectra-cn.ln.png:md5,5fb66140815ff05cff52a78aed952767", "grTriPseu1_1_0P_telomere.bed:md5,d41d8cd98f00b204e9800998ecf8427e", "grTriPseu1_1_0P_telomere.bedgraph:md5,d41d8cd98f00b204e9800998ecf8427e", "grTriPseu1_1_3P_telomere.bed:md5,d41d8cd98f00b204e9800998ecf8427e", @@ -296,16 +295,13 @@ "BSPQI.bigBed:md5,d33e1c0b62c37df2612559fe4d471c56", "BSSSI.bigBed:md5,b43f1a087bc134a16444705e3e727b7b", "DLE1.bigBed:md5,173ab95349213d3a76d0fc6e1f1d559a", - "LaetiporusSulphureus.gfLaeSulp1_cdna.bigBed:md5,853c2e0c60be0345947cc93a807f1f9e", + "LaetiporusSulphureus.gfLaeSulp1_cdna.bigBed:md5,0ed6225cc5ad225a157fdf959ad7f118", "LaetiporusSulphureus_synteny_grTriPseu1_1_UPPERCASED.paf:md5,08742c3817f0da391c7a6e78b5c0f83b", "gap_grTriPseu1_1.bed.gz:md5,d41d8cd98f00b204e9800998ecf8427e", "gap_grTriPseu1_1.bed.gz.csi:md5,a76ffd9c2c19bc3100eecc93162f31d9", - "grTriPseu1_1.fa.fai:md5,6a0e0fa3b99e5f707741ae67ff75bee0", - "grTriPseu1_1.unsorted.genome:md5,4443382b5a7370a55c78826708c01419", - "grTriPseu1_1_buscogene.bigBed:md5,894f75db52965f97c43f5a98f1c79aff", - "grTriPseu1_1_len_sorted.genome:md5,150bfa0a8719e091014111b313b42395", + "grTriPseu1_1_buscogene.bigBed:md5,c68c4571deb713c7a6cfae95c2243afb", "grTriPseu1_1_selfcomp.bigBed:md5,39dc23e73bf893b2f258703fb44f2c5d", - "LaetiporusSulphureus.gfLaeSulp1_cdna_punchlist.bed:md5,e76395a1251ae1017220ec751f856d1d", + "LaetiporusSulphureus.gfLaeSulp1_cdna_punchlist.bed:md5,fce8f4931f9e83d575beae57ba1c5d49", "halfcoverage.bed:md5,d41d8cd98f00b204e9800998ecf8427e", "zerodepth.bed:md5,eb0d0b05b3961a93e67d03df14d4d751", "repden_grTriPseu1_1.bed.gz:md5,ad9eacea65665b8ae884df2f3075dba6", @@ -313,9 +309,9 @@ ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.04.4" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2025-11-24T10:13:14.395872004" + "timestamp": "2026-02-20T12:56:48.026565957" } } \ No newline at end of file diff --git a/workflows/treeval.nf b/workflows/treeval.nf index 0fac6a26..4d7d4f4b 100755 --- a/workflows/treeval.nf +++ b/workflows/treeval.nf @@ -51,13 +51,12 @@ include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_tree workflow TREEVAL { take: - assembly_id // channel: reference // channel: map_order // channel: hic mapping order (from yaml) assem_reads // channel: path to longreads directory (from yaml) - kmer_prof_file // channel: + _kmer_prof_file // channel: hic_reads // channel: path to hic reads directory (from yaml) - supp_reads // channel: + _supp_reads // channel: align_genesets // channel: paths to genesets in from yaml synteny_paths // channel: path to syntenic genomes (from yaml) intron_size // channel: @@ -77,7 +76,7 @@ workflow TREEVAL { pipeline_mode = params.mode - exclude_steps_list = params.steps == "NONE" ? [] : params.steps.tokenize(',').collect { it.trim() } + exclude_steps_list = params.steps == "NONE" ? [] : params.steps.tokenize(',').collect { param_steps -> param_steps.trim() } all_steps_list = ["insilico_digest", "gene_alignment", "repeat_density", "gap_finder", "selfcomp", "synteny", "read_coverage", "telo_finder", "busco", "kmer", "hic_mapping", "NONE"] @@ -126,29 +125,19 @@ workflow TREEVAL { // // ASSET CHANNELS: Set up channels for required asset files // - Channel - .fromPath( "${projectDir}/assets/gene_alignment/assm_*.as", checkIfExists: true) - .map { as_file -> - tuple ( - [ type : as_file.baseName.split('_').last() ], - as_file - ) - } - .set { gene_alignment_asfiles } - - Channel + channel .fromPath( "${projectDir}/assets/digest/digest.as", checkIfExists: true ) .set { digest_asfile } - Channel + channel .fromPath( "${projectDir}/assets/self_comp/selfcomp.as", checkIfExists: true ) .set { selfcomp_asfile } - Channel + channel .fromPath( "${projectDir}/assets/busco_gene/busco.as", checkIfExists: true ) .set { buscogene_asfile } - Channel + channel .fromPath( "${projectDir}/assets/busco_gene/lep_ancestral.tsv", checkIfExists: true ) .set { ancestral_table } @@ -162,7 +151,6 @@ workflow TREEVAL { false, ) ch_upper_ref = GAWK_UPPER_SEQUENCE.out.output - ch_versions = ch_versions.mix( GAWK_UPPER_SEQUENCE.out.versions ) // @@ -172,7 +160,6 @@ workflow TREEVAL { ch_upper_ref, map_order ) - ch_versions = ch_versions.mix( GENERATE_GENOME.out.versions ) // @@ -180,7 +167,7 @@ workflow TREEVAL { // file with enzymatic digest sites. // if ( include_workflow_steps.contains("insilico_digest")) { - ch_enzyme = Channel.of( "bspq1","bsss1","DLE1" ) + ch_enzyme = channel.of( "bspq1","bsss1","DLE1" ) INSILICO_DIGEST ( GENERATE_GENOME.out.dot_genome, @@ -212,8 +199,7 @@ workflow TREEVAL { ch_upper_ref, GENERATE_GENOME.out.ref_index, align_genesets, - intron_size, - gene_alignment_asfiles + intron_size ) ch_versions = ch_versions.mix(GENE_ALIGNMENT.out.versions) } @@ -230,7 +216,7 @@ workflow TREEVAL { ch_versions = ch_versions.mix( REPEAT_DENSITY.out.versions ) ch_repeat_density = REPEAT_DENSITY.out.repeat_density } else { - ch_repeat_density = Channel.of([[],[]]) + ch_repeat_density = channel.of([[],[]]) } @@ -241,10 +227,9 @@ workflow TREEVAL { GAP_FINDER ( ch_upper_ref ) - ch_versions = ch_versions.mix( GAP_FINDER.out.versions ) ch_gap_file = GAP_FINDER.out.gap_file } else { - ch_gap_file = Channel.of([[],[]]) + ch_gap_file = channel.of([[],[]]) } @@ -271,7 +256,6 @@ workflow TREEVAL { ch_upper_ref, synteny_paths ) - ch_versions = ch_versions.mix( SYNTENY.out.versions ) } @@ -287,7 +271,7 @@ workflow TREEVAL { ch_versions = ch_versions.mix( READ_COVERAGE.out.versions ) ch_coverage_bg_norm = READ_COVERAGE.out.ch_covbw_nor } else { - ch_coverage_bg_norm = Channel.of([[],[]]) + ch_coverage_bg_norm = channel.of([[],[]]) } @@ -303,7 +287,7 @@ workflow TREEVAL { // ch_telo_bedgraph maybe either a [file] or [file1, file2] ch_telo_bedgraph = TELO_FINDER.out.bedgraph_file } else { - ch_telo_bedgraph = Channel.of([]) + ch_telo_bedgraph = channel.of([]) } @@ -331,7 +315,6 @@ workflow TREEVAL { ch_upper_ref, assem_reads ) - ch_versions = ch_versions.mix( KMER.out.versions ) } @@ -344,7 +327,6 @@ workflow TREEVAL { GENERATE_GENOME.out.ref_index, GENERATE_GENOME.out.dot_genome, hic_reads, - assembly_id, ch_gap_file, ch_coverage_bg_norm, ch_telo_bedgraph, @@ -360,7 +342,7 @@ workflow TREEVAL { // // Collate and save software versions // - def topic_versions = Channel.topic("versions") + def topic_versions = channel.topic("versions") .distinct() .branch { entry -> versions_file: entry instanceof Path @@ -388,7 +370,7 @@ workflow TREEVAL { emit: - versions = ch_versions // channel: [ path(versions.yml) ] + versions = ch_collated_versions // channel: [ path(versions.yml) ] } /*
Process Name \\", - " \\ Software Version
CUSTOM_DUMPSOFTWAREVERSIONSpython3.11.7
yaml5.4.1
TOOL1tool10.11.9
TOOL2tool21.9
WorkflowNextflow