kkonganti@1: // Define any required imports for this specific workflow kkonganti@1: import java.nio.file.Paths kkonganti@1: import nextflow.file.FileHelper kkonganti@1: kkonganti@1: kkonganti@1: // Include any necessary methods kkonganti@1: include { \ kkonganti@1: fastqEntryPointHelp; summaryOfParams; stopNow; sendMail; \ kkonganti@1: addPadding; wrapUpHelp } from "${params.routines}" kkonganti@1: include { wcompHelp } from "${params.toolshelp}${params.fs}wcomp" kkonganti@1: include { wsnpHelp } from "${params.toolshelp}${params.fs}wsnp" kkonganti@1: include { mashsketchHelp } from "${params.toolshelp}${params.fs}mashsketch" kkonganti@1: kkonganti@1: kkonganti@1: // Exit if help requested before any subworkflows kkonganti@1: if (params.help) { kkonganti@1: log.info help() kkonganti@1: exit 0 kkonganti@1: } kkonganti@1: kkonganti@1: kkonganti@1: // Include any necessary modules and subworkflows kkonganti@1: include { DOWNLOAD_PDG_METADATA } from "${params.modules}${params.fs}download_pdg_metadata${params.fs}main" kkonganti@1: include { FILTER_PDG_METADATA } from "${params.modules}${params.fs}filter_pdg_metadata${params.fs}main" kkonganti@1: include { DB_PER_COMPUTED_SEROTYPE } from "${params.modules}${params.fs}db_per_computed_serotype${params.fs}main" kkonganti@1: include { DB_PER_SNP_CLUSTER } from "${params.modules}${params.fs}db_per_snp_cluster${params.fs}main" kkonganti@1: include { INDEX_METADATA } from "${params.modules}${params.fs}index_metadata${params.fs}main" kkonganti@1: include { SCAFFOLD_GENOMES } from "${params.modules}${params.fs}scaffold_genomes${params.fs}main" kkonganti@1: include { MASH_SKETCH } from "${params.modules}${params.fs}mash${params.fs}sketch${params.fs}main" kkonganti@1: include { DUMP_SOFTWARE_VERSIONS } from "${params.modules}${params.fs}custom${params.fs}dump_software_versions${params.fs}main" kkonganti@1: kkonganti@1: /* kkonganti@1: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kkonganti@1: INPUTS AND ANY CHECKS FOR THE BETTERCALLSAL_DB WORKFLOW kkonganti@1: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kkonganti@1: */ kkonganti@1: kkonganti@1: if (!params.output) { kkonganti@1: stopNow("Please mention the absolute UNIX path to store the DB flat files\n" + kkonganti@1: "using the --output option.\n" + kkonganti@1: "Ex: --output /path/to/bettercallsal/db_files") kkonganti@1: } kkonganti@1: kkonganti@1: /* kkonganti@1: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kkonganti@1: RUN THE BETTERCALLSAL_DB WORKFLOW kkonganti@1: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kkonganti@1: */ kkonganti@1: kkonganti@1: workflow BETTERCALLSAL_DB { kkonganti@1: main: kkonganti@1: log.info summaryOfParams() kkonganti@1: kkonganti@1: DOWNLOAD_PDG_METADATA ( params.pdg_release ?: null ) kkonganti@1: kkonganti@1: DOWNLOAD_PDG_METADATA kkonganti@1: .out kkonganti@1: .versions kkonganti@1: .set { software_versions } kkonganti@1: kkonganti@1: FILTER_PDG_METADATA ( DOWNLOAD_PDG_METADATA.out.accs ) kkonganti@1: kkonganti@1: DB_PER_COMPUTED_SEROTYPE ( kkonganti@1: FILTER_PDG_METADATA.out.accs_chunk_tbl, kkonganti@1: DOWNLOAD_PDG_METADATA.out.pdg_metadata kkonganti@1: ) kkonganti@1: kkonganti@1: DB_PER_SNP_CLUSTER ( kkonganti@1: FILTER_PDG_METADATA.out.accs_chunk_tbl, kkonganti@1: DOWNLOAD_PDG_METADATA.out.pdg_metadata, kkonganti@1: DOWNLOAD_PDG_METADATA.out.snp_cluster_metadata kkonganti@1: ) kkonganti@1: kkonganti@1: DB_PER_COMPUTED_SEROTYPE.out.genome_paths kkonganti@1: .map { query -> kkonganti@1: kv = [:] kkonganti@1: kv['id'] = 'comp' kkonganti@1: [ kv, query ] kkonganti@1: } kkonganti@1: .concat( kkonganti@1: DB_PER_SNP_CLUSTER.out.genome_paths kkonganti@1: .map { query -> kkonganti@1: kv = [:] kkonganti@1: kv['id'] = 'snp' kkonganti@1: [ kv, query ] kkonganti@1: } kkonganti@1: ) kkonganti@1: .groupTuple(by: [0]) kkonganti@1: .set { ch_mash_these_genomes } kkonganti@1: kkonganti@1: DB_PER_SNP_CLUSTER kkonganti@1: .out kkonganti@1: .asm_chunk_snp_tbl kkonganti@1: .concat( DB_PER_COMPUTED_SEROTYPE.out.asm_chunk_comp_tbl ) kkonganti@1: .map { acc -> kkonganti@1: [ acc.name.find(/\_comp|\_snp/), acc ] kkonganti@1: } kkonganti@1: .set { ch_index_metadata } kkonganti@1: kkonganti@1: INDEX_METADATA ( ch_index_metadata ) kkonganti@1: kkonganti@1: DB_PER_COMPUTED_SEROTYPE.out.accs_comp kkonganti@1: .concat( DB_PER_SNP_CLUSTER.out.accs_snp ) kkonganti@1: .collectFile(name: 'accs_to_download.txt') kkonganti@1: .splitText(by: params.genomes_chunk, file: true) kkonganti@1: .set { ch_accs_to_download } kkonganti@1: kkonganti@1: SCAFFOLD_GENOMES ( ch_accs_to_download ) kkonganti@1: kkonganti@1: SCAFFOLD_GENOMES kkonganti@1: .out kkonganti@1: .genomes_dir kkonganti@1: .toSortedList() kkonganti@1: .flatten() kkonganti@1: .unique() kkonganti@1: .set { ch_genomes_dir } kkonganti@1: kkonganti@1: MASH_SKETCH ( kkonganti@1: ch_mash_these_genomes.combine( ch_genomes_dir ) kkonganti@1: ) kkonganti@1: kkonganti@1: DUMP_SOFTWARE_VERSIONS ( kkonganti@1: software_versions kkonganti@1: .mix ( kkonganti@1: DOWNLOAD_PDG_METADATA.out.versions, kkonganti@1: FILTER_PDG_METADATA.out.versions, kkonganti@1: DB_PER_COMPUTED_SEROTYPE.out.versions, kkonganti@1: DB_PER_SNP_CLUSTER.out.versions, kkonganti@1: INDEX_METADATA.out.versions, kkonganti@1: SCAFFOLD_GENOMES.out.versions, kkonganti@1: MASH_SKETCH.out.versions, kkonganti@1: ) kkonganti@1: .unique() kkonganti@1: .collectFile(name: 'collected_versions.yml') kkonganti@1: ) kkonganti@1: } kkonganti@1: kkonganti@1: /* kkonganti@1: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kkonganti@1: ON COMPLETE, SHOW GORY DETAILS OF ALL PARAMS WHICH WILL BE HELPFUL TO DEBUG kkonganti@1: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kkonganti@1: */ kkonganti@1: kkonganti@1: workflow.onComplete { kkonganti@1: if (workflow.success) { kkonganti@1: sendMail() kkonganti@1: } kkonganti@1: } kkonganti@1: kkonganti@1: workflow.onError { kkonganti@1: sendMail() kkonganti@1: } kkonganti@1: kkonganti@1: /* kkonganti@1: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kkonganti@1: HELP TEXT METHODS FOR BETTERCALLSAL_DB WORKFLOW kkonganti@1: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kkonganti@1: */ kkonganti@1: kkonganti@1: def help() { kkonganti@1: kkonganti@1: Map helptext = [:] kkonganti@1: kkonganti@1: helptext.putAll ( kkonganti@1: fastqEntryPointHelp().findAll { kkonganti@1: it.key =~ /Required|output|Other|Workflow|Author|Version/ kkonganti@1: } + kkonganti@1: wcompHelp(params).text + kkonganti@1: wsnpHelp(params).text + kkonganti@1: mashsketchHelp(params).text + kkonganti@1: wrapUpHelp() kkonganti@1: ) kkonganti@1: kkonganti@1: return addPadding(helptext) kkonganti@1: }