annotate 0.7.0/workflows/bettercallsal.nf @ 18:75558ffe3e68

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