annotate 0.2.0/workflows/cronology.nf @ 11:a5f31c44f8c9

planemo upload
author kkonganti
date Mon, 15 Jul 2024 16:11:44 -0400
parents
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; conciseHelp; \
kkonganti@11 8 addPadding; wrapUpHelp } from "${params.routines}"
kkonganti@11 9 include { dpubmlstpyHelp } from "${params.toolshelp}${params.fs}dpubmlstpy"
kkonganti@11 10 include { fastpHelp } from "${params.toolshelp}${params.fs}fastp"
kkonganti@11 11 include { mashscreenHelp } from "${params.toolshelp}${params.fs}mashscreen"
kkonganti@11 12 include { tuspyHelp } from "${params.toolshelp}${params.fs}tuspy"
kkonganti@11 13 include { spadesHelp } from "${params.toolshelp}${params.fs}spades"
kkonganti@11 14 include { shovillHelp } from "${params.toolshelp}${params.fs}shovill"
kkonganti@11 15 include { polypolishHelp } from "${params.toolshelp}${params.fs}polypolish"
kkonganti@11 16 include { mashtreeHelp } from "${params.toolshelp}${params.fs}mashtree"
kkonganti@11 17 include { quastHelp } from "${params.toolshelp}${params.fs}quast"
kkonganti@11 18 include { prodigalHelp } from "${params.toolshelp}${params.fs}prodigal"
kkonganti@11 19 include { prokkaHelp } from "${params.toolshelp}${params.fs}prokka"
kkonganti@11 20 include { pirateHelp } from "${params.toolshelp}${params.fs}pirate"
kkonganti@11 21 include { mlstHelp } from "${params.toolshelp}${params.fs}mlst"
kkonganti@11 22 include { abricateHelp } from "${params.toolshelp}${params.fs}abricate"
kkonganti@11 23
kkonganti@11 24 // Exit if help requested before any subworkflows
kkonganti@11 25 if (params.help) {
kkonganti@11 26 log.info help()
kkonganti@11 27 exit 0
kkonganti@11 28 }
kkonganti@11 29
kkonganti@11 30 // Include any necessary modules and subworkflows
kkonganti@11 31 include { PROCESS_FASTQ } from "${params.subworkflows}${params.fs}process_fastq"
kkonganti@11 32 include { PRODKA } from "${params.subworkflows}${params.fs}prodka"
kkonganti@11 33 include { DOWNLOAD_PUBMLST_SCHEME } from "${params.modules}${params.fs}download_pubmlst_scheme${params.fs}main"
kkonganti@11 34 include { DOWNLOAD_REF_GENOME } from "${params.modules}${params.fs}download_ref_genome${params.fs}main"
kkonganti@11 35 include { FASTP } from "${params.modules}${params.fs}fastp${params.fs}main"
kkonganti@11 36 include { MASH_SCREEN } from "${params.modules}${params.fs}mash${params.fs}screen${params.fs}main"
kkonganti@11 37 include { TOP_UNIQUE_SEROVARS } from "${params.modules}${params.fs}top_unique_serovars${params.fs}main"
kkonganti@11 38 include { CAT_UNIQUE } from "${params.modules}${params.fs}cat${params.fs}unique${params.fs}main"
kkonganti@11 39 include { SPADES_ASSEMBLE } from "${params.modules}${params.fs}spades${params.fs}assemble${params.fs}main"
kkonganti@11 40 include { SHOVILL } from "${params.modules}${params.fs}shovill${params.fs}main"
kkonganti@11 41 include { BWA_IDX_MEM } from "${params.modules}${params.fs}custom${params.fs}bwa_idx_mem${params.fs}main"
kkonganti@11 42 include { POLYPOLISH } from "${params.modules}${params.fs}polypolish${params.fs}main"
kkonganti@11 43 include { QUAST } from "${params.modules}${params.fs}quast${params.fs}main"
kkonganti@11 44 include { RMLST_POST } from "${params.modules}${params.fs}rmlst${params.fs}main"
kkonganti@11 45 include { PIRATE } from "${params.modules}${params.fs}pirate${params.fs}main"
kkonganti@11 46 include { MASHTREE } from "${params.modules}${params.fs}mashtree${params.fs}main"
kkonganti@11 47 include { UPLOAD_MICROREACT } from "${params.modules}${params.fs}upload_microreact${params.fs}main"
kkonganti@11 48 include { MLST } from "${params.modules}${params.fs}mlst${params.fs}main"
kkonganti@11 49 include { ABRICATE_RUN } from "${params.modules}${params.fs}abricate${params.fs}run${params.fs}main"
kkonganti@11 50 include { ABRICATE_SUMMARY } from "${params.modules}${params.fs}abricate${params.fs}summary${params.fs}main"
kkonganti@11 51 include { TABLE_SUMMARY } from "${params.modules}${params.fs}cat${params.fs}tables${params.fs}main"
kkonganti@11 52 include { DUMP_SOFTWARE_VERSIONS } from "${params.modules}${params.fs}custom${params.fs}dump_software_versions${params.fs}main"
kkonganti@11 53 include { MULTIQC } from "${params.modules}${params.fs}multiqc${params.fs}main"
kkonganti@11 54
kkonganti@11 55 /*
kkonganti@11 56 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 57 INPUTS AND ANY CHECKS FOR THE CRONOLOGY WORKFLOW
kkonganti@11 58 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 59 */
kkonganti@11 60 def spades_custom_hmm = (params.spades_hmm ? file ( "${params.spades_hmm}" ) : false)
kkonganti@11 61 def reads_platform = 0
kkonganti@11 62 def abricate_dbs = [ 'ncbiamrplus', 'resfinder', 'megares', 'argannot' ]
kkonganti@11 63
kkonganti@11 64 reads_platform += (params.input ? 1 : 0)
kkonganti@11 65
kkonganti@11 66 if (params.upload_microreact) {
kkonganti@11 67 checkMetadataExists(params.microreact_api_key, 'Microreact API Key')
kkonganti@11 68 }
kkonganti@11 69
kkonganti@11 70 if (spades_custom_hmm && !spades_custom_hmm.exists()) {
kkonganti@11 71 stopNow("Please check if the following SPAdes' custom HMM directory\n" +
kkonganti@11 72 "path is valid:\n${params.spades_hmm}\nCannot proceed further!")
kkonganti@11 73 }
kkonganti@11 74
kkonganti@11 75 if (reads_platform < 1 || reads_platform == 0) {
kkonganti@11 76 stopNow("Please mention at least one absolute path to input folder which contains\n" +
kkonganti@11 77 "FASTQ files sequenced using the --input option.\n" +
kkonganti@11 78 "Ex: --input (Illumina or Generic short reads in FASTQ format)")
kkonganti@11 79 }
kkonganti@11 80
kkonganti@11 81 /*
kkonganti@11 82 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 83 RUN THE CRONOLOGY WORKFLOW
kkonganti@11 84 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 85 */
kkonganti@11 86
kkonganti@11 87 workflow CRONOLOGY {
kkonganti@11 88 main:
kkonganti@11 89 ch_mqc_custom_tbl = Channel.empty()
kkonganti@11 90 ch_dummy = Channel.fromPath("${params.dummyfile}")
kkonganti@11 91 ch_dummy2 = Channel.fromPath("${params.dummyfile2}")
kkonganti@11 92
kkonganti@11 93 log.info summaryOfParams()
kkonganti@11 94
kkonganti@11 95 PROCESS_FASTQ()
kkonganti@11 96
kkonganti@11 97 PROCESS_FASTQ.out.versions
kkonganti@11 98 .set { software_versions }
kkonganti@11 99
kkonganti@11 100 PROCESS_FASTQ.out.processed_reads
kkonganti@11 101 .map { meta, fastq ->
kkonganti@11 102 meta.sequence_sketch = (params.mash_sketch ?: null)
kkonganti@11 103 [meta, fastq]
kkonganti@11 104 }
kkonganti@11 105 .set { ch_processed_reads }
kkonganti@11 106
kkonganti@11 107 DOWNLOAD_PUBMLST_SCHEME( params.dpubmlstpy_org ?: null )
kkonganti@11 108
kkonganti@11 109 DOWNLOAD_REF_GENOME(
kkonganti@11 110 (params.ref_acc ? ['id': params.ref_acc] : null)
kkonganti@11 111 )
kkonganti@11 112
kkonganti@11 113 FASTP( ch_processed_reads )
kkonganti@11 114
kkonganti@11 115 FASTP.out.passed_reads
kkonganti@11 116 .set { ch_processed_reads }
kkonganti@11 117
kkonganti@11 118 FASTP.out.json
kkonganti@11 119 .map { meta, json -> [ json ] }
kkonganti@11 120 .collect()
kkonganti@11 121 .set { ch_multiqc }
kkonganti@11 122
kkonganti@11 123 MASH_SCREEN( ch_processed_reads )
kkonganti@11 124
kkonganti@11 125 TOP_UNIQUE_SEROVARS( MASH_SCREEN.out.screened )
kkonganti@11 126
kkonganti@11 127 TOP_UNIQUE_SEROVARS.out.tsv
kkonganti@11 128 .map { meta, tsv -> tsv }
kkonganti@11 129 .collectFile(
kkonganti@11 130 name: 'iTOL_metadata_w_dups.txt',
kkonganti@11 131 keepHeader: true,
kkonganti@11 132 skip: 4,
kkonganti@11 133 sort: true
kkonganti@11 134 )
kkonganti@11 135 .map { file ->
kkonganti@11 136 def meta = [:]
kkonganti@11 137 meta.id = 'Unique iTOL Metadata'
kkonganti@11 138 meta.skip_header = 4
kkonganti@11 139 [meta, file]
kkonganti@11 140 }
kkonganti@11 141 .concat(
kkonganti@11 142 TOP_UNIQUE_SEROVARS.out.popup
kkonganti@11 143 .map { meta, popup -> popup }
kkonganti@11 144 .collectFile(
kkonganti@11 145 name: 'iTOL_2_NCBI_Pathogens_w_dups.txt',
kkonganti@11 146 keepHeader: true,
kkonganti@11 147 skip: 3,
kkonganti@11 148 sort: true
kkonganti@11 149 )
kkonganti@11 150 .map { file ->
kkonganti@11 151 def meta = [:]
kkonganti@11 152 meta.id = 'Unique iTOL Popup'
kkonganti@11 153 meta.skip_header = 3
kkonganti@11 154 [meta, file]
kkonganti@11 155 }
kkonganti@11 156 )
kkonganti@11 157 .set { ch_uniq }
kkonganti@11 158
kkonganti@11 159 TOP_UNIQUE_SEROVARS.out.accessions
kkonganti@11 160 .map { meta, acc -> acc }
kkonganti@11 161 .splitText()
kkonganti@11 162 .collect()
kkonganti@11 163 .flatten()
kkonganti@11 164 .unique()
kkonganti@11 165 .collectFile(name: 'tree_genomes.txt')
kkonganti@11 166 .map { genomes -> [ [id: 'hitsTree'], genomes ]}
kkonganti@11 167 .set { ch_genomes_fofn }
kkonganti@11 168
kkonganti@11 169 CAT_UNIQUE( ch_uniq )
kkonganti@11 170
kkonganti@11 171 if (params.fq_single_end) {
kkonganti@11 172 SPADES_ASSEMBLE(
kkonganti@11 173 ch_processed_reads
kkonganti@11 174 .combine(ch_dummy)
kkonganti@11 175 .combine(ch_dummy2)
kkonganti@11 176 )
kkonganti@11 177
kkonganti@11 178 SPADES_ASSEMBLE.out.assembly
kkonganti@11 179 .set{ ch_assembly }
kkonganti@11 180
kkonganti@11 181 software_versions
kkonganti@11 182 .mix( SPADES_ASSEMBLE.out.versions.ifEmpty(null) )
kkonganti@11 183 .set { software_versions }
kkonganti@11 184 } else {
kkonganti@11 185 SHOVILL( ch_processed_reads )
kkonganti@11 186
kkonganti@11 187 SHOVILL.out.contigs
kkonganti@11 188 .set { ch_assembly }
kkonganti@11 189
kkonganti@11 190 software_versions
kkonganti@11 191 .mix( SHOVILL.out.versions.ifEmpty(null) )
kkonganti@11 192 .set { software_versions }
kkonganti@11 193 }
kkonganti@11 194
kkonganti@11 195 if (params.polypolish_run) {
kkonganti@11 196 BWA_IDX_MEM(
kkonganti@11 197 ch_assembly
kkonganti@11 198 .join( ch_processed_reads )
kkonganti@11 199 )
kkonganti@11 200
kkonganti@11 201 POLYPOLISH(
kkonganti@11 202 ch_assembly
kkonganti@11 203 .join( BWA_IDX_MEM.out.aligned_sam )
kkonganti@11 204 )
kkonganti@11 205
kkonganti@11 206 POLYPOLISH.out.polished
kkonganti@11 207 .set { ch_assembly }
kkonganti@11 208
kkonganti@11 209 software_versions
kkonganti@11 210 .mix(
kkonganti@11 211 BWA_IDX_MEM.out.versions,
kkonganti@11 212 POLYPOLISH.out.versions
kkonganti@11 213 )
kkonganti@11 214 .set { software_versions }
kkonganti@11 215 }
kkonganti@11 216
kkonganti@11 217 ch_assembly
kkonganti@11 218 .combine( DOWNLOAD_REF_GENOME.out.fasta )
kkonganti@11 219 .combine( DOWNLOAD_REF_GENOME.out.gff )
kkonganti@11 220 .multiMap { meta, consensus, fasta, gff ->
kkonganti@11 221 sample_fa: consensus
kkonganti@11 222 polished: [meta, consensus]
kkonganti@11 223 ref_fasta: [meta, fasta]
kkonganti@11 224 ref_gff: [meta, gff]
kkonganti@11 225 }
kkonganti@11 226 .set { ch_quast }
kkonganti@11 227
kkonganti@11 228 MASHTREE(
kkonganti@11 229 ch_genomes_fofn,
kkonganti@11 230 DOWNLOAD_REF_GENOME.out.fasta
kkonganti@11 231 .concat( ch_quast.sample_fa )
kkonganti@11 232 .collect()
kkonganti@11 233 )
kkonganti@11 234
kkonganti@11 235 if (params.upload_microreact) {
kkonganti@11 236 UPLOAD_MICROREACT(
kkonganti@11 237 MASHTREE.out.nwk
kkonganti@11 238 .map { meta, nwk ->
kkonganti@11 239 nwk
kkonganti@11 240 },
kkonganti@11 241 CAT_UNIQUE.out.csv
kkonganti@11 242 )
kkonganti@11 243
kkonganti@11 244 software_versions
kkonganti@11 245 .mix(
kkonganti@11 246 UPLOAD_MICROREACT.out.versions
kkonganti@11 247 )
kkonganti@11 248 .set { software_versions }
kkonganti@11 249 }
kkonganti@11 250
kkonganti@11 251 PRODKA(
kkonganti@11 252 ch_quast.ref_fasta,
kkonganti@11 253 ch_quast.polished
kkonganti@11 254 )
kkonganti@11 255
kkonganti@11 256 RMLST_POST( ch_assembly )
kkonganti@11 257
kkonganti@11 258 MLST (
kkonganti@11 259 ch_assembly
kkonganti@11 260 .combine( DOWNLOAD_PUBMLST_SCHEME.out.pubmlst_dir )
kkonganti@11 261 )
kkonganti@11 262
kkonganti@11 263 QUAST(
kkonganti@11 264 ch_quast.polished,
kkonganti@11 265 ch_quast.ref_fasta,
kkonganti@11 266 ch_quast.ref_gff
kkonganti@11 267 )
kkonganti@11 268
kkonganti@11 269 if (params.pirate_run) {
kkonganti@11 270 PIRATE(
kkonganti@11 271 PRODKA.out.prokka_gff
kkonganti@11 272 .map { meta, gff ->
kkonganti@11 273 tuple( [id: 'Predicted Genes'], gff )
kkonganti@11 274 }
kkonganti@11 275 .groupTuple(by: [0])
kkonganti@11 276 )
kkonganti@11 277
kkonganti@11 278 software_versions
kkonganti@11 279 .mix( PIRATE.out.versions )
kkonganti@11 280 .set { software_versions }
kkonganti@11 281 }
kkonganti@11 282
kkonganti@11 283 RMLST_POST.out.tsv
kkonganti@11 284 .map { meta, tsv -> [ 'rmlst', tsv] }
kkonganti@11 285 .groupTuple(by: [0])
kkonganti@11 286 .map { it -> tuple ( it[0], it[1].flatten() ) }
kkonganti@11 287 .set { ch_mqc_rmlst_tbl }
kkonganti@11 288
kkonganti@11 289 MLST.out.tsv
kkonganti@11 290 .map { meta, tsv -> [ 'mlst', tsv] }
kkonganti@11 291 .groupTuple(by: [0])
kkonganti@11 292 .map { it -> tuple ( it[0], it[1].flatten() ) }
kkonganti@11 293 .set { ch_mqc_custom_tbl }
kkonganti@11 294
kkonganti@11 295 ABRICATE_RUN ( ch_assembly, abricate_dbs )
kkonganti@11 296
kkonganti@11 297 ABRICATE_RUN.out.abricated
kkonganti@11 298 .map { meta, abres -> [ abricate_dbs, abres ] }
kkonganti@11 299 .groupTuple(by: [0])
kkonganti@11 300 .map { it -> tuple ( it[0], it[1].flatten() ) }
kkonganti@11 301 .set { ch_abricated }
kkonganti@11 302
kkonganti@11 303 ABRICATE_SUMMARY ( ch_abricated )
kkonganti@11 304
kkonganti@11 305 ch_mqc_custom_tbl
kkonganti@11 306 .concat (
kkonganti@11 307 ch_mqc_rmlst_tbl,
kkonganti@11 308 ABRICATE_SUMMARY.out.ncbiamrplus.map { it -> tuple ( it[0], it[1] )},
kkonganti@11 309 ABRICATE_SUMMARY.out.resfinder.map { it -> tuple ( it[0], it[1] )},
kkonganti@11 310 ABRICATE_SUMMARY.out.megares.map { it -> tuple ( it[0], it[1] )},
kkonganti@11 311 ABRICATE_SUMMARY.out.argannot.map { it -> tuple ( it[0], it[1] )},
kkonganti@11 312 )
kkonganti@11 313 .groupTuple(by: [0])
kkonganti@11 314 .map { it -> [ it[0], it[1].flatten() ]}
kkonganti@11 315 .set { ch_mqc_custom_tbl }
kkonganti@11 316
kkonganti@11 317 TABLE_SUMMARY ( ch_mqc_custom_tbl )
kkonganti@11 318
kkonganti@11 319 DUMP_SOFTWARE_VERSIONS (
kkonganti@11 320 software_versions
kkonganti@11 321 .mix(
kkonganti@11 322 DOWNLOAD_PUBMLST_SCHEME.out.versions,
kkonganti@11 323 DOWNLOAD_REF_GENOME.out.versions,
kkonganti@11 324 FASTP.out.versions,
kkonganti@11 325 MASH_SCREEN.out.versions,
kkonganti@11 326 TOP_UNIQUE_SEROVARS.out.versions,
kkonganti@11 327 CAT_UNIQUE.out.versions,
kkonganti@11 328 MASHTREE.out.versions,
kkonganti@11 329 POLYPOLISH.out.versions,
kkonganti@11 330 QUAST.out.versions,
kkonganti@11 331 PRODKA.out.versions,
kkonganti@11 332 RMLST_POST.out.versions,
kkonganti@11 333 MLST.out.versions,
kkonganti@11 334 ABRICATE_RUN.out.versions,
kkonganti@11 335 ABRICATE_SUMMARY.out.versions,
kkonganti@11 336 TABLE_SUMMARY.out.versions
kkonganti@11 337 )
kkonganti@11 338 .unique()
kkonganti@11 339 .collectFile(name: 'collected_versions.yml')
kkonganti@11 340 )
kkonganti@11 341
kkonganti@11 342 DUMP_SOFTWARE_VERSIONS.out.mqc_yml
kkonganti@11 343 .concat (
kkonganti@11 344 ch_multiqc,
kkonganti@11 345 TABLE_SUMMARY.out.mqc_yml,
kkonganti@11 346 PRODKA.out.prokka_txt.map { meta, txt -> txt },
kkonganti@11 347 QUAST.out.results.map { meta, res -> res }
kkonganti@11 348 )
kkonganti@11 349 .collect()
kkonganti@11 350 .set { ch_multiqc }
kkonganti@11 351
kkonganti@11 352 MULTIQC( ch_multiqc )
kkonganti@11 353 }
kkonganti@11 354
kkonganti@11 355 /*
kkonganti@11 356 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 357 ON COMPLETE, SHOW GORY DETAILS OF ALL PARAMS WHICH WILL BE HELPFUL TO DEBUG
kkonganti@11 358 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 359 */
kkonganti@11 360
kkonganti@11 361 workflow.onComplete {
kkonganti@11 362 if (workflow.success) {
kkonganti@11 363 sendMail()
kkonganti@11 364 }
kkonganti@11 365 }
kkonganti@11 366
kkonganti@11 367 workflow.onError {
kkonganti@11 368 sendMail()
kkonganti@11 369 }
kkonganti@11 370
kkonganti@11 371 /*
kkonganti@11 372 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 373 METHOD TO CHECK FILE EXISTENCE
kkonganti@11 374 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 375 */
kkonganti@11 376
kkonganti@11 377 def checkMetadataExists(file_path, msg) {
kkonganti@11 378 file_path_obj = file( file_path )
kkonganti@11 379
kkonganti@11 380 if (msg.toString().find(/(?i)KMA/)) {
kkonganti@11 381 if (!file_path_obj.parent.exists() || file_path_obj.parent.size() == 0) {
kkonganti@11 382 stopNow("Please check if your ${msg}\n" +
kkonganti@11 383 "[ ${file_path} ]\nexists and that the files are not of size 0.")
kkonganti@11 384 }
kkonganti@11 385 }
kkonganti@11 386 else if (!file_path_obj.exists() || file_path_obj.size() == 0) {
kkonganti@11 387 stopNow("Please check if your ${msg} file\n" +
kkonganti@11 388 "[ ${file_path} ]\nexists and is not of size 0.")
kkonganti@11 389 }
kkonganti@11 390 }
kkonganti@11 391
kkonganti@11 392 /*
kkonganti@11 393 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 394 HELP TEXT METHODS FOR CRONOLOGY WORKFLOW
kkonganti@11 395 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 396 */
kkonganti@11 397
kkonganti@11 398 def help() {
kkonganti@11 399
kkonganti@11 400 Map helptext = [:]
kkonganti@11 401 Map nH = [:]
kkonganti@11 402 Map fastpAdapterHelp = [:]
kkonganti@11 403 def uHelp = (params.help.getClass().toString() =~ /String/ ? params.help.tokenize(',').join(' ') : '')
kkonganti@11 404
kkonganti@11 405 Map defaultHelp = [
kkonganti@11 406 '--help dpubmlstpy' : 'Show dl_pubmlst_profiles_and_schemes.py CLI options',
kkonganti@11 407 '--help fastp' : 'Show fastp CLI options',
kkonganti@11 408 '--help spades' : 'Show spades CLI options',
kkonganti@11 409 '--help shovill' : 'Show shovill CLI options',
kkonganti@11 410 '--help polypolish' : 'Show polypolish CLI options',
kkonganti@11 411 '--help quast' : 'Show quast.py CLI options',
kkonganti@11 412 '--help prodigal' : 'Show prodigal CLI options',
kkonganti@11 413 '--help prokka' : 'Show prokka CLI options',
kkonganti@11 414 '--help pirate' : 'Show priate CLI options',
kkonganti@11 415 '--help mlst' : 'Show mlst CLI options',
kkonganti@11 416 '--help mash' : 'Show mash `screen` CLI options',
kkonganti@11 417 '--help tree' : 'Show mashtree CLI options',
kkonganti@11 418 '--help abricate' : 'Show abricate CLI options\n'
kkonganti@11 419 ]
kkonganti@11 420
kkonganti@11 421 fastpAdapterHelp['--fastp_use_custom_adapaters'] = "Use custom adapter FASTA with fastp on top of " +
kkonganti@11 422 "built-in adapter sequence auto-detection. Enabling this option will attempt to find and remove " +
kkonganti@11 423 "all possible Illumina adapter and primer sequences but will make the workflow run slow. " +
kkonganti@11 424 "Default: ${params.fastp_use_custom_adapters}"
kkonganti@11 425
kkonganti@11 426 if (params.help.getClass().toString() =~ /Boolean/ || uHelp.size() == 0) {
kkonganti@11 427 println conciseHelp('fastp,polypolish')
kkonganti@11 428 helptext.putAll(defaultHelp)
kkonganti@11 429 } else {
kkonganti@11 430 params.help.tokenize(',').each { h ->
kkonganti@11 431 if (defaultHelp.keySet().findAll{ it =~ /(?i)\b${h}\b/ }.size() == 0) {
kkonganti@11 432 println conciseHelp('fastp,polypolish')
kkonganti@11 433 stopNow("Tool [ ${h} ] is not a part of ${params.pipeline} pipeline.")
kkonganti@11 434 }
kkonganti@11 435 }
kkonganti@11 436
kkonganti@11 437 helptext.putAll(
kkonganti@11 438 fastqEntryPointHelp() +
kkonganti@11 439 (uHelp =~ /(?i)\bdpubmlstpy/ ? dpubmlstpyHelp(params).text : nH) +
kkonganti@11 440 (uHelp =~ /(?i)\bfastp/ ? fastpHelp(params).text + fastpAdapterHelp : nH) +
kkonganti@11 441 (uHelp =~ /(?i)\bmash/ ? mashscreenHelp(params).text : nH) +
kkonganti@11 442 (uHelp =~ /(?i)\btuspy/ ? tuspyHelp(params).text : nH) +
kkonganti@11 443 (uHelp =~ /(?i)\bspades/ ? spadesHelp(params).text : nH) +
kkonganti@11 444 (uHelp =~ /(?i)\bshovill/ ? shovillHelp(params).text : nH) +
kkonganti@11 445 (uHelp =~ /(?i)\bpolypolish/ ? polypolishHelp(params).text : nH) +
kkonganti@11 446 (uHelp =~ /(?i)\bquast/ ? quastHelp(params).text : nH) +
kkonganti@11 447 (uHelp =~ /(?i)\bprodigal/ ? prodigalHelp(params).text : nH) +
kkonganti@11 448 (uHelp =~ /(?i)\bprokka/ ? prokkaHelp(params).text : nH) +
kkonganti@11 449 (uHelp =~ /(?i)\bpirate/ ? pirateHelp(params).text : nH) +
kkonganti@11 450 (uHelp =~ /(?i)\bmlst/ ? mlstHelp(params).text : nH) +
kkonganti@11 451 (uHelp =~ /(?i)\btree/ ? mashtreeHelp(params).text : nH) +
kkonganti@11 452 (uHelp =~ /(?i)\babricate/ ? abricateHelp(params).text : nH) +
kkonganti@11 453 wrapUpHelp()
kkonganti@11 454 )
kkonganti@11 455 }
kkonganti@11 456
kkonganti@11 457 return addPadding(helptext)
kkonganti@11 458 }