annotate 0.6.1/workflows/bettercallsal.nf @ 13:74baf1a6c3bd

"planemo upload"
author kkonganti
date Tue, 05 Sep 2023 13:04:15 -0400
parents 749faef1caa9
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 java.util.zip.GZIPInputStream
kkonganti@11 4 import java.io.FileInputStream
kkonganti@11 5 import nextflow.file.FileHelper
kkonganti@11 6
kkonganti@11 7
kkonganti@11 8 // Include any necessary methods
kkonganti@11 9 include { \
kkonganti@11 10 summaryOfParams; stopNow; fastqEntryPointHelp; sendMail; conciseHelp; \
kkonganti@11 11 addPadding; wrapUpHelp } from "${params.routines}"
kkonganti@11 12 include { bbmergeHelp } from "${params.toolshelp}${params.fs}bbmerge"
kkonganti@11 13 include { fastpHelp } from "${params.toolshelp}${params.fs}fastp"
kkonganti@11 14 include { mashscreenHelp } from "${params.toolshelp}${params.fs}mashscreen"
kkonganti@11 15 include { tuspyHelp } from "${params.toolshelp}${params.fs}tuspy"
kkonganti@11 16 include { sourmashsketchHelp } from "${params.toolshelp}${params.fs}sourmashsketch"
kkonganti@11 17 include { sourmashgatherHelp } from "${params.toolshelp}${params.fs}sourmashgather"
kkonganti@11 18 include { sourmashsearchHelp } from "${params.toolshelp}${params.fs}sourmashsearch"
kkonganti@11 19 include { sfhpyHelp } from "${params.toolshelp}${params.fs}sfhpy"
kkonganti@11 20 include { kmaindexHelp } from "${params.toolshelp}${params.fs}kmaindex"
kkonganti@11 21 include { kmaalignHelp } from "${params.toolshelp}${params.fs}kmaalign"
kkonganti@11 22 include { megahitHelp } from "${params.toolshelp}${params.fs}megahit"
kkonganti@11 23 include { mlstHelp } from "${params.toolshelp}${params.fs}mlst"
kkonganti@11 24 include { abricateHelp } from "${params.toolshelp}${params.fs}abricate"
kkonganti@11 25 include { salmonidxHelp } from "${params.toolshelp}${params.fs}salmonidx"
kkonganti@11 26 include { gsrpyHelp } from "${params.toolshelp}${params.fs}gsrpy"
kkonganti@11 27
kkonganti@11 28 // Exit if help requested before any subworkflows
kkonganti@11 29 if (params.help) {
kkonganti@11 30 log.info help()
kkonganti@11 31 exit 0
kkonganti@11 32 }
kkonganti@11 33
kkonganti@11 34
kkonganti@11 35 // Include any necessary modules and subworkflows
kkonganti@11 36 include { PROCESS_FASTQ } from "${params.subworkflows}${params.fs}process_fastq"
kkonganti@11 37 include { CAT_CAT } from "${params.modules}${params.fs}cat_cat${params.fs}main"
kkonganti@11 38 include { FASTQC } from "${params.modules}${params.fs}fastqc${params.fs}main"
kkonganti@11 39 include { BBTOOLS_BBMERGE } from "${params.modules}${params.fs}bbtools${params.fs}bbmerge${params.fs}main"
kkonganti@11 40 include { FASTP } from "${params.modules}${params.fs}fastp${params.fs}main"
kkonganti@11 41 include { MASH_SCREEN } from "${params.modules}${params.fs}mash${params.fs}screen${params.fs}main"
kkonganti@11 42 include { TOP_UNIQUE_SEROVARS } from "${params.modules}${params.fs}top_unique_serovars${params.fs}main"
kkonganti@11 43 include { SOURMASH_SKETCH } from "${params.modules}${params.fs}sourmash${params.fs}sketch${params.fs}main"
kkonganti@11 44 include { SOURMASH_GATHER } from "${params.modules}${params.fs}sourmash${params.fs}gather${params.fs}main"
kkonganti@11 45 include { SOURMASH_SEARCH } from "${params.modules}${params.fs}sourmash${params.fs}search${params.fs}main"
kkonganti@11 46 include { KMA_INDEX } from "${params.modules}${params.fs}kma${params.fs}index${params.fs}main"
kkonganti@11 47 include { KMA_ALIGN } from "${params.modules}${params.fs}kma${params.fs}align${params.fs}main"
kkonganti@11 48 include { OTF_GENOME } from "${params.modules}${params.fs}otf_genome${params.fs}main"
kkonganti@11 49 include { MEGAHIT_ASSEMBLE } from "${params.modules}${params.fs}megahit${params.fs}assemble${params.fs}main"
kkonganti@11 50 include { MLST } from "${params.modules}${params.fs}mlst${params.fs}main"
kkonganti@11 51 include { ABRICATE_RUN } from "${params.modules}${params.fs}abricate${params.fs}run${params.fs}main"
kkonganti@11 52 include { ABRICATE_SUMMARY } from "${params.modules}${params.fs}abricate${params.fs}summary${params.fs}main"
kkonganti@11 53 include { TABLE_SUMMARY } from "${params.modules}${params.fs}cat${params.fs}tables${params.fs}main"
kkonganti@11 54 include { SALMON_INDEX } from "${params.modules}${params.fs}salmon${params.fs}index${params.fs}main"
kkonganti@11 55 include { SALMON_QUANT } from "${params.modules}${params.fs}salmon${params.fs}quant${params.fs}main"
kkonganti@11 56 include { SOURMASH_COMPARE } from "${params.modules}${params.fs}custom${params.fs}sourmash${params.fs}compare${params.fs}main"
kkonganti@11 57 include { BCS_DISTANCE_MATRIX } from "${params.modules}${params.fs}bcs_distance_matrix${params.fs}main"
kkonganti@11 58 include { BCS_RESULTS } from "${params.modules}${params.fs}bcs_results${params.fs}main"
kkonganti@11 59 include { DUMP_SOFTWARE_VERSIONS } from "${params.modules}${params.fs}custom${params.fs}dump_software_versions${params.fs}main"
kkonganti@11 60 include { MULTIQC } from "${params.modules}${params.fs}multiqc${params.fs}main"
kkonganti@11 61
kkonganti@11 62 /*
kkonganti@11 63 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 64 INPUTS AND ANY CHECKS FOR THE BETTERCALLSAL WORKFLOW
kkonganti@11 65 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 66 */
kkonganti@11 67
kkonganti@11 68 def reads_platform = 0
kkonganti@11 69 def salmon_idx_decoys = file ( "${params.salmonidx_decoys}" )
kkonganti@11 70 def abricate_dbs = [ 'ncbiamrplus', 'resfinder', 'megares', 'argannot' ]
kkonganti@11 71
kkonganti@11 72 reads_platform += (params.input ? 1 : 0)
kkonganti@11 73
kkonganti@11 74 if (reads_platform < 1 || reads_platform == 0) {
kkonganti@11 75 stopNow("Please mention at least one absolute path to input folder which contains\n" +
kkonganti@11 76 "FASTQ files sequenced using the --input option.\n" +
kkonganti@11 77 "Ex: --input (Illumina or Generic short reads in FASTQ format)")
kkonganti@11 78 }
kkonganti@11 79
kkonganti@11 80 checkMetadataExists(params.mash_sketch, 'MASH sketch')
kkonganti@11 81 checkMetadataExists(params.tuspy_ps, 'ACC2SERO pickle')
kkonganti@11 82 checkMetadataExists(params.gsrpy_snp_clus_metadata, 'PDG reference target cluster metadata')
kkonganti@11 83
kkonganti@11 84 /*
kkonganti@11 85 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 86 RUN THE BETTERCALLSAL WORKFLOW
kkonganti@11 87 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 88 */
kkonganti@11 89
kkonganti@11 90 workflow BETTERCALLSAL {
kkonganti@11 91 main:
kkonganti@11 92 log.info summaryOfParams()
kkonganti@11 93
kkonganti@11 94 PROCESS_FASTQ()
kkonganti@11 95
kkonganti@11 96 PROCESS_FASTQ
kkonganti@11 97 .out
kkonganti@11 98 .versions
kkonganti@11 99 .set { software_versions }
kkonganti@11 100
kkonganti@11 101 PROCESS_FASTQ
kkonganti@11 102 .out
kkonganti@11 103 .processed_reads
kkonganti@11 104 .set { ch_processed_reads }
kkonganti@11 105
kkonganti@11 106 if (params.bbmerge_run && !params.fq_single_end) {
kkonganti@11 107 ch_processed_reads
kkonganti@11 108 .map { meta, fastq ->
kkonganti@11 109 meta.adapters = (params.bbmerge_adapters ?: params.dummyfile)
kkonganti@11 110 [ meta, fastq ]
kkonganti@11 111 }
kkonganti@11 112 .set { ch_processed_reads }
kkonganti@11 113
kkonganti@11 114 BBTOOLS_BBMERGE( ch_processed_reads )
kkonganti@11 115
kkonganti@11 116 BBTOOLS_BBMERGE
kkonganti@11 117 .out
kkonganti@11 118 .fastq
kkonganti@11 119 .map { meta, fastq -> [ meta, [ fastq ] ] }
kkonganti@11 120 .set { ch_processed_reads }
kkonganti@11 121
kkonganti@11 122 software_versions
kkonganti@11 123 .mix ( BBTOOLS_BBMERGE.out.versions )
kkonganti@11 124 .set { software_versions }
kkonganti@11 125 }
kkonganti@11 126
kkonganti@11 127 if (params.fastp_run) {
kkonganti@11 128 FASTP ( ch_processed_reads )
kkonganti@11 129
kkonganti@11 130 FASTP
kkonganti@11 131 .out
kkonganti@11 132 .passed_reads
kkonganti@11 133 .set { ch_processed_reads }
kkonganti@11 134
kkonganti@11 135 FASTP
kkonganti@11 136 .out
kkonganti@11 137 .json
kkonganti@11 138 .map { meta, json -> [ json ] }
kkonganti@11 139 .collect()
kkonganti@11 140 .set { ch_multiqc }
kkonganti@11 141
kkonganti@11 142 software_versions
kkonganti@11 143 .mix ( FASTP.out.versions )
kkonganti@11 144 .set { software_versions }
kkonganti@11 145 } else {
kkonganti@11 146 FASTQC ( ch_processed_reads )
kkonganti@11 147
kkonganti@11 148 FASTQC
kkonganti@11 149 .out
kkonganti@11 150 .zip
kkonganti@11 151 .map { meta, zip -> [ zip ] }
kkonganti@11 152 .collect()
kkonganti@11 153 .set { ch_multiqc }
kkonganti@11 154
kkonganti@11 155 software_versions
kkonganti@11 156 .mix ( FASTQC.out.versions )
kkonganti@11 157 .set { software_versions }
kkonganti@11 158 }
kkonganti@11 159
kkonganti@11 160 if (params.bcs_concat_pe && !params.fq_single_end && !params.bbmerge_run) {
kkonganti@11 161 CAT_CAT ( ch_processed_reads )
kkonganti@11 162
kkonganti@11 163 CAT_CAT
kkonganti@11 164 .out
kkonganti@11 165 .concatenated_reads
kkonganti@11 166 .set { ch_processed_reads }
kkonganti@11 167
kkonganti@11 168 software_versions
kkonganti@11 169 .mix ( CAT_CAT.out.versions )
kkonganti@11 170 .set { software_versions }
kkonganti@11 171 }
kkonganti@11 172
kkonganti@11 173 ch_processed_reads
kkonganti@11 174 .map { meta, fastq ->
kkonganti@11 175 meta.sequence_sketch = params.mash_sketch
kkonganti@11 176 meta.get_kma_hit_accs = true
kkonganti@11 177 meta.single_end = true
kkonganti@11 178 meta.salmon_decoys = params.dummyfile
kkonganti@11 179 meta.salmon_lib_type = (params.salmonalign_libtype ?: false)
kkonganti@11 180 [ meta, fastq ]
kkonganti@11 181 }
kkonganti@11 182 .filter { meta, fastq ->
kkonganti@11 183 fq_file = ( fastq.getClass().toString() =~ /ArrayList/ ? fastq : [ fastq ] )
kkonganti@11 184 fq_gzip = new GZIPInputStream( new FileInputStream( fq_file[0].toString() ) )
kkonganti@11 185 fq_gzip.read() != -1
kkonganti@11 186 }
kkonganti@11 187 .set { ch_processed_reads }
kkonganti@11 188
kkonganti@11 189 MASH_SCREEN ( ch_processed_reads )
kkonganti@11 190
kkonganti@11 191 TOP_UNIQUE_SEROVARS ( MASH_SCREEN.out.screened )
kkonganti@11 192
kkonganti@11 193 TOP_UNIQUE_SEROVARS.out.genomes_fasta
kkonganti@11 194 .set { ch_genomes_fasta }
kkonganti@11 195
kkonganti@11 196 TOP_UNIQUE_SEROVARS.out.failed
kkonganti@11 197 .set { ch_bcs_calls_failed }
kkonganti@11 198
kkonganti@11 199 if (params.sourmashgather_run || params.sourmashsearch_run) {
kkonganti@11 200 SOURMASH_SKETCH (
kkonganti@11 201 ch_processed_reads
kkonganti@11 202 .join ( ch_genomes_fasta )
kkonganti@11 203 )
kkonganti@11 204
kkonganti@11 205 if (params.sourmashgather_run) {
kkonganti@11 206 SOURMASH_GATHER (
kkonganti@11 207 SOURMASH_SKETCH.out.signatures,
kkonganti@11 208 [], [], [], []
kkonganti@11 209 )
kkonganti@11 210
kkonganti@11 211 SOURMASH_GATHER
kkonganti@11 212 .out
kkonganti@11 213 .genomes_fasta
kkonganti@11 214 .set { ch_genomes_fasta }
kkonganti@11 215
kkonganti@11 216 ch_bcs_calls_failed
kkonganti@11 217 .concat ( SOURMASH_GATHER.out.failed )
kkonganti@11 218 .set { ch_bcs_calls_failed }
kkonganti@11 219
kkonganti@11 220 software_versions
kkonganti@11 221 .mix ( SOURMASH_GATHER.out.versions.ifEmpty(null) )
kkonganti@11 222 .set { software_versions }
kkonganti@11 223 }
kkonganti@11 224
kkonganti@11 225 if (params.sourmashsearch_run) {
kkonganti@11 226 SOURMASH_SEARCH (
kkonganti@11 227 SOURMASH_SKETCH.out.signatures,
kkonganti@11 228 []
kkonganti@11 229 )
kkonganti@11 230
kkonganti@11 231 SOURMASH_SEARCH
kkonganti@11 232 .out
kkonganti@11 233 .genomes_fasta
kkonganti@11 234 .set { ch_genomes_fasta }
kkonganti@11 235
kkonganti@11 236 ch_bcs_calls_failed
kkonganti@11 237 .concat ( SOURMASH_SEARCH.out.failed )
kkonganti@11 238 .set { ch_bcs_calls_failed }
kkonganti@11 239
kkonganti@11 240 software_versions
kkonganti@11 241 .mix ( SOURMASH_SEARCH.out.versions.ifEmpty(null) )
kkonganti@11 242 .set { software_versions }
kkonganti@11 243 }
kkonganti@11 244 }
kkonganti@11 245
kkonganti@11 246 KMA_INDEX ( ch_genomes_fasta )
kkonganti@11 247
kkonganti@11 248 KMA_ALIGN (
kkonganti@11 249 ch_processed_reads
kkonganti@11 250 .join ( KMA_INDEX.out.idx )
kkonganti@11 251 )
kkonganti@11 252
kkonganti@11 253 OTF_GENOME (
kkonganti@11 254 KMA_ALIGN.out.hits
kkonganti@11 255 .join ( KMA_ALIGN.out.frags )
kkonganti@11 256 )
kkonganti@11 257
kkonganti@11 258 OTF_GENOME.out.failed
kkonganti@11 259 .concat ( ch_bcs_calls_failed )
kkonganti@11 260 .collectFile( name: 'BCS_NO_CALLS.txt' )
kkonganti@11 261 .set { ch_bcs_no_calls }
kkonganti@11 262
kkonganti@11 263 SALMON_INDEX ( OTF_GENOME.out.genomes_fasta )
kkonganti@11 264
kkonganti@11 265 SALMON_QUANT (
kkonganti@11 266 ch_processed_reads
kkonganti@11 267 .join ( SALMON_INDEX.out.idx )
kkonganti@11 268 )
kkonganti@11 269
kkonganti@11 270 SALMON_QUANT
kkonganti@11 271 .out
kkonganti@11 272 .results
kkonganti@11 273 .groupTuple(by: [0])
kkonganti@11 274 .map { it -> tuple ( it[1].flatten() ) }
kkonganti@11 275 .mix ( ch_bcs_no_calls )
kkonganti@11 276 .collect()
kkonganti@11 277 .set { ch_salmon_res_dirs }
kkonganti@11 278
kkonganti@11 279 if (params.sourmashsketch_run) {
kkonganti@11 280 SOURMASH_SKETCH
kkonganti@11 281 .out
kkonganti@11 282 .signatures
kkonganti@11 283 .groupTuple(by: [0])
kkonganti@11 284 .map { meta, qsigs, dsigs -> [ qsigs ] }
kkonganti@11 285 .collect()
kkonganti@11 286 .flatten()
kkonganti@11 287 .collect()
kkonganti@11 288 .set { ch_query_sigs }
kkonganti@11 289
kkonganti@11 290 KMA_ALIGN
kkonganti@11 291 .out
kkonganti@11 292 .hits
kkonganti@11 293 .map { meta, hits -> [ hits ] }
kkonganti@11 294 .collect()
kkonganti@11 295 .flatten()
kkonganti@11 296 .collectFile(name: 'accessions.txt')
kkonganti@11 297 .set { ch_otf_genomes }
kkonganti@11 298
kkonganti@11 299 if (params.megahit_run) {
kkonganti@11 300
kkonganti@11 301 MEGAHIT_ASSEMBLE ( OTF_GENOME.out.reads_extracted )
kkonganti@11 302
kkonganti@11 303 MEGAHIT_ASSEMBLE
kkonganti@11 304 .out
kkonganti@11 305 .assembly
kkonganti@11 306 .set { ch_asm_filtered_contigs }
kkonganti@11 307
kkonganti@11 308 MLST ( ch_asm_filtered_contigs )
kkonganti@11 309
kkonganti@11 310 MLST.out.tsv
kkonganti@11 311 .map { meta, tsv -> [ 'mlst', tsv] }
kkonganti@11 312 .groupTuple(by: [0])
kkonganti@11 313 .map { it -> tuple ( it[0], it[1].flatten() ) }
kkonganti@11 314 .set { ch_mqc_custom_tbl }
kkonganti@11 315
kkonganti@11 316 ABRICATE_RUN (
kkonganti@11 317 ch_asm_filtered_contigs,
kkonganti@11 318 abricate_dbs
kkonganti@11 319 )
kkonganti@11 320
kkonganti@11 321 ABRICATE_RUN
kkonganti@11 322 .out
kkonganti@11 323 .abricated
kkonganti@11 324 .map { meta, abres -> [ abricate_dbs, abres ] }
kkonganti@11 325 .groupTuple(by: [0])
kkonganti@11 326 .map { it -> tuple ( it[0], it[1].flatten() ) }
kkonganti@11 327 .set { ch_abricated }
kkonganti@11 328
kkonganti@11 329 ABRICATE_SUMMARY ( ch_abricated )
kkonganti@11 330
kkonganti@11 331 ch_mqc_custom_tbl
kkonganti@11 332 .concat (
kkonganti@11 333 ABRICATE_SUMMARY.out.ncbiamrplus.map { it -> tuple ( it[0], it[1] )},
kkonganti@11 334 ABRICATE_SUMMARY.out.resfinder.map { it -> tuple ( it[0], it[1] )},
kkonganti@11 335 ABRICATE_SUMMARY.out.megares.map { it -> tuple ( it[0], it[1] )},
kkonganti@11 336 ABRICATE_SUMMARY.out.argannot.map { it -> tuple ( it[0], it[1] )},
kkonganti@11 337 )
kkonganti@11 338 .groupTuple(by: [0])
kkonganti@11 339 .map { it -> [ it[0], it[1].flatten() ]}
kkonganti@11 340 .set { ch_mqc_custom_tbl }
kkonganti@11 341
kkonganti@11 342 TABLE_SUMMARY ( ch_mqc_custom_tbl )
kkonganti@11 343
kkonganti@11 344 ch_multiqc
kkonganti@11 345 .concat ( TABLE_SUMMARY.out.mqc_yml )
kkonganti@11 346 .set { ch_multiqc }
kkonganti@11 347
kkonganti@11 348 software_versions
kkonganti@11 349 .mix (
kkonganti@11 350 MEGAHIT_ASSEMBLE.out.versions.ifEmpty(null),
kkonganti@11 351 MLST.out.versions.ifEmpty(null),
kkonganti@11 352 ABRICATE_RUN.out.versions.ifEmpty(null),
kkonganti@11 353 ABRICATE_SUMMARY.out.versions.ifEmpty(null),
kkonganti@11 354 TABLE_SUMMARY.out.versions.ifEmpty(null)
kkonganti@11 355 )
kkonganti@11 356 .set { software_versions }
kkonganti@11 357 }
kkonganti@11 358
kkonganti@11 359 SOURMASH_COMPARE ( ch_query_sigs, ch_otf_genomes )
kkonganti@11 360
kkonganti@11 361 BCS_DISTANCE_MATRIX (
kkonganti@11 362 SOURMASH_COMPARE.out.matrix,
kkonganti@11 363 SOURMASH_COMPARE.out.labels
kkonganti@11 364 )
kkonganti@11 365
kkonganti@11 366 ch_multiqc
kkonganti@11 367 .concat ( BCS_DISTANCE_MATRIX.out.mqc_yml )
kkonganti@11 368 .set { ch_multiqc }
kkonganti@11 369
kkonganti@11 370 software_versions
kkonganti@11 371 .mix (
kkonganti@11 372 SOURMASH_SKETCH.out.versions.ifEmpty(null),
kkonganti@11 373 SOURMASH_COMPARE.out.versions.ifEmpty(null),
kkonganti@11 374 BCS_DISTANCE_MATRIX.out.versions.ifEmpty(null),
kkonganti@11 375 )
kkonganti@11 376 .set { software_versions }
kkonganti@11 377 }
kkonganti@11 378
kkonganti@11 379 BCS_RESULTS ( ch_salmon_res_dirs )
kkonganti@11 380
kkonganti@11 381 DUMP_SOFTWARE_VERSIONS (
kkonganti@11 382 software_versions
kkonganti@11 383 .mix (
kkonganti@11 384 MASH_SCREEN.out.versions,
kkonganti@11 385 TOP_UNIQUE_SEROVARS.out.versions,
kkonganti@11 386 KMA_INDEX.out.versions,
kkonganti@11 387 KMA_ALIGN.out.versions,
kkonganti@11 388 OTF_GENOME.out.versions.ifEmpty(null),
kkonganti@11 389 SALMON_INDEX.out.versions,
kkonganti@11 390 SALMON_QUANT.out.versions,
kkonganti@11 391 BCS_RESULTS.out.versions
kkonganti@11 392 )
kkonganti@11 393 .unique()
kkonganti@11 394 .collectFile(name: 'collected_versions.yml')
kkonganti@11 395 )
kkonganti@11 396
kkonganti@11 397 DUMP_SOFTWARE_VERSIONS
kkonganti@11 398 .out
kkonganti@11 399 .mqc_yml
kkonganti@11 400 .concat (
kkonganti@11 401 ch_multiqc,
kkonganti@11 402 BCS_RESULTS.out.mqc_yml,
kkonganti@11 403 BCS_RESULTS.out.mqc_json
kkonganti@11 404 )
kkonganti@11 405 .collect()
kkonganti@11 406 .set { ch_multiqc }
kkonganti@11 407
kkonganti@11 408 MULTIQC ( ch_multiqc )
kkonganti@11 409 }
kkonganti@11 410
kkonganti@11 411 /*
kkonganti@11 412 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 413 ON COMPLETE, SHOW GORY DETAILS OF ALL PARAMS WHICH WILL BE HELPFUL TO DEBUG
kkonganti@11 414 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 415 */
kkonganti@11 416
kkonganti@11 417 workflow.onComplete {
kkonganti@11 418 if (workflow.success) {
kkonganti@11 419 sendMail()
kkonganti@11 420 }
kkonganti@11 421 }
kkonganti@11 422
kkonganti@11 423 workflow.onError {
kkonganti@11 424 sendMail()
kkonganti@11 425 }
kkonganti@11 426
kkonganti@11 427 /*
kkonganti@11 428 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 429 METHOD TO CHECK METADATA EXISTENCE
kkonganti@11 430 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 431 */
kkonganti@11 432
kkonganti@11 433 def checkMetadataExists(file_path, msg) {
kkonganti@11 434 file_path_obj = file( file_path )
kkonganti@11 435
kkonganti@11 436 if (!file_path_obj.exists() || file_path_obj.size() == 0) {
kkonganti@11 437 stopNow("Please check if your ${msg} file\n" +
kkonganti@11 438 "[ ${file_path} ]\nexists and is not of size 0.")
kkonganti@11 439 }
kkonganti@11 440 }
kkonganti@11 441
kkonganti@11 442 /*
kkonganti@11 443 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 444 HELP TEXT METHODS FOR BETTERCALLSAL WORKFLOW
kkonganti@11 445 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kkonganti@11 446 */
kkonganti@11 447
kkonganti@11 448 def help() {
kkonganti@11 449
kkonganti@11 450 Map helptext = [:]
kkonganti@11 451 Map bcsConcatHelp = [:]
kkonganti@11 452 Map fastpAdapterHelp = [:]
kkonganti@11 453 Map nH = [:]
kkonganti@11 454 def uHelp = (params.help.getClass().toString() =~ /String/ ? params.help.tokenize(',').join(' ') : '')
kkonganti@11 455
kkonganti@11 456 Map defaultHelp = [
kkonganti@11 457 '--help bbmerge' : 'Show bbmerge.sh CLI options',
kkonganti@11 458 '--help fastp' : 'Show fastp CLI options',
kkonganti@11 459 '--help mash' : 'Show mash `screen` CLI options',
kkonganti@11 460 '--help tuspy' : 'Show get_top_unique_mash_hit_genomes.py CLI options',
kkonganti@11 461 '--help sourmashsketch' : 'Show sourmash `sketch` CLI options',
kkonganti@11 462 '--help sourmashgather' : 'Show sourmash `gather` CLI options',
kkonganti@11 463 '--help sourmashsearch' : 'Show sourmash `search` CLI options',
kkonganti@11 464 '--help sfhpy' : 'Show sourmash_filter_hits.py CLI options',
kkonganti@11 465 '--help kmaindex' : 'Show kma `index` CLI options',
kkonganti@11 466 '--help kmaalign' : 'Show kma CLI options',
kkonganti@11 467 '--help megahit' : 'Show megahit CLI options',
kkonganti@11 468 '--help mlst' : 'Show mlst CLI options',
kkonganti@11 469 '--help abricate' : 'Show abricate CLI options',
kkonganti@11 470 '--help salmon' : 'Show salmon `index` CLI options',
kkonganti@11 471 '--help gsrpy' : 'Show gen_salmon_res_table.py CLI options\n'
kkonganti@11 472 ]
kkonganti@11 473
kkonganti@11 474 bcsConcatHelp['--bcs_concat_pe'] = "Concatenate paired-end files. " +
kkonganti@11 475 "Default: ${params.bcs_concat_pe}"
kkonganti@11 476
kkonganti@11 477 fastpAdapterHelp['--fastp_use_custom_adapaters'] = "Use custom adapter FASTA with fastp on top of " +
kkonganti@11 478 "built-in adapter sequence auto-detection. Enabling this option will attempt to find and remove " +
kkonganti@11 479 "all possible Illumina adapter and primer sequences but will make the workflow run slow. " +
kkonganti@11 480 "Default: ${params.fastp_use_custom_adapters}"
kkonganti@11 481
kkonganti@11 482 if (params.help.getClass().toString() =~ /Boolean/ || uHelp.size() == 0) {
kkonganti@11 483 println conciseHelp('fastp,mash')
kkonganti@11 484 helptext.putAll(defaultHelp)
kkonganti@11 485 } else {
kkonganti@11 486 params.help.tokenize(',').each { h ->
kkonganti@11 487 if (defaultHelp.keySet().findAll{ it =~ /(?i)\b${h}\b/ }.size() == 0) {
kkonganti@11 488 println conciseHelp('fastp,mash')
kkonganti@11 489 stopNow("Tool [ ${h} ] is not a part of ${params.pipeline} pipeline.")
kkonganti@11 490 }
kkonganti@11 491 }
kkonganti@11 492
kkonganti@11 493 helptext.putAll(
kkonganti@11 494 fastqEntryPointHelp() +
kkonganti@11 495 bcsConcatHelp +
kkonganti@11 496 (uHelp =~ /(?i)\bbbmerge/ ? bbmergeHelp(params).text : nH) +
kkonganti@11 497 (uHelp =~ /(?i)\bfastp/ ? fastpHelp(params).text + fastpAdapterHelp : nH) +
kkonganti@11 498 (uHelp =~ /(?i)\bmash/ ? mashscreenHelp(params).text : nH) +
kkonganti@11 499 (uHelp =~ /(?i)\btuspy/ ? tuspyHelp(params).text : nH) +
kkonganti@11 500 (uHelp =~ /(?i)\bsourmashsketch/ ? sourmashsketchHelp(params).text : nH) +
kkonganti@11 501 (uHelp =~ /(?i)\bsourmashgather/ ? sourmashgatherHelp(params).text : nH) +
kkonganti@11 502 (uHelp =~ /(?i)\bsourmashsearch/ ? sourmashsearchHelp(params).text : nH) +
kkonganti@11 503 (uHelp =~ /(?i)\bsfhpy/ ? sfhpyHelp(params).text : nH) +
kkonganti@11 504 (uHelp =~ /(?i)\bkmaindex/ ? kmaindexHelp(params).text : nH) +
kkonganti@11 505 (uHelp =~ /(?i)\bkmaalign/ ? kmaalignHelp(params).text : nH) +
kkonganti@11 506 (uHelp =~ /(?i)\bmegahit/ ? megahitHelp(params).text : nH) +
kkonganti@11 507 (uHelp =~ /(?i)\bmlst/ ? mlstHelp(params).text : nH) +
kkonganti@11 508 (uHelp =~ /(?i)\babricate/ ? abricateHelp(params).text : nH) +
kkonganti@11 509 (uHelp =~ /(?i)\bsalmon/ ? salmonidxHelp(params).text : nH) +
kkonganti@11 510 (uHelp =~ /(?i)\bgsrpy/ ? gsrpyHelp(params).text : nH) +
kkonganti@11 511 wrapUpHelp()
kkonganti@11 512 )
kkonganti@11 513 }
kkonganti@11 514
kkonganti@11 515 return addPadding(helptext)
kkonganti@11 516 }