|
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 { dpubmlstpyHelp } from "${params.toolshelp}${params.fs}dpubmlstpy"
|
|
|
10 include { checkm2predictHelp } from "${params.toolshelp}${params.fs}checkm2predict"
|
|
|
11 include { guncrunHelp } from "${params.toolshelp}${params.fs}guncrun"
|
|
|
12 include { mlstHelp } from "${params.toolshelp}${params.fs}mlst"
|
|
|
13
|
|
|
14 // Exit if help requested before any subworkflows
|
|
|
15 if (params.help) {
|
|
|
16 log.info help()
|
|
|
17 exit 0
|
|
|
18 }
|
|
|
19
|
|
|
20 // Include any necessary modules and subworkflows
|
|
|
21 include { DOWNLOAD_PDG_METADATA } from "${params.modules}${params.fs}download_pdg_metadata${params.fs}main"
|
|
|
22 include { DOWNLOAD_PUBMLST_SCHEME } from "${params.modules}${params.fs}download_pubmlst_scheme${params.fs}main"
|
|
|
23 include { FILTER_PDG_METADATA } from "${params.modules}${params.fs}filter_pdg_metadata${params.fs}main"
|
|
|
24 include { GUNC_RUN } from "${params.modules}${params.fs}gunc${params.fs}run${params.fs}main"
|
|
|
25 include { CHECKM2_PREDICT } from "${params.modules}${params.fs}checkm2${params.fs}predict${params.fs}main"
|
|
|
26 include { QUAL_PASSED_GENOMES } from "${params.modules}${params.fs}custom${params.fs}qual_passed_genomes${params.fs}main"
|
|
|
27 include { SCAFFOLD_GENOMES } from "${params.modules}${params.fs}scaffold_genomes${params.fs}main"
|
|
|
28 include { MLST } from "${params.modules}${params.fs}mlst${params.fs}main"
|
|
|
29 include { INDEX_PDG_METADATA } from "${params.modules}${params.fs}index_pdg_metadata${params.fs}main"
|
|
|
30 include { MASH_SKETCH } from "${params.modules}${params.fs}mash${params.fs}sketch${params.fs}main"
|
|
|
31 include { MASH_PASTE } from "${params.modules}${params.fs}mash${params.fs}paste${params.fs}main"
|
|
|
32 include { DUMP_SOFTWARE_VERSIONS } from "${params.modules}${params.fs}custom${params.fs}dump_software_versions${params.fs}main"
|
|
|
33
|
|
|
34 /*
|
|
|
35 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
36 INPUTS AND ANY CHECKS FOR THE CRONOLOGY_DB WORKFLOW
|
|
|
37 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
38 */
|
|
|
39
|
|
|
40 if (!params.output) {
|
|
|
41 stopNow("Please mention the absolute UNIX path to store the DB flat files\n" +
|
|
|
42 "using the --output option.\n" +
|
|
|
43 "Ex: --output /path/to/cronology/db_files")
|
|
|
44 }
|
|
|
45
|
|
|
46 checkDBPathExists(params.guncrun_dbpath, 'GUNC')
|
|
|
47 checkDBPathExists(params.checkm2predict_dbpath, 'CheckM2')
|
|
|
48
|
|
|
49 /*
|
|
|
50 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
51 RUN THE CRONOLOGY_DB WORKFLOW
|
|
|
52 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
53 */
|
|
|
54
|
|
|
55 workflow CRONOLOGY_DB {
|
|
|
56 main:
|
|
|
57 log.info summaryOfParams()
|
|
|
58
|
|
|
59 DOWNLOAD_PDG_METADATA ( params.pdg_release ?: null )
|
|
|
60
|
|
|
61 DOWNLOAD_PDG_METADATA.out.versions
|
|
|
62 .set { software_versions }
|
|
|
63
|
|
|
64 DOWNLOAD_PUBMLST_SCHEME ( params.dpubmlstpy_org ?: null )
|
|
|
65
|
|
|
66 FILTER_PDG_METADATA (
|
|
|
67 DOWNLOAD_PDG_METADATA.out.accs
|
|
|
68 .splitText(by: params.genomes_chunk, file: true)
|
|
|
69 )
|
|
|
70
|
|
|
71 FILTER_PDG_METADATA.out.accs_chunk_tbl
|
|
|
72 .collectFile(sort: { acc_f -> acc_f.simpleName })
|
|
|
73 .multiMap { acc_chunk_file ->
|
|
|
74 def meta = [:]
|
|
|
75 meta.id = 'AssemblyQC'
|
|
|
76 meta.phone_ncbi = true
|
|
|
77 gunc: [ meta, params.guncrun_dbpath, acc_chunk_file ]
|
|
|
78 checkm2: [ meta, params.checkm2predict_dbpath, acc_chunk_file ]
|
|
|
79 }
|
|
|
80 .set { ch_run_qual_on_these_accs }
|
|
|
81
|
|
|
82 CHECKM2_PREDICT ( ch_run_qual_on_these_accs.checkm2 )
|
|
|
83
|
|
|
84 GUNC_RUN ( ch_run_qual_on_these_accs.gunc )
|
|
|
85
|
|
|
86 QUAL_PASSED_GENOMES (
|
|
|
87 CHECKM2_PREDICT.out.quality_report_passed
|
|
|
88 .map { meta, qual ->
|
|
|
89 [ qual ]
|
|
|
90 }
|
|
|
91 .collect()
|
|
|
92 .flatten()
|
|
|
93 .collectFile(name: 'checkm2_quality_passed.txt'),
|
|
|
94 GUNC_RUN.out.quality_report_passed
|
|
|
95 .map { meta, qual ->
|
|
|
96 [ qual ]
|
|
|
97 }
|
|
|
98 .collect()
|
|
|
99 .flatten()
|
|
|
100 .collectFile(name: 'gunc_quality_passed.txt')
|
|
|
101 )
|
|
|
102
|
|
|
103 SCAFFOLD_GENOMES (
|
|
|
104 QUAL_PASSED_GENOMES.out.accs
|
|
|
105 .splitText(by: params.genomes_chunk, file: true)
|
|
|
106 )
|
|
|
107
|
|
|
108 SCAFFOLD_GENOMES.out.scaffolded
|
|
|
109 .multiMap { scaffolded ->
|
|
|
110 def meta = [:]
|
|
|
111 meta.id = (params.pdg_release ?: 'NCBI Pathogen Genomes')
|
|
|
112 mlst: [ meta, scaffolded ]
|
|
|
113 mash: [ meta, scaffolded ]
|
|
|
114 }
|
|
|
115 .set { ch_scaffolded_genomes }
|
|
|
116
|
|
|
117 MLST (
|
|
|
118 ch_scaffolded_genomes.mlst
|
|
|
119 .combine( DOWNLOAD_PUBMLST_SCHEME.out.pubmlst_dir )
|
|
|
120 )
|
|
|
121
|
|
|
122 MLST.out.tsv
|
|
|
123 .map { meta, tsv ->
|
|
|
124 tsv
|
|
|
125 }
|
|
|
126 .collectFile(
|
|
|
127 name: 'mlst_results.tsv',
|
|
|
128 keepHeader: true,
|
|
|
129 skip: 1
|
|
|
130 )
|
|
|
131 .set { ch_mlst_results }
|
|
|
132
|
|
|
133 INDEX_PDG_METADATA (
|
|
|
134 DOWNLOAD_PDG_METADATA.out.pdg_metadata,
|
|
|
135 DOWNLOAD_PDG_METADATA.out.snp_cluster_metadata,
|
|
|
136 DOWNLOAD_PDG_METADATA.out.accs,
|
|
|
137 ch_mlst_results
|
|
|
138 )
|
|
|
139
|
|
|
140 MASH_SKETCH (
|
|
|
141 ch_scaffolded_genomes.mash
|
|
|
142 .map { it -> tuple ( it[0], it[1].flatten() ) }
|
|
|
143 )
|
|
|
144
|
|
|
145 MASH_PASTE (
|
|
|
146 MASH_SKETCH.out.sketch
|
|
|
147 .map { meta, sketch ->
|
|
|
148 [ [id: (params.pdg_release ?: 'NCBI Pathogen Genomes')], sketch ]
|
|
|
149 }
|
|
|
150 .groupTuple(by: [0])
|
|
|
151 )
|
|
|
152
|
|
|
153 DUMP_SOFTWARE_VERSIONS (
|
|
|
154 software_versions
|
|
|
155 .mix (
|
|
|
156 DOWNLOAD_PDG_METADATA.out.versions,
|
|
|
157 DOWNLOAD_PUBMLST_SCHEME.out.versions,
|
|
|
158 FILTER_PDG_METADATA.out.versions,
|
|
|
159 CHECKM2_PREDICT.out.versions,
|
|
|
160 GUNC_RUN.out.versions,
|
|
|
161 QUAL_PASSED_GENOMES.out.versions,
|
|
|
162 SCAFFOLD_GENOMES.out.versions,
|
|
|
163 MLST.out.versions,
|
|
|
164 INDEX_PDG_METADATA.out.versions,
|
|
|
165 MASH_SKETCH.out.versions,
|
|
|
166 MASH_PASTE.out.versions
|
|
|
167 )
|
|
|
168 .unique()
|
|
|
169 .collectFile(name: 'collected_versions.yml')
|
|
|
170 )
|
|
|
171 }
|
|
|
172
|
|
|
173 /*
|
|
|
174 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
175 ON COMPLETE, SHOW GORY DETAILS OF ALL PARAMS WHICH WILL BE HELPFUL TO DEBUG
|
|
|
176 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
177 */
|
|
|
178
|
|
|
179 workflow.onComplete {
|
|
|
180 if (workflow.success) {
|
|
|
181 sendMail()
|
|
|
182 }
|
|
|
183 }
|
|
|
184
|
|
|
185 workflow.onError {
|
|
|
186 sendMail()
|
|
|
187 }
|
|
|
188
|
|
|
189 /*
|
|
|
190 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
191 METHOD TO CHECK IF DB PATHS EXIST
|
|
|
192 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
193 */
|
|
|
194
|
|
|
195 def checkDBPathExists(db_path, msg) {
|
|
|
196 db_path_obj = file( db_path )
|
|
|
197
|
|
|
198 if (!db_path_obj.exists()) {
|
|
|
199 stopNow("Please check if the database path for ${msg}\n" +
|
|
|
200 "[ ${db_path} ]\nexists.")
|
|
|
201 }
|
|
|
202 }/*
|
|
|
203
|
|
|
204 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
205 HELP TEXT METHODS FOR CRONOLOGY WORKFLOW
|
|
|
206 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
207 */
|
|
|
208
|
|
|
209 def help() {
|
|
|
210
|
|
|
211 Map helptext = [:]
|
|
|
212
|
|
|
213 helptext.putAll (
|
|
|
214 fastqEntryPointHelp().findAll {
|
|
|
215 it.key =~ /Required|output|Other|Workflow|Author|Version/
|
|
|
216 } +
|
|
|
217 dpubmlstpyHelp(params).text +
|
|
|
218 checkm2predictHelp(params).text +
|
|
|
219 guncrunHelp(params).text +
|
|
|
220 wrapUpHelp()
|
|
|
221 )
|
|
|
222
|
|
|
223 return addPadding(helptext)
|
|
|
224 } |