annotate 0.5.0/workflows/bettercallsal.nf @ 1:365849f031fd

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