comparison cryptogenotyper.xml @ 0:c64e19bda2a6 draft default tip

planemo upload for repository https://github.com/phac-nml/CryptoGenotyper commit fdca1f95a5d09edf00bddd42286b68fcb20fa981
author nml
date Fri, 12 Sep 2025 18:50:28 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:c64e19bda2a6
1 <tool id="CryptoGenotyper" name = "CryptoGenotyper" version="@VERSION@+galaxy0">
2 <description>
3 classifies Cryptosporidium species subtypes based on SSU rRNA and gp60 gene markers from Sanger sequencing data.
4 </description>
5 <macros>
6 <token name="@VERSION@">1.5.0</token>
7 </macros>
8 <requirements>
9 <requirement type="package" version ="@VERSION@">cryptogenotyper</requirement>
10 </requirements>
11 <version_command>cryptogenotyper --version</version_command>
12 <command detect_errors="exit_code">
13 <![CDATA[
14
15 #set $ref_file=''
16
17 #if $db
18 ln -sf '${db}' '${db.name}' &&
19 #set $ref_file = $db.name
20 #end if
21
22 #if $primers['seqtype'] == 'contig'
23 #set $forward_name=$primers.input.forward.name.rsplit('.', 1)[0]
24 #set $reverse_name=$primers.input.reverse.name.rsplit('.', 1)[0]
25 ln -sf '${$primers.input['forward']}' '${forward_name}_forward.${primers.input.forward.ext}' &&
26 ln -sf '${$primers.input['reverse']}' '${reverse_name}_reverse.${primers.input.reverse.ext}' &&
27 cryptogenotyper -i '.' -m '$marker' -t '$primers.seqtype' -f 'forward' -r 'reverse'
28 #if $db
29 --databasefile $ref_file
30 #end if
31 #else
32 #set $filename_no_ext=$primers.input.name.rsplit('.', 1)[0]
33 ln -sf '${primers.input}' '${filename_no_ext}.${primers.input.ext}' &&
34 cryptogenotyper -i './${primers.input.name}' -m '$marker' -t '$primers.seqtype'
35 #if $db
36 --databasefile $ref_file
37 #end if
38 #end if
39 $outputheader
40 -o 'result'
41 ]]>
42 </command>
43 <inputs>
44 <param name="marker" type="select" label="Marker">
45 <option value="18S">SSU rRNA (18S)</option>
46 <option value="gp60">gp60</option>
47 </param>
48 <param name="db" type="data" optional="true" format="fasta" label="Reference Database File (optional):"/>
49 <conditional name="primers">
50 <param name="seqtype" type="select" label="Type of Sequences">
51 <option value="forward" selected="true">Forward Only</option>
52 <option value="reverse">Reverse Only</option>
53 <option value="contig">Contig</option>
54 </param>
55 <when value="contig">
56 <param name="input" type="data_collection" collection_type="paired" format="ab1,fasta" label="Paired Sequencing File(s)"/>
57 </when>
58 <when value="forward">
59 <param name="input" type="data" format="ab1,fasta" label="Forward Sequencing File(s)"/>
60 </when>
61 <when value="reverse">
62 <param name="input" type="data" format="ab1,fasta" label="Reverse Sequencing File(s)"/>
63 </when>
64 </conditional>
65 <param name="show_log" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Output run log?"></param>
66 <param name="outputheader" type="boolean" truevalue="" falsevalue="--noheaderline" checked="true" label="Output header line in the report?">
67 </param>
68
69
70 </inputs>
71 <outputs>
72 <!-- For single files (forward/reverse mode) -->
73 <data name="outfile_single" format="fasta" from_work_dir="result_cryptogenotyper_report.fa"
74 label="${tool.name} ${marker} extracted fasta from ${primers.input.name.split('.')[0]}">
75 <filter>primers['seqtype'] != 'contig'</filter>
76 </data>
77 <!-- For collections (contig mode) -->
78 <data name="outfile_collection" format="fasta" from_work_dir="result_cryptogenotyper_report.fa"
79 label="${tool.name} ${marker} extracted fastas">
80 <filter>primers['seqtype'] == 'contig'</filter>
81 </data>
82
83 <!-- For single files (forward/reverse mode) -->
84 <data name="outfile_report_single" format="tabular" from_work_dir="result_cryptogenotyper_report.txt"
85 label="${tool.name} ${marker} REPORT on ${primers.input.name.split('.')[0]}">
86 <filter>primers['seqtype'] != 'contig'</filter>
87 </data>
88 <!-- For collections (contig mode) -->
89 <data name="outfile_report_collection" format="tabular" from_work_dir="result_cryptogenotyper_report.txt"
90 label="${tool.name} ${marker} REPORTS">
91 <filter>primers['seqtype'] == 'contig'</filter>
92 </data>
93
94 <!-- For single files (forward/reverse mode) -->
95 <data name="outfile_log_single" format="txt" from_work_dir="cryptogenotyper.log"
96 label="${tool.name} Run ${marker} log on ${primers.input.name.split('.')[0]}">
97 <filter>show_log and primers['seqtype'] != 'contig'</filter>
98 </data>
99 <!-- For collections (contig mode) -->
100 <data name="outfile_log_collection" format="txt" from_work_dir="cryptogenotyper.log"
101 label="${tool.name} ${marker} logs">
102 <filter>show_log and primers['seqtype'] == 'contig'</filter>
103 </data>
104 </outputs>
105
106 <tests>
107 <!--TEST 1-->
108 <test expect_num_outputs="2">
109 <param name="marker" value="18S"/>
110 <conditional name="primers">
111 <param name="seqtype" value="forward"/>
112 <param name="input" value="P17705_Crypto16-2F-20170927_SSUF_G12_084.ab1"/>
113 </conditional>
114 <output name="outfile_report_single" ftype="tabular">
115 <assert_contents>
116 <has_text_matching expression="C.parvum"/>
117 </assert_contents>
118 </output>
119 </test>
120 <!--TEST 2 -->
121 <test expect_num_outputs="2">
122 <param name="marker" value="gp60"/>
123 <conditional name="primers">
124 <param name="seqtype" value="forward"/>
125 <param name="input" value="P17705_gp60-Crypt14-1F-20170927_gp60F_G07_051.ab1"/>
126 </conditional>
127 <output name="outfile_report_single" ftype="tabular" >
128 <assert_contents>
129 <has_text_matching expression="C.parvum"/>
130 </assert_contents>
131 </output>
132 </test>
133 <!--TEST 3:Paired gp60 contig test -->
134 <test expect_num_outputs="2">
135 <param name="marker" value="gp60"/>
136 <param name="primers|seqtype" value="contig"/>
137 <param name="primers|input">
138 <collection type="paired">
139 <element name="forward" value="P17705_gp60-Crypt14-1F-20170927_gp60F_G07_051.ab1"/>
140 <element name="reverse" value="P17705_gp60-Crypt14-1R-20170927_gp60R_H07_049.ab1"/>
141 </collection>
142 </param>
143 <output name="outfile_report_collection" ftype="tabular">
144 <assert_contents>
145 <has_text_matching expression="C.parvum"/>
146 <has_text_matching expression="IIaA15G2R1"/>
147 </assert_contents>
148 </output>
149 </test>
150 <!--TEST 4:Paired 18S contig test -->
151 <test expect_num_outputs="2">
152 <param name="marker" value="18S"/>
153 <param name="primers|seqtype" value="contig"/>
154 <param name="primers|input">
155 <collection type="paired">
156 <element name="forward" value="P17705_Crypto16-2F-20170927_SSUF_G12_084.ab1"/>
157 <element name="reverse" value="P17705_Crypto16-2R-20170927_SSUR_H12_082.ab1"/>
158 </collection>
159 </param>
160 <output name="outfile_report_collection" ftype="tabular">
161 <assert_contents>
162 <has_text_matching expression="C.parvum"/>
163 <has_text_matching expression="Check for C. parvum TGA paralogs"/>
164 </assert_contents>
165 </output>
166 </test>
167
168
169 <!--TEST 5: 18S multi-fasta forward -->
170 <test expect_num_outputs="2">
171 <param name="marker" value="18S"/>
172 <param name="primers|seqtype" value="forward"/>
173 <param name="primers|input" value="test_illumina_18S_F.fasta"/>
174 <output name="outfile_report_single" ftype="tabular">
175 <assert_contents>
176 <has_n_lines n="5"/>
177 <has_text_matching expression="C.hominis"/>
178 <has_text_matching expression="forward"/>
179 </assert_contents>
180 </output>
181 </test>
182
183 <!--TEST 6: 18S multi-fasta reverse -->
184 <test expect_num_outputs="2">
185 <param name="marker" value="18S"/>
186 <param name="primers|seqtype" value="reverse"/>
187 <param name="primers|input" value="test_illumina_18S_R.fasta"/>
188 <output name="outfile_report_single" ftype="tabular">
189 <assert_contents>
190 <has_n_lines n="5"/>
191 <has_text_matching expression="C.hominis"/>
192 <has_text_matching expression="reverse"/>
193 </assert_contents>
194 </output>
195 </test>
196
197 <!--TEST 7: 18S multi-fasta contig -->
198 <test expect_num_outputs="2">
199 <param name="marker" value="18S"/>
200 <param name="primers|seqtype" value="contig"/>
201 <param name="primers|input">
202 <collection type="paired">
203 <element name="forward" value="test_illumina_18S_F.fasta"/>
204 <element name="reverse" value="test_illumina_18S_R.fasta"/>
205 </collection>
206 </param>
207 <output name="outfile_report_collection" ftype="tabular">
208 <assert_contents>
209 <has_text_matching expression="C.hominis"/>
210 <has_text_matching expression="contig"/>
211 </assert_contents>
212 </output>
213 </test>
214
215 <!--TEST 8: gp60 multi-fasta forward -->
216 <test expect_num_outputs="2">
217 <param name="marker" value="gp60"/>
218 <param name="primers|seqtype" value="forward"/>
219 <param name="primers|input" value="test_illumina_gp60_F1.fasta"/>
220 <output name="outfile_report_single" ftype="tabular">
221 <assert_contents>
222 <has_n_lines n="3"/>
223 <has_text_matching expression="C.parvum"/>
224 <has_text_matching expression="forward"/>
225 <has_text_matching expression="IIaA16G3R1"/>
226 <has_text_matching expression="IIaA15G2R2"/>
227
228 </assert_contents>
229 </output>
230 </test>
231
232 <!--TEST 9: gp60 multi-fasta reverse -->
233 <test expect_num_outputs="2">
234 <param name="marker" value="gp60"/>
235 <param name="primers|seqtype" value="reverse"/>
236 <param name="primers|input" value="test_illumina_gp60_R1.fasta"/>
237 <output name="outfile_report_single" ftype="tabular">
238 <assert_contents>
239 <has_n_lines n="3"/>
240 <has_text_matching expression="C.parvum"/>
241 <has_text_matching expression="reverse"/>
242 <has_text_matching expression="IIaA3R1"/>
243 <has_text_matching expression="IIaA3R1"/>
244 </assert_contents>
245 </output>
246 </test>
247
248
249
250 <!--TEST 10: gp60 multi-fasta reverse -->
251 <test expect_num_outputs="3">
252 <param name="marker" value="gp60"/>
253 <param name="primers|seqtype" value="contig"/>
254 <param name="show_log" value="true"/>
255 <param name="primers|input">
256 <collection type="paired">
257 <element name="forward" value="test_illumina_gp60_F1.fasta"/>
258 <element name="reverse" value="test_illumina_gp60_R1.fasta"/>
259 </collection>
260 </param>
261 <output name="outfile_report_collection" ftype="tabular">
262 <assert_contents>
263 <has_text_matching expression="C.parvum"/>
264 <has_text_matching expression="contig"/>
265 <has_text_matching expression="IIaA16G3R1"/>
266 <has_text_matching expression="IIaA15G2R2"/>
267 </assert_contents>
268 </output>
269 </test>
270
271
272
273
274
275 </tests>
276
277
278 <help>
279
280
281 **Syntax**
282
283 CryptoGenotyper is a standalone tool to *in-silico* determine species and subtype based on SSU rRNA (18S) and gp60 markers.
284
285 **❗ Important:** To process **multiple input files** and generate **a single** combined report, please import and use the workflows available `here`_.
286
287 .. _here: https://github.com/phac-nml/CryptoGenotyper/tree/main/CryptoGenotyper/GalaxyWorkflows
288
289
290 For a tutorial on how to use CryptoGenotyper, please refer to the `official tutorial`_.
291
292 For more information, please visit https://github.com/phac-nml/CryptoGenotyper.
293
294 .. _official tutorial: https://github.com/phac-nml/CryptoGenotyper/blob/docs/docs/CryptoGenotyperTutorial-CrownCopyright.pdf
295
296 -----
297
298 **Input:**
299
300 AB1 or FASTA file(s) representing Cryptosporidium's SSU rRNA (18S) or gp60 locus can be provided as single-end reads (either forward or reverse only) or as paired-end reads in contig mode (both a forward and a reverse read for each sample).
301
302 Optional: A custom reference database of SSU rRNA or gp60 locus in .fasta file format, to be used during the homology search for *Cryptosporidium* classification.
303
304
305 **Output:**
306
307 A tabular report and a FASTA file containing the identification of the *Cryptosporidium* species/subtype and its corresponding sequence for each sample along with other relevant details.
308 The gp60 subtyping is based on the `Deciphering a cryptic minefield: a guide to Cryptosporidium gp60 subtyping publication`_.
309
310 .. _`Deciphering a cryptic minefield: a guide to Cryptosporidium gp60 subtyping publication`: https://doi.org/10.1016/j.crpvbd.2025.100257
311
312 </help>
313 <citations>
314 <citation type="bibtex">
315 @ARTICLE{githubCryptoGenotyper,
316 author = {Yanta, Christine A. and Bessonov, Kyrylo and Robinson, Guy and Troell, Karin and Guy, Rebecca A.},
317 title = {CryptoGenotyper: a new bioinformatics tool to enhance Cryptosporidium identification},
318 journal = {Food and waterborne parasitology},
319 year = {2021},
320 volume = {23},
321 url = {https://doi.org/10.1016/j.fawpar.2021.e00115}
322 }</citation>
323 <citation type="bibtex">
324 @ARTICLE{RobinsonGp60,
325 author = {Robinson, Gillian and Chalmers, Rachel M. and Elwin, Kirsty and Guy, Richard A. and Bessonov, Konstantin and Troell, Kristina and Xiao, Lihua},
326 title = {Deciphering a cryptic minefield: A guide to Cryptosporidium gp60 subtyping},
327 journal = {Current Research in Parasitology and Vector-Borne Diseases},
328 year = {2025},
329 volume = {7},
330 url = {https://doi.org/10.1016/j.crpvbd.2025.100257}
331 }
332 }</citation>
333 </citations>
334
335 </tool>