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 } |