|
0
|
1 // Define any required imports for this specific workflow
|
|
|
2 import java.nio.file.Paths
|
|
|
3 import nextflow.file.FileHelper
|
|
|
4
|
|
|
5 // Include any necessary methods
|
|
|
6 include { \
|
|
|
7 summaryOfParams; stopNow; fastqEntryPointHelp; sendMail; \
|
|
|
8 addPadding; wrapUpHelp } from "${params.routines}"
|
|
|
9 include { spadesHelp } from "${params.toolshelp}${params.fs}spades"
|
|
|
10
|
|
|
11
|
|
|
12 // Exit if help requested before any subworkflows
|
|
|
13 if (params.help) {
|
|
|
14 log.info help()
|
|
|
15 exit 0
|
|
|
16 }
|
|
|
17
|
|
|
18 // Include any necessary modules and subworkflows
|
|
|
19 include { PROCESS_FASTQ } from "${params.subworkflows}${params.fs}process_fastq"
|
|
|
20 include { SPADES_ASSEMBLE } from "${params.modules}${params.fs}spades${params.fs}assemble${params.fs}main"
|
|
|
21 include { DUMP_SOFTWARE_VERSIONS } from "${params.modules}${params.fs}custom${params.fs}dump_software_versions${params.fs}main"
|
|
|
22
|
|
|
23
|
|
|
24
|
|
|
25 /*
|
|
|
26 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
27 INPUTS AND ANY CHECKS FOR THE CENTRIFLAKEN-HY WORKFLOW
|
|
|
28 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
29 */
|
|
|
30
|
|
|
31 def spades_custom_hmm = (params.spades_hmm ? file ( "${params.spades_hmm}" ) : false)
|
|
|
32 def reads_platform = 0
|
|
|
33
|
|
|
34 reads_platform += (params.input ? 1 : 0)
|
|
|
35
|
|
|
36 if (spades_custom_hmm && !spades_custom_hmm.exists()) {
|
|
|
37 stopNow("Please check if the following SPAdes' custom HMM directory\n" +
|
|
|
38 "path is valid:\n${params.spades_hmm}\nCannot proceed further!")
|
|
|
39 }
|
|
|
40
|
|
|
41 if (reads_platform < 1 || reads_platform == 0) {
|
|
|
42 stopNow("Please mention at least one absolute path to input folder which contains\n" +
|
|
|
43 "FASTQ files sequenced using the --input option.\n" +
|
|
|
44 "Ex: --input (Illumina or Generic short reads in FASTQ format)")
|
|
|
45 }
|
|
|
46
|
|
|
47 /*
|
|
|
48 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
49 RUN THE CENTRIFLAKEN-HY WORKFLOW
|
|
|
50 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
51 */
|
|
|
52
|
|
|
53 workflow SPADES_ONLY {
|
|
|
54 main:
|
|
|
55 ch_dummy = Channel.fromPath("${params.dummyfile}")
|
|
|
56 ch_dummy2 = Channel.fromPath("${params.dummyfile2}")
|
|
|
57
|
|
|
58 log.info summaryOfParams()
|
|
|
59
|
|
|
60 PROCESS_FASTQ()
|
|
|
61 .processed_reads
|
|
|
62 .set { ch_processed_reads }
|
|
|
63
|
|
|
64 PROCESS_FASTQ
|
|
|
65 .out
|
|
|
66 .versions
|
|
|
67 .set { software_versions }
|
|
|
68
|
|
|
69 // As of 06/02/2022, with the upcoming newer versions of NextFlow, we will be able to do
|
|
|
70 // allowNull: true for both input and output, but until then, we have to use dummy files.
|
|
|
71 // and work arounds.
|
|
|
72 // https://github.com/nextflow-io/nextflow/pull/2893
|
|
|
73
|
|
|
74 SPADES_ASSEMBLE (
|
|
|
75 ch_processed_reads
|
|
|
76 .combine(ch_dummy)
|
|
|
77 .combine(ch_dummy2)
|
|
|
78 )
|
|
|
79
|
|
|
80 SPADES_ASSEMBLE
|
|
|
81 .out
|
|
|
82 .assembly
|
|
|
83 .set { ch_assembly }
|
|
|
84
|
|
|
85 software_versions
|
|
|
86 .mix ( SPADES_ASSEMBLE.out.versions.ifEmpty(null) )
|
|
|
87 .set { software_versions }
|
|
|
88
|
|
|
89
|
|
|
90 DUMP_SOFTWARE_VERSIONS (
|
|
|
91 software_versions
|
|
|
92 .unique()
|
|
|
93 .collectFile(name: 'collected_versions.yml')
|
|
|
94 )
|
|
|
95 }
|
|
|
96
|
|
|
97 /*
|
|
|
98 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
99 ON COMPLETE, SHOW GORY DETAILS OF ALL PARAMS WHICH WILL BE HELPFUL TO DEBUG
|
|
|
100 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
101 */
|
|
|
102
|
|
|
103 workflow.onComplete {
|
|
|
104 if (workflow.success) {
|
|
|
105 sendMail()
|
|
|
106 }
|
|
|
107 }
|
|
|
108
|
|
|
109 workflow.onError {
|
|
|
110 sendMail()
|
|
|
111 }
|
|
|
112
|
|
|
113 /*
|
|
|
114 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
115 HELPER METHODS FOR CENTRIFLAKEN-HY WORKFLOW
|
|
|
116 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
117 */
|
|
|
118
|
|
|
119 def help() {
|
|
|
120
|
|
|
121 Map helptext = [:]
|
|
|
122
|
|
|
123 helptext.putAll (
|
|
|
124 fastqEntryPointHelp() +
|
|
|
125 spadesHelp(params).text +
|
|
|
126 wrapUpHelp()
|
|
|
127 )
|
|
|
128
|
|
|
129 return addPadding(helptext)
|
|
|
130 } |