1
0
Fork 0
mirror of https://github.com/MillironX/taxprofiler.git synced 2024-11-22 10:39:54 +00:00

Make bracken db_params be a semi-colon separate list to allow kraken and bracken parameters

This commit is contained in:
James Fellows Yates 2023-02-08 13:34:36 +01:00
parent 18886c0cbc
commit fe3d42ffd7
2 changed files with 42 additions and 11 deletions

View file

@ -32,7 +32,6 @@ workflow DB_CHECK {
validate_db_rows(it) validate_db_rows(it)
create_db_channels(it) create_db_channels(it)
} }
.dump(tag: "blah")
ch_dbs_for_untar = parsed_samplesheet ch_dbs_for_untar = parsed_samplesheet
.branch { .branch {

View file

@ -120,17 +120,28 @@ workflow PROFILING {
} }
if ( params.run_kraken2 ) { if ( params.run_kraken2 ) {
// Have to pick first element of db_params if using bracken,
ch_input_for_kraken2 = ch_input_for_profiling.kraken2 // as db sheet for bracken must have ; sep list to
.dump(tag: "ch_input_for_kraken2") // distinguish between kraken and bracken parameters
ch_input_for_kraken2 = ch_input_for_profiling.kraken2
.dump(tag: "ch_input_for_kraken2_b4")
.map { .map {
// Have to pick first element if using bracken,
// as db sheet for bracken must have ; sep list to
meta, reads, db_meta, db -> meta, reads, db_meta, db ->
def db_meta_new = db_meta.clone() def db_meta_new = db_meta.clone()
db_meta_new['db_params'] = db_meta['tool'] == 'bracken' ? db_meta_new['db_params'].split(;)[0] : db_meta_new['db_params']
// Only take second element if one exists
def parsed_params = db_meta_new['db_params'].split(";")
if ( parsed_params.size() == 2 ) {
db_meta_new['db_params'] = parsed_params[0]
} else if ( parsed_params.size() == 0 ) {
db_meta_new['db_params'] = ""
} else {
db_meta_new['db_params'] = parsed_params[0]
}
[ meta, reads, db_meta_new, db ] [ meta, reads, db_meta_new, db ]
} }
.dump(tag: "ch_input_for_kraken2_after")
.multiMap { .multiMap {
it -> it ->
reads: [ it[0] + it[2], it[1] ] reads: [ it[0] + it[2], it[1] ]
@ -164,9 +175,6 @@ workflow PROFILING {
ch_kraken2_output = KRAKEN2_STANDARD_REPORT(ch_kraken2_output).report ch_kraken2_output = KRAKEN2_STANDARD_REPORT(ch_kraken2_output).report
} }
// TODO UPDATE BRACKEN TO TAKE SECOND ELEMENT OF LIST
// NEED TO DO CHECKS WHEN ONE OR THE OTHER IS EMPTY AS WELL
// Extract the database name to combine by. // Extract the database name to combine by.
ch_bracken_databases = databases ch_bracken_databases = databases
.filter { meta, db -> meta['tool'] == 'bracken' } .filter { meta, db -> meta['tool'] == 'bracken' }
@ -176,7 +184,31 @@ workflow PROFILING {
ch_input_for_bracken = ch_kraken2_output ch_input_for_bracken = ch_kraken2_output
.map { meta, report -> [meta['db_name'], meta, report] } .map { meta, report -> [meta['db_name'], meta, report] }
.combine(ch_bracken_databases, by: 0) .combine(ch_bracken_databases, by: 0)
.dump(tag: "ch_input_for_bracken") .dump(tag: "ch_input_for_bracken_b4")
.map {
key, meta, reads, db_meta, db ->
def db_meta_new = db_meta.clone()
// Have to pick second element if using bracken, as first element
// contains kraken parameters
if ( db_meta['tool'] == 'bracken' ) {
// Only take second element if one exists
def parsed_params = db_meta_new['db_params'].split(";")
if ( parsed_params.size() == 2 ) {
db_meta_new['db_params'] = parsed_params[1]
} else {
db_meta_new['db_params'] = ""
}
} else {
db_meta_new['db_params']
}
[ key, meta, reads, db_meta_new, db ]
}
.dump(tag: "ch_input_for_bracken_after")
.multiMap { key, meta, report, db_meta, db -> .multiMap { key, meta, report, db_meta, db ->
report: [meta + db_meta, report] report: [meta + db_meta, report]
db: db db: db