annotate 0.1.0/workflows/cronology_db.nf @ 6:a3c1cba6f773

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