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