comparison snipit.xml @ 3:877e80114d25 draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/snipit commit 64c7062a60708a60b5779fa3406aca8e07828d35
author iuc
date Sat, 16 Nov 2024 11:07:42 +0000
parents 92b9fd5f1f9f
children
comparison
equal deleted inserted replaced
2:92b9fd5f1f9f 3:877e80114d25
1 <tool id="snipit" name="snipit" version="@TOOL_VERSION@+galaxy0"> 1 <tool id="snipit" name="snipit" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="23.1">
2 <description>Summarise snps relative to a reference sequence</description> 2 <description>Summarise snps relative to a reference sequence</description>
3 <macros> 3 <macros>
4 <token name="@TOOL_VERSION@">1.2</token> 4 <token name="@TOOL_VERSION@">1.6</token>
5 <token name="@VERSION_SUFFIX@">0</token>
6 <xml name="ref_select" token_help="">
7 <conditional name="ref">
8 <param name="select" type="select" label="The reference sequence ..."
9 help="@HELP@">
10 <option value="first">is the first sequence in the input</option>
11 <option value="by_id">should be picked via its ID</option>
12 </param>
13 <when value="first" />
14 <when value="by_id">
15 <param name="id" argument="--reference" type="text" label="ID of reference sequence" />
16 </when>
17 </conditional>
18 </xml>
5 <xml name="handle_background" tokens="format"> 19 <xml name="handle_background" tokens="format">
6 <when value="@FORMAT@"> 20 <when value="@FORMAT@">
7 <param argument="--solid-background" name="transparent_background" type="boolean" truevalue="" falsevalue="--solid-background" label="Plot on transparent background?" /> 21 <param argument="--solid-background" name="transparent_background" type="boolean" truevalue="" falsevalue="--solid-background" label="Plot on transparent background?" />
8 </when> 22 </when>
9 </xml> 23 </xml>
15 <requirement type="package" version="@TOOL_VERSION@">snipit</requirement> 29 <requirement type="package" version="@TOOL_VERSION@">snipit</requirement>
16 </requirements> 30 </requirements>
17 <version_command>snipit -v</version_command> 31 <version_command>snipit -v</version_command>
18 <command detect_errors="exit_code"><![CDATA[ 32 <command detect_errors="exit_code"><![CDATA[
19 snipit '$alignment' 33 snipit '$alignment'
20 #if str($ref.select) == 'by_id' 34 --sequence-type $mode.sequence_type
35 ## --cds-mode flag broken in this version of snipit
36 ## but this is how it'd be used.
37 ##if str($mode.sequence_type) == 'nt'
38 ## $mode.cds_mode
39 ##end if
40 #if str($mode.ref.select) == 'by_id'
21 -r '$ref.id' 41 -r '$ref.id'
42 #end if
43 #if not str($mode.colouring.palette)
44 --recombi-mode --recombi-references '$mode.colouring.parent1,$mode.colouring.parent2'
45 #else
46 -c $mode.colouring.palette
47 #end if
48 $pos_restrict.show_indels
49 --ambig-mode $pos_restrict.ambig_mode
50 #if len($pos_restrict.include_positions)
51 --include-positions
52 #for $p in $pos_restrict.include_positions
53 '$p.pos'
54 #end for
55 #end if
56 #if len($pos_restrict.exclude_positions)
57 --exclude-positions
58 #for $p in $pos_restrict.exclude_positions
59 '$p.pos'
60 #end for
22 #end if 61 #end if
23 #if str($style.labels.choose) 62 #if str($style.labels.choose)
24 -l '$style.labels.source' 63 -l '$style.labels.source'
25 #if str($style.labels.choose) == 'custom_csv' 64 #if str($style.labels.choose) == 'custom_csv'
26 --l-header '${style.labels.names_column},${style.labels.labels_column}' 65 --l-header '${style.labels.names_column},${style.labels.labels_column}'
27 #end if 66 #end if
28 #end if 67 #end if
68 $style.position_labels
29 -f $plot.format 69 -f $plot.format
30 #if str($plot.format) in ['png', 'svg', 'tiff'] 70 #if str($plot.format) in ['png', 'svg', 'tiff']
31 $plot.transparent_background 71 $plot.transparent_background
32 #end if 72 #end if
33 $write_snps 73 $write_snps
37 #if $dims.width > 0 77 #if $dims.width > 0
38 --width $dims.width 78 --width $dims.width
39 #end if 79 #end if
40 $dims.size_option 80 $dims.size_option
41 $style.flip_vertical 81 $style.flip_vertical
42 $show_indels
43 #if len($pos_restrict.include_positions)
44 --include-positions
45 #for $p in $pos_restrict.include_positions
46 '$p.pos'
47 #end for
48 #end if
49 #if len($pos_restrict.exclude_positions)
50 --exclude-positions
51 #for $p in $pos_restrict.exclude_positions
52 '$p.pos'
53 #end for
54 #end if
55 $pos_restrict.exclude_ambig_pos
56 $style.sort.order 82 $style.sort.order
57 #if str($style.sort.order) == '--sort-by-mutation-number' 83 #if str($style.sort.order) == '--sort-by-mutation-number'
58 $style.sort.high_to_low 84 $style.sort.high_to_low
59 #else if str($style.sort.order) == '--sort-by-mutations' 85 #else if str($style.sort.order) == '--sort-by-mutations'
60 #echo ','.join([str(p['pos']) for p in $style.sort.positions]) 86 #echo ','.join([str(p['pos']) for p in $style.sort.positions])
61 $style.sort.high_to_low 87 $style.sort.high_to_low
62 #end if 88 #end if
63 #if not str($style.colouring.palette)
64 --recombi-mode --recombi-references '$style.colouring.parent1,$style.colouring.parent2'
65 #else
66 -c $style.colouring.palette
67 #end if
68 ]]></command> 89 ]]></command>
69 <environment_variables> 90 <environment_variables>
70 <environment_variable name="MPLCONFIGDIR">.matplotlib</environment_variable> 91 <environment_variable name="MPLCONFIGDIR">.matplotlib</environment_variable>
71 </environment_variables> 92 </environment_variables>
72 <inputs> 93 <inputs>
73 <param name="alignment" format="fasta" type="data" label="Input alignment fasta file" /> 94 <param name="alignment" format="fasta" type="data" label="Input alignment fasta file" />
74 <conditional name="ref"> 95 <conditional name="mode">
75 <param name="select" type="select" label="The reference sequence ..." 96 <param argument="--sequence-type" type="select" label="Type of input">
76 help="Please note that you will HAVE to specify the reference explicitly via its ID if you choose the 'recombinant mutations colouring' scheme and in this case the reference can NOT be one of the recombinant parents."> 97 <option value="nt">DNA sequence alignment</option>
77 <option value="first">is the first sequence in the input</option> 98 <option value="aa">Protein sequence alignment</option>
78 <option value="by_id">should be picked via its ID</option>
79 </param> 99 </param>
80 <when value="first" /> 100 <when value="nt">
81 <when value="by_id"> 101 <expand macro="ref_select" help="Please note that you will HAVE to specify the reference explicitly via its ID if you choose the 'recombinant mutations colouring' scheme and in this case the reference can NOT be one of the recombinant parents." />
82 <param name="id" argument="--reference" type="text" label="ID of reference sequence" /> 102 <!-- cds-mode flag is broken in this version of snipit
103 so not enabling the param for now.
104 When enabling remember to fix the double dashes!
105 <param argument="- -cds-mode" type="boolean" truevalue="- -cds-mode" falsevalue="" label="Perform coding sequence alignment check?" help="By selecting this option you are indicating that your input is an alignment of coding sequences. The tool will check that all sequence lengths are multiples of three and will fail if that is not the case." />
106 -->
107 <conditional name="colouring">
108 <param name="palette" argument="--colour-palette" type="select" label="Plotted Mutations colouring scheme" help="Mutations can be coloured by base change or, alternatively, by their presence/absence in any of two parent sequences in the alignment (recombinant mode).">
109 <option value="primary">primary</option>
110 <option value="classic" selected="true">classic</option>
111 <option value="classic_extended">classic_extended (only scheme defining colours for ambiguous bases)</option>
112 <option value="purine-pyrimidine">purine-pyrimidine</option>
113 <option value="greyscale">greyscale</option>
114 <option value="wes">wes</option>
115 <option value="verity">verity</option>
116 <option value="">recombinant mutations colouring</option>
117 </param>
118 <when value="primary" />
119 <when value="classic" />
120 <when value="classic_extended" />
121 <when value="purine-pyrimidine" />
122 <when value="greyscale" />
123 <when value="wes" />
124 <when value="verity" />
125 <when value="">
126 <param name="parent1" type="text" label="Sequence ID of first recombinant parent sequence in alignment" />
127 <param name="parent2" type="text" label="Sequence ID of second recombinant parent sequence in alignment" />
128 </when>
129 </conditional>
130 </when>
131 <when value="aa">
132 <expand macro="ref_select" />
133 <conditional name="colouring">
134 <param name="palette" argument="--colour-palette" type="select" label="Plotted Mutations colouring scheme" help="The only currently available colour scheme for protein sequences is 'ugene', which defines colours for the 20 AAs and all AA ambiguity symbols.">
135 <option value="ugene">ugene</option>
136 </param>
137 <when value="ugene" />
138 </conditional>
83 </when> 139 </when>
84 </conditional> 140 </conditional>
85 <section name="pos_restrict" title="Restrict genome positions to be plotted" expanded="false"> 141 <section name="pos_restrict" title="Restrict alignment positions to be plotted" expanded="true">
86 <repeat name='include_positions' title="Restrict plot to specific regions/positions" min="0" default="0"> 142 <param argument="--show-indels" type="boolean" truevalue="--show-indels" falsevalue="" label="Include insertion and deletion mutations" />
143 <param argument="--ambig-mode" type="select" label="Plotting of positions with ambiguity symbols">
144 <option value="all">Treat ambiguity symbols like mutations; plot all such positions (all)</option>
145 <option value="snps" selected="true">Show ambiguity symbols for positions with mutations in other sequences (snps)</option>
146 <option value="exclude">Never plot positions that involve ambiguous symbols (exclude)</option>
147 </param>
148 <repeat name="include_positions" title="Restrict plot to specific regions/positions" min="0" default="0">
87 <param argument="--include-positions" name="pos" type="text" label="Include position/region" help="A range (closed, inclusive; one-indexed) or specific position to include in the output, e.g. '100-150' or '100'"> 149 <param argument="--include-positions" name="pos" type="text" label="Include position/region" help="A range (closed, inclusive; one-indexed) or specific position to include in the output, e.g. '100-150' or '100'">
88 <validator type="regex" message="Either a single position, e.g. 8347, or an interval like 8000-8500 is required">[0-9]+(-[0-9]+)*$</validator> 150 <validator type="regex" message="Either a single position, e.g. 8347, or an interval like 8000-8500 is required">[0-9]+(-[0-9]+)*$</validator>
89 </param> 151 </param>
90 </repeat> 152 </repeat>
91 <repeat name='exclude_positions' title="Exclude specific regions/positions from plot" min="0" default="0"> 153 <repeat name='exclude_positions' title="Exclude specific regions/positions from plot" min="0" default="0">
92 <param argument="--exclude-positions" name="pos" type="text" label="Exclude position/region" help="A range (closed, inclusive; one-indexed) or specific position to exclude from the output, e.g. '100-150' or '100'; considered after any '--include-positions'."> 154 <param argument="--exclude-positions" name="pos" type="text" label="Exclude position/region" help="A range (closed, inclusive; one-indexed) or specific position to exclude from the output, e.g. '100-150' or '100'; considered after any '--include-positions'.">
93 <validator type="regex" message="Either a single position, e.g. 8347, or an interval like 8000-8500 is required">[0-9]+(-[0-9]+)*$</validator> 155 <validator type="regex" message="Either a single position, e.g. 8347, or an interval like 8000-8500 is required">[0-9]+(-[0-9]+)*$</validator>
94 </param> 156 </param>
95 </repeat> 157 </repeat>
96 <param argument="--exclude-ambig-pos" type="boolean" truevalue="--exclude-ambig-pos" falsevalue="" label="Exclude ambig positions?" help="Exclude positions with an ambiguous base in any sequences; considered after '--include-positions'." />
97 </section> 158 </section>
98 <section name="style" title="Customize rendering of samples and mutations" expanded="true"> 159 <section name="style" title="Customize rendering of samples and mutations" expanded="true">
99 <conditional name="labels"> 160 <conditional name="labels">
100 <param name="choose" argument="-l" type="select" label="Provide custom labels for sequences?"> 161 <param name="choose" argument="-l" type="select" label="Provide custom labels for sequences?">
101 <option value="">No, just use the sequence identifiers as labels in the plot</option> 162 <option value="">No, just use the sequence identifiers as labels in the plot</option>
110 <param argument="--labels" name="source" type="data" format="csv" label="Labels mapping source" help="Select a CSV dataset with an arbitrary number of named columns here and specify below which column contains the sequence IDs to be mapped and which one the labels to be used instead. The dataset must define mappings for all sequence IDs including the reference." /> 171 <param argument="--labels" name="source" type="data" format="csv" label="Labels mapping source" help="Select a CSV dataset with an arbitrary number of named columns here and specify below which column contains the sequence IDs to be mapped and which one the labels to be used instead. The dataset must define mappings for all sequence IDs including the reference." />
111 <param name="names_column" type="text" label="Name of the sequence ID column" /> 172 <param name="names_column" type="text" label="Name of the sequence ID column" />
112 <param name="labels_column" type="text" label="Name of the column with desired labels" /> 173 <param name="labels_column" type="text" label="Name of the column with desired labels" />
113 </when> 174 </when>
114 </conditional> 175 </conditional>
115 <conditional name="colouring"> 176 <param name="position_labels" type="boolean" truevalue="" falsevalue="--remove-site-text" checked="true" label="Label plotted sites with position" />
116 <param name="palette" type="select" value="classic" label="Mutations colouring scheme" help="Mutations can be coloured by base change or, alternatively, by their presence/absence in any of two parent sequences in the alignment (recombinant mode).">
117 <option value="primary">primary</option>
118 <option value="classic" selected="true">classic</option>
119 <option value="purine-pyrimidine">purine-pyrimidine</option>
120 <option value="greyscale">greyscale</option>
121 <option value="wes">wes</option>
122 <option value="verity">verity</option>
123 <option value="">recombinant mutations colouring</option>
124 </param>
125 <when value="primary" />
126 <when value="classic" />
127 <when value="purine-pyrimidine" />
128 <when value="greyscale" />
129 <when value="wes" />
130 <when value="verity" />
131 <when value="">
132 <param name="parent1" type="text" label="Sequence ID of first recombinant parent sequence in alignment" />
133 <param name="parent2" type="text" label="Sequence ID of second recombinant parent sequence in alignment" />
134 </when>
135 </conditional>
136 <conditional name="sort"> 177 <conditional name="sort">
137 <param name="order" type="select" label="Order of samples in the plot"> 178 <param name="order" type="select" label="Order of samples in the plot">
138 <option value="">Go with default</option> 179 <option value="">Go with default</option>
139 <option value="--sort-by-id">Sort by sequence ID/label</option> 180 <option value="--sort-by-id">Sort by sequence ID/label</option>
140 <option value="--sort-by-mutation-number">Sort by number of mutations</option> 181 <option value="--sort-by-mutation-number">Sort by number of mutations</option>
174 <param argument="--size-option" type="select" value="scale" label="Plot sizing options"> 215 <param argument="--size-option" type="select" value="scale" label="Plot sizing options">
175 <option value="--size-option expand">expand</option> 216 <option value="--size-option expand">expand</option>
176 <option value="" selected="true">scale</option> 217 <option value="" selected="true">scale</option>
177 </param> 218 </param>
178 </section> 219 </section>
179 <param argument="--show-indels" type="boolean" truevalue="--show-indels" falsevalue="" label="Try to plot indels" help="This is newly introduced functionality for which you may encounter bugs still." />
180 <param argument="--write-snps" type="boolean" truevalue="-s" falsevalue="" label="Write out SNPs?" help="Produces extra CSV output with lists of SNPs per sequence in the alignment if enabled." /> 220 <param argument="--write-snps" type="boolean" truevalue="-s" falsevalue="" label="Write out SNPs?" help="Produces extra CSV output with lists of SNPs per sequence in the alignment if enabled." />
181 </inputs> 221 </inputs>
182 <outputs> 222 <outputs>
183 <data name="snp_plot" format="png" label="snipit on ${on_string}: Plot" from_work_dir="snp_plot.*"> 223 <data name="snp_plot" format="png" label="snipit on ${on_string}: Plot" from_work_dir="snp_plot.*">
184 <change_format> 224 <change_format>
205 <output name="snp_plot" ftype="png" file="snp_plot.png" compare="sim_size" /> 245 <output name="snp_plot" ftype="png" file="snp_plot.png" compare="sim_size" />
206 <output name="snps" ftype="csv" file="snps.csv" /> 246 <output name="snps" ftype="csv" file="snps.csv" />
207 </test> 247 </test>
208 <test expect_num_outputs="1"> 248 <test expect_num_outputs="1">
209 <param name="alignment" value="input.fasta" /> 249 <param name="alignment" value="input.fasta" />
210 <conditional name="ref"> 250 <conditional name="mode">
211 <param name="select" value="by_id" /> 251 <conditional name="ref">
212 <param name="id" value="USA_2" /> 252 <param name="select" value="by_id" />
253 <param name="id" value="USA_2" />
254 </conditional>
213 </conditional> 255 </conditional>
214 <section name="style"> 256 <section name="style">
215 <param name="flip_vertical" value="true" /> 257 <param name="flip_vertical" value="true" />
216 </section> 258 </section>
217 <conditional name="plot"> 259 <conditional name="plot">
223 </assert_command> 265 </assert_command>
224 <output name="snp_plot" ftype="pdf" file="snp_plot.pdf" compare="sim_size" /> 266 <output name="snp_plot" ftype="pdf" file="snp_plot.pdf" compare="sim_size" />
225 </test> 267 </test>
226 <test expect_num_outputs="1"> 268 <test expect_num_outputs="1">
227 <param name="alignment" value="input.fasta" /> 269 <param name="alignment" value="input.fasta" />
228 <section name="style"> 270 <conditional name="mode">
229 <conditional name="colouring"> 271 <conditional name="colouring">
230 <param name="palette" value="verity" /> 272 <param name="palette" value="verity" />
231 </conditional> 273 </conditional>
232 </section> 274 </conditional>
233 <conditional name="plot"> 275 <conditional name="plot">
234 <param name="format" value="jpg" /> 276 <param name="format" value="jpg" />
235 <param name="transparent_background" value="true" /> 277 <param name="transparent_background" value="true" />
236 </conditional> 278 </conditional>
237 <output name="snp_plot" ftype="jpg" file="snp_plot.jpg" compare="sim_size" /> 279 <output name="snp_plot" ftype="jpg" file="snp_plot.jpg" compare="sim_size" />
238 </test> 280 </test>
239 <test expect_num_outputs="1"> 281 <test expect_num_outputs="1">
240 <param name="alignment" value="input.fasta" /> 282 <param name="alignment" value="input.fasta" />
241 <section name="pos_restrict"> 283 <section name="pos_restrict">
284 <param name="ambig_mode" value="exclude" />
242 <repeat name="include_positions"> 285 <repeat name="include_positions">
243 <param name="pos" value="1-10000" /> 286 <param name="pos" value="1-10000" />
244 </repeat> 287 </repeat>
245 <repeat name="include_positions"> 288 <repeat name="include_positions">
246 <param name="pos" value="10001-30000" /> 289 <param name="pos" value="10001-30000" />
247 </repeat> 290 </repeat>
248 <repeat name="exclude_positions"> 291 <repeat name="exclude_positions">
249 <param name="pos" value="1000-2000" /> 292 <param name="pos" value="1000-2000" />
250 </repeat> 293 </repeat>
251 <param name="exclude_ambig_pos" value="true" />
252 </section> 294 </section>
253 <section name="style"> 295 <section name="style">
254 <conditional name="sort"> 296 <conditional name="sort">
255 <param name="order" value="--sort-by-mutations" /> 297 <param name="order" value="--sort-by-mutations" />
256 <repeat name="positions"> 298 <repeat name="positions">
270 <param name="transparent_background" value="true" /> 312 <param name="transparent_background" value="true" />
271 </conditional> 313 </conditional>
272 <assert_command> 314 <assert_command>
273 <has_text text="--include-positions '1-10000' '10001-30000'" /> 315 <has_text text="--include-positions '1-10000' '10001-30000'" />
274 <has_text text="--exclude-positions '1000-2000'" /> 316 <has_text text="--exclude-positions '1000-2000'" />
275 <has_text text="--exclude-ambig-pos" /> 317 <has_text text="--ambig-mode exclude" />
276 <has_text text="--sort-by-mutations 3,1,2" /> 318 <has_text text="--sort-by-mutations 3,1,2" />
277 <has_text text="--high-to-low" /> 319 <has_text text="--high-to-low" />
278 </assert_command> 320 </assert_command>
279 <output name="snp_plot" ftype="svg"> 321 <output name="snp_plot" ftype="svg">
280 <assert_contents> 322 <assert_contents>
281 <!-- check that the plot does NOT refer to excluded 323 <!-- check that the plot does NOT refer to excluded
282 position 1059, uses darkseagreen (to highlight Ts) and 324 position 1059, uses darkseagreen (to highlight Ts) and
283 transparent (i.e. NOT white) background --> 325 transparent (i.e. NOT white) background -->
284 <not_has_text text="&lt;!-- 1059 --&gt;" /> 326 <has_line_matching expression=".*&lt;text .+&gt;1059&lt;/text&gt;" negate="true" />
285 <has_text text="style=&quot;fill: #8fbc8f" /> 327 <has_text text="style=&quot;fill: #8fbc8f" />
286 <not_has_text text="style=&quot;fill: #ffffff&quot;" /> 328 <not_has_text text="style=&quot;fill: #ffffff&quot;" />
287 </assert_contents> 329 </assert_contents>
288 </output> 330 </output>
289 </test> 331 </test>
290 <test expect_num_outputs="1"> 332 <test expect_num_outputs="1">
291 <param name="alignment" value="input.fasta" /> 333 <param name="alignment" value="input.fasta" />
292 <conditional name="ref"> 334 <conditional name="mode">
293 <param name="select" value="by_id" /> 335 <conditional name="ref">
294 <param name="id" value="reference" /> 336 <param name="select" value="by_id" />
295 </conditional> 337 <param name="id" value="reference" />
296 <section name="style"> 338 </conditional>
297 <conditional name="colouring"> 339 <conditional name="colouring">
298 <param name="palette" value="" /> 340 <param name="palette" value="" />
299 <param name="parent1" value="USA_1" /> 341 <param name="parent1" value="USA_1" />
300 <param name="parent2" value="USA_5" /> 342 <param name="parent2" value="USA_5" />
301 </conditional> 343 </conditional>
302 </section> 344 </conditional>
303 <conditional name="plot"> 345 <conditional name="plot">
304 <param name="format" value="svg" /> 346 <param name="format" value="svg" />
305 </conditional> 347 </conditional>
306 <output name="snp_plot" ftype="svg"> 348 <output name="snp_plot" ftype="svg">
307 <assert_contents> 349 <assert_contents>
308 <!-- check that the plot does mention position 1059, 350 <!-- check that the plot does mention position 1059,
309 uses goldenrod and #EA5463 as colors (to 351 uses goldenrod and #EA5463 as colors (to
310 indicate private and parent2 mutations, respectively, in 352 indicate private and parent2 mutations, respectively, in
311 recombi-mode) and uses a solid white background --> 353 recombi-mode) and uses a solid white background -->
312 <has_text text="&lt;!-- 1059 --&gt;" /> 354 <has_line_matching expression=".*&lt;text .+&gt;1059&lt;/text&gt;" />
313 <has_text text="style=&quot;fill: #daa520" /> 355 <has_text text="style=&quot;fill: #daa520" />
314 <has_text text="style=&quot;fill: #ea5463" /> 356 <has_text text="style=&quot;fill: #ea5463" />
315 <has_text text="style=&quot;fill: #ffffff&quot;" /> 357 <has_text text="style=&quot;fill: #ffffff&quot;" />
316 </assert_contents> 358 </assert_contents>
317 </output> 359 </output>
341 383
342 </tests> 384 </tests>
343 <help><![CDATA[ 385 <help><![CDATA[
344 **What it does** 386 **What it does**
345 387
346 Snipit finds the SNPs relative to a reference in a multiple sequence alignment and highlights these changes as a figure. 388 Snipit finds mutations relative to a reference in a multiple sequence alignment and presents these changes in a nice overview plot.
347 ]]> 389 ]]>
348 </help> 390 </help>
349 <citations> 391 <citations>
350 <citation type="bibtex"> 392 <citation type="bibtex">
351 @UNPUBLISHED{OToole2017, 393 @UNPUBLISHED{OToole2017,