annotate 0.2.0/workflows/cronology_db.nf @ 17:b571995ddb51

planemo upload
author kkonganti
date Mon, 15 Jul 2024 19:01:29 -0400
parents a5f31c44f8c9
children
rev   line source
kkonganti@11 1 // Define any required imports for this specific workflow
kkonganti@11 2 import java.nio.file.Paths
kkonganti@11 3 import nextflow.file.FileHelper
kkonganti@11 4
kkonganti@11 5 // Include any necessary methods
kkonganti@11 6 include { \
kkonganti@11 7 summaryOfParams; stopNow; fastqEntryPointHelp; sendMail; \
kkonganti@11 8 addPadding; wrapUpHelp } from "${params.routines}"
kkonganti@11 9 include { dpubmlstpyHelp } from "${params.toolshelp}${params.fs}dpubmlstpy"
kkonganti@11 10 include { checkm2predictHelp } from "${params.toolshelp}${params.fs}checkm2predict"
kkonganti@11 11 include { guncrunHelp } from "${params.toolshelp}${params.fs}guncrun"
kkonganti@11 12 include { mlstHelp } from "${params.toolshelp}${params.fs}mlst"
kkonganti@11 13
kkonganti@11 14 // Exit if help requested before any subworkflows
kkonganti@11 15 if (params.help) {
kkonganti@11 16 log.info help()
kkonganti@11 17 exit 0
kkonganti@11 18 }
kkonganti@11 19
kkonganti@11 20 // Include any necessary modules and subworkflows
kkonganti@11 21 include { DOWNLOAD_PDG_METADATA } from "${params.modules}${params.fs}download_pdg_metadata${params.fs}main"
kkonganti@11 22 include { DOWNLOAD_PUBMLST_SCHEME } from "${params.modules}${params.fs}download_pubmlst_scheme${params.fs}main"
kkonganti@11 23 include { FILTER_PDG_METADATA } from "${params.modules}${params.fs}filter_pdg_metadata${params.fs}main"
kkonganti@11 24 include { GUNC_RUN } from "${params.modules}${params.fs}gunc${params.fs}run${params.fs}main"
kkonganti@11 25 include { CHECKM2_PREDICT } from "${params.modules}${params.fs}checkm2${params.fs}predict${params.fs}main"
kkonganti@11 26 include { QUAL_PASSED_GENOMES } from "${params.modules}${params.fs}custom${params.fs}qual_passed_genomes${params.fs}main"
kkonganti@11 27 include { SCAFFOLD_GENOMES } from "${params.modules}${params.fs}scaffold_genomes${params.fs}main"
kkonganti@11 28 include { MLST } from "${params.modules}${params.fs}mlst${params.fs}main"
kkonganti@11 29 include { INDEX_PDG_METADATA } from "${params.modules}${params.fs}index_pdg_metadata${params.fs}main"
kkonganti@11 30 include { MASH_SKETCH } from "${params.modules}${params.fs}mash${params.fs}sketch${params.fs}main"
kkonganti@11 31 include { MASH_PASTE } from "${params.modules}${params.fs}mash${params.fs}paste${params.fs}main"
kkonganti@11 32 include { DUMP_SOFTWARE_VERSIONS } from "${params.modules}${params.fs}custom${params.fs}dump_software_versions${params.fs}main"
kkonganti@11 33
kkonganti@11 34 /*
kkonganti@11 35 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 36 INPUTS AND ANY CHECKS FOR THE CRONOLOGY_DB WORKFLOW
kkonganti@11 37 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 38 */
kkonganti@11 39
kkonganti@11 40 if (!params.output) {
kkonganti@11 41 stopNow("Please mention the absolute UNIX path to store the DB flat files\n" +
kkonganti@11 42 "using the --output option.\n" +
kkonganti@11 43 "Ex: --output /path/to/cronology/db_files")
kkonganti@11 44 }
kkonganti@11 45
kkonganti@11 46 checkDBPathExists(params.guncrun_dbpath, 'GUNC')
kkonganti@11 47 checkDBPathExists(params.checkm2predict_dbpath, 'CheckM2')
kkonganti@11 48
kkonganti@11 49 /*
kkonganti@11 50 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 51 RUN THE CRONOLOGY_DB WORKFLOW
kkonganti@11 52 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 53 */
kkonganti@11 54
kkonganti@11 55 workflow CRONOLOGY_DB {
kkonganti@11 56 main:
kkonganti@11 57 log.info summaryOfParams()
kkonganti@11 58
kkonganti@11 59 DOWNLOAD_PDG_METADATA ( params.pdg_release ?: null )
kkonganti@11 60
kkonganti@11 61 DOWNLOAD_PDG_METADATA.out.versions
kkonganti@11 62 .set { software_versions }
kkonganti@11 63
kkonganti@11 64 DOWNLOAD_PUBMLST_SCHEME ( params.dpubmlstpy_org ?: null )
kkonganti@11 65
kkonganti@11 66 FILTER_PDG_METADATA (
kkonganti@11 67 DOWNLOAD_PDG_METADATA.out.accs
kkonganti@11 68 .splitText(by: params.genomes_chunk, file: true)
kkonganti@11 69 )
kkonganti@11 70
kkonganti@11 71 FILTER_PDG_METADATA.out.accs_chunk_tbl
kkonganti@11 72 .collectFile(sort: { acc_f -> acc_f.simpleName })
kkonganti@11 73 .multiMap { acc_chunk_file ->
kkonganti@11 74 def meta = [:]
kkonganti@11 75 meta.id = 'AssemblyQC'
kkonganti@11 76 meta.phone_ncbi = true
kkonganti@11 77 gunc: [ meta, params.guncrun_dbpath, acc_chunk_file ]
kkonganti@11 78 checkm2: [ meta, params.checkm2predict_dbpath, acc_chunk_file ]
kkonganti@11 79 }
kkonganti@11 80 .set { ch_run_qual_on_these_accs }
kkonganti@11 81
kkonganti@11 82 CHECKM2_PREDICT ( ch_run_qual_on_these_accs.checkm2 )
kkonganti@11 83
kkonganti@11 84 GUNC_RUN ( ch_run_qual_on_these_accs.gunc )
kkonganti@11 85
kkonganti@11 86 QUAL_PASSED_GENOMES (
kkonganti@11 87 CHECKM2_PREDICT.out.quality_report_passed
kkonganti@11 88 .map { meta, qual ->
kkonganti@11 89 [ qual ]
kkonganti@11 90 }
kkonganti@11 91 .collect()
kkonganti@11 92 .flatten()
kkonganti@11 93 .collectFile(name: 'checkm2_quality_passed.txt'),
kkonganti@11 94 GUNC_RUN.out.quality_report_passed
kkonganti@11 95 .map { meta, qual ->
kkonganti@11 96 [ qual ]
kkonganti@11 97 }
kkonganti@11 98 .collect()
kkonganti@11 99 .flatten()
kkonganti@11 100 .collectFile(name: 'gunc_quality_passed.txt')
kkonganti@11 101 )
kkonganti@11 102
kkonganti@11 103 SCAFFOLD_GENOMES (
kkonganti@11 104 QUAL_PASSED_GENOMES.out.accs
kkonganti@11 105 .splitText(by: params.genomes_chunk, file: true)
kkonganti@11 106 )
kkonganti@11 107
kkonganti@11 108 SCAFFOLD_GENOMES.out.scaffolded
kkonganti@11 109 .multiMap { scaffolded ->
kkonganti@11 110 def meta = [:]
kkonganti@11 111 meta.id = (params.pdg_release ?: 'NCBI Pathogen Genomes')
kkonganti@11 112 mlst: [ meta, scaffolded ]
kkonganti@11 113 mash: [ meta, scaffolded ]
kkonganti@11 114 }
kkonganti@11 115 .set { ch_scaffolded_genomes }
kkonganti@11 116
kkonganti@11 117 MLST (
kkonganti@11 118 ch_scaffolded_genomes.mlst
kkonganti@11 119 .combine( DOWNLOAD_PUBMLST_SCHEME.out.pubmlst_dir )
kkonganti@11 120 )
kkonganti@11 121
kkonganti@11 122 MLST.out.tsv
kkonganti@11 123 .map { meta, tsv ->
kkonganti@11 124 tsv
kkonganti@11 125 }
kkonganti@11 126 .collectFile(
kkonganti@11 127 name: 'mlst_results.tsv',
kkonganti@11 128 keepHeader: true,
kkonganti@11 129 skip: 1
kkonganti@11 130 )
kkonganti@11 131 .set { ch_mlst_results }
kkonganti@11 132
kkonganti@11 133 INDEX_PDG_METADATA (
kkonganti@11 134 DOWNLOAD_PDG_METADATA.out.pdg_metadata,
kkonganti@11 135 DOWNLOAD_PDG_METADATA.out.snp_cluster_metadata,
kkonganti@11 136 DOWNLOAD_PDG_METADATA.out.accs,
kkonganti@11 137 ch_mlst_results
kkonganti@11 138 )
kkonganti@11 139
kkonganti@11 140 MASH_SKETCH (
kkonganti@11 141 ch_scaffolded_genomes.mash
kkonganti@11 142 .map { it -> tuple ( it[0], it[1].flatten() ) }
kkonganti@11 143 )
kkonganti@11 144
kkonganti@11 145 MASH_PASTE (
kkonganti@11 146 MASH_SKETCH.out.sketch
kkonganti@11 147 .map { meta, sketch ->
kkonganti@11 148 [ [id: (params.pdg_release ?: 'NCBI Pathogen Genomes')], sketch ]
kkonganti@11 149 }
kkonganti@11 150 .groupTuple(by: [0])
kkonganti@11 151 )
kkonganti@11 152
kkonganti@11 153 DUMP_SOFTWARE_VERSIONS (
kkonganti@11 154 software_versions
kkonganti@11 155 .mix (
kkonganti@11 156 DOWNLOAD_PDG_METADATA.out.versions,
kkonganti@11 157 DOWNLOAD_PUBMLST_SCHEME.out.versions,
kkonganti@11 158 FILTER_PDG_METADATA.out.versions,
kkonganti@11 159 CHECKM2_PREDICT.out.versions,
kkonganti@11 160 GUNC_RUN.out.versions,
kkonganti@11 161 QUAL_PASSED_GENOMES.out.versions,
kkonganti@11 162 SCAFFOLD_GENOMES.out.versions,
kkonganti@11 163 MLST.out.versions,
kkonganti@11 164 INDEX_PDG_METADATA.out.versions,
kkonganti@11 165 MASH_SKETCH.out.versions,
kkonganti@11 166 MASH_PASTE.out.versions
kkonganti@11 167 )
kkonganti@11 168 .unique()
kkonganti@11 169 .collectFile(name: 'collected_versions.yml')
kkonganti@11 170 )
kkonganti@11 171 }
kkonganti@11 172
kkonganti@11 173 /*
kkonganti@11 174 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 175 ON COMPLETE, SHOW GORY DETAILS OF ALL PARAMS WHICH WILL BE HELPFUL TO DEBUG
kkonganti@11 176 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 177 */
kkonganti@11 178
kkonganti@11 179 workflow.onComplete {
kkonganti@11 180 if (workflow.success) {
kkonganti@11 181 sendMail()
kkonganti@11 182 }
kkonganti@11 183 }
kkonganti@11 184
kkonganti@11 185 workflow.onError {
kkonganti@11 186 sendMail()
kkonganti@11 187 }
kkonganti@11 188
kkonganti@11 189 /*
kkonganti@11 190 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 191 METHOD TO CHECK IF DB PATHS EXIST
kkonganti@11 192 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 193 */
kkonganti@11 194
kkonganti@11 195 def checkDBPathExists(db_path, msg) {
kkonganti@11 196 db_path_obj = file( db_path )
kkonganti@11 197
kkonganti@11 198 if (!db_path_obj.exists()) {
kkonganti@11 199 stopNow("Please check if the database path for ${msg}\n" +
kkonganti@11 200 "[ ${db_path} ]\nexists.")
kkonganti@11 201 }
kkonganti@11 202 }/*
kkonganti@11 203
kkonganti@11 204 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 205 HELP TEXT METHODS FOR CRONOLOGY WORKFLOW
kkonganti@11 206 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 207 */
kkonganti@11 208
kkonganti@11 209 def help() {
kkonganti@11 210
kkonganti@11 211 Map helptext = [:]
kkonganti@11 212
kkonganti@11 213 helptext.putAll (
kkonganti@11 214 fastqEntryPointHelp().findAll {
kkonganti@11 215 it.key =~ /Required|output|Other|Workflow|Author|Version/
kkonganti@11 216 } +
kkonganti@11 217 dpubmlstpyHelp(params).text +
kkonganti@11 218 checkm2predictHelp(params).text +
kkonganti@11 219 guncrunHelp(params).text +
kkonganti@11 220 wrapUpHelp()
kkonganti@11 221 )
kkonganti@11 222
kkonganti@11 223 return addPadding(helptext)
kkonganti@11 224 }