Mercurial > repos > nml > cryptogenotyper
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> |
