@@ -56,10 +56,11 @@ workflow INPUT_CHECK {
5656 blastn : db_meta. type == " blastn"
5757 blastp : db_meta. type == " blastp"
5858 blastx : db_meta. type == " blastx"
59- busco_output : db_meta. type == " busco_output "
59+ precomputed_busco : db_meta. type == " precomputed_busco "
6060 busco : db_meta. type == " busco"
6161 taxdump : db_meta. type == " taxdump"
6262 }
63+ ch_databases. precomputed_busco. view()
6364
6465 //
6566 // SUBWORKFLOW: Process samplesheet
@@ -105,7 +106,7 @@ workflow INPUT_CHECK {
105106
106107 // Get the source paths of all the databases, except Busco which is not recorded in the blobDir meta.json
107108 databases
108- | filter { meta, file -> meta. type != " busco" }
109+ | filter { meta, file -> meta. type != " busco" && meta . type != " precomputed_busco " }
109110 | map {meta, file -> [meta, file. toUriString()]}
110111 | set { db_paths }
111112
@@ -153,7 +154,22 @@ workflow INPUT_CHECK {
153154 | collect
154155 | set { ch_busco_lineages }
155156
156- // Remove any invalid lineages from busco_outputs
157+ // Format pre-computed BUSCOs (if provided)
158+ // Parse the BUSCO output directories
159+ if (ch_databases. precomputed_busco) {
160+ ch_parsed_busco = ch_databases. precomputed_busco
161+ .flatMap { meta, dir ->
162+ def subdirs = file(dir). listFiles(). findAll { it. isDirectory() }
163+ subdirs. collect { subdir ->
164+ def lineage = subdir. name. split(' _' )[1 .. -1 ]. join(' _' )
165+ [[type : ' precomputed_busco' , id : subdir. name, lineage : lineage], subdir]
166+ }
167+ }
168+ } else {
169+ ch_parsed_busco = Channel . empty()
170+ }
171+
172+ // Remove any invalid lineages from precomputed_busco
157173 ch_busco_lineages_list = ch_busco_lineages. flatten()
158174 ch_parsed_busco_filtered = ch_parsed_busco
159175 .filter { meta, path ->
@@ -180,6 +196,7 @@ workflow INPUT_CHECK {
180196 blastn = ch_databases. blastn. first() // channel: [ val(meta), path(blastn_db) ]
181197 blastp = ch_databases. blastp. first() // channel: [ val(meta), path(blastp_db) ]
182198 blastx = ch_databases. blastx. first() // channel: [ val(meta), path(blastx_db) ]
199+ precomputed_busco = ch_parsed_busco // channel: [ val(meta), path(busco_run_dir) ]
183200 busco_db = ch_busco_db // channel: [ path(busco_db) ]
184201 taxdump = ch_databases. taxdump. map { _, db_path -> db_path } // channel: [ path(taxdump) ]
185202 versions = ch_versions // channel: [ versions.yml ]
0 commit comments