comparison humann.xml @ 0:65c80ca30373 draft

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/humann commit 077b8f34e081e6c427acb0fde0fbb97d1b241e0b"
author iuc
date Wed, 12 May 2021 09:06:30 +0000
parents
children 6b7622dda516
comparison
equal deleted inserted replaced
-1:000000000000 0:65c80ca30373
1 <tool id="humann" name="HUMAnN" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@">
2 <description>to profile presence/absence and abundance of microbial pathways and gene families</description>
3 <macros>
4 <import>macros.xml</import>
5 <xml name="prescreen">
6 <section name="prescreen" title="Prescreen / Identifying community species" expanded="true">
7 <conditional name="metaphlan_db">
8 <param name="selector" type="select" label="Database with clade-specific marker genes">
9 <option value="cached" selected="true">Locally cached</option>
10 <option value="history">From history</option>
11 </param>
12 <when value="cached">
13 <param name="cached_db" label="Cached database with clade-specific marker genes" type="select">
14 <options from_data_table="metaphlan_database">
15 <validator message="No MetaPhlAn database is available" type="no_options" />
16 </options>
17 </param>
18 </when>
19 <when value="history">
20 <param argument="--bowtie2db" type="data" format="fasta" label="Database with clade-specific marker genes from history"/>
21 <param argument="--mpa_pkl" type="data" format="json" label="Metadata associate to the database with clade-specific marker genes from history"/>
22 </when>
23 </conditional>
24 <param argument="--prescreen-threshold" type="float" value="0.01" min="0" max="100" label="Minimum percentage of reads matching a species"/>
25 <!-- add metaphlan options -->
26 </section>
27 </xml>
28 <token name="@PRESCREEN_PREPARE@"><![CDATA[
29 #if $wf.prescreen.metaphlan_db.selector == "history"
30 mkdir metaphlan_db
31 &&
32 bowtie2-build '$wf.prescreen.metaphlan_db.bowtie2db' 'metaphlan_db/custom_db-v30'
33 &&
34 python '$__tool_directory__/customizemetadata.py'
35 transform_json_to_pkl
36 --json '$wf.prescreen.metaphlan_db.mpa_pkl'
37 --pkl 'metaphlan_db/custom_db-v30.pkl'
38 &&
39 #end if
40 ]]></token>
41 <token name="@PRESCREEN_RUN@"><![CDATA[
42 #set $metaphlan_option = "-t rel_ab"
43 #if $wf.prescreen.metaphlan_db.selector == "history"
44 #set $metaphlan_option += " --bowtie2db metaphlan_db/"
45 #set $metaphlan_option += " --index custom_db-v30"
46 #else
47 #set $metaphlan_option += " --bowtie2db %s" % $wf.prescreen.metaphlan_db.cached_db.fields.path
48 #set $metaphlan_option += " --index %s" % $wf.prescreen.metaphlan_db.cached_db.fields.dbkey
49 #end if
50 --metaphlan-options="$metaphlan_option"
51 --prescreen-threshold $wf.prescreen.prescreen_threshold
52 ]]></token>
53 <xml name="nucleotide_database">
54 <param argument="--nucleotide-database" type="data_collection" collection_type="list" format="fasta" label="Nucleotide database from history" help="Each file must be named: ^[g__].[s__]"/>
55 </xml>
56 <xml name="nucleotide_search">
57 <section name="nucleotide_search" title="Nucleotide search / Mapping reads to community pangenomes" expanded="true">
58 <conditional name="nucleotide_db">
59 <param name="selector" type="select" label="Nucleotide database" help="For locally cached databases, you need first to execute the tool to download HUMAnN2 databases">
60 <option value="cached" selected="true">Locally cached</option>
61 <option value="history">From history</option>
62 </param>
63 <when value="cached">
64 <param name="nucleotide_database" type="select" label="Nucleotide database">
65 <options from_data_table="humann_nucleotide_database">
66 <validator message="No nucleotide database is available" type="no_options" />
67 </options>
68 </param>
69 </when>
70 <when value="history">
71 <expand macro="nucleotide_database"/>
72 </when>
73 </conditional>
74 <!-- add bowtie2 options -->
75 <param argument="--nucleotide-identity-threshold" type="float" value="0" min="0" max="100"
76 label="Identity threshold for nucleotide alignments"/>
77 <param argument="--nucleotide-subject-coverage-threshold" type="float" value="50" min="0" max="100"
78 label="Subject coverage threshold for nucleotide alignments"/>
79 <param argument="--nucleotide-query-coverage-threshold" type="float" value="90" min="0" max="100"
80 label="Query coverage threshold for nucleotide alignments"/>
81 </section>
82 </xml>
83 <token name="@NUCLEOTIDE_SEARCH_PREPARE@"><![CDATA[
84 #if $wf.nucleotide_search.nucleotide_db.selector == 'history'
85 mkdir nucleotide_db
86 &&
87 #for $f in $wf.nucleotide_search.nucleotide_db.nucleotide_database:
88 ln -s '$f' 'nucleotide_db/${re.sub('[^\w\-_.]', '_', f.element_identifier)}.v296_201901b' &&
89 #end for
90 #end if
91 ]]></token>
92 <token name="@NUCLEOTIDE_SEARCH_RUN@"><![CDATA[
93 #if $wf.nucleotide_search.nucleotide_db.selector == 'history'
94 --nucleotide-database nucleotide_db
95 #else
96 --nucleotide-database '$wf.nucleotide_search.nucleotide_db.nucleotide_database.fields.path'
97 #end if
98 --nucleotide-identity-threshold $wf.nucleotide_search.nucleotide_identity_threshold
99 --nucleotide-subject-coverage-threshold $wf.nucleotide_search.nucleotide_subject_coverage_threshold
100 --nucleotide-query-coverage-threshold $wf.nucleotide_search.nucleotide_query_coverage_threshold
101 ]]></token>
102 <xml name="translated_search">
103 <section name="translated_search" title="Translated search / Aligning unmapped reads to a protein database" expanded="true">
104 <conditional name="protein_db">
105 <param name="selector" type="select" label="Protein database" help="For locally cached databases, you need first to execute the tool to download HUMAnN2 databases">
106 <option value="cached" selected="true">Locally cached</option>
107 <option value="history">From history</option>
108 </param>
109 <when value="cached">
110 <param name="protein_database" type="select" label="Protein database">
111 <options from_data_table="humann_protein_database">
112 <validator message="No protein database is available" type="no_options" />
113 </options>
114 </param>
115 </when>
116 <when value="history">
117 <param argument="--protein-database" type="data" format="fasta" label="Protein database from history"/>
118 <param argument="--search-mode" type="select" label="Search mode">
119 <option value="uniref50">UniRef50</option>
120 <option value="uniref90" selected="true">UniRef90</option>
121 </param>
122 </when>
123 </conditional>
124 <param argument="--evalue" type="float" value="1" label="E-value threshold to use with the translated search"/>
125 <!-- add diamond options -->
126 <param argument="--translated-identity-threshold" type="float" min="0" max="100" optional="true"
127 label="Identity threshold for translated alignments"
128 help="It is tuned automatically (based on uniref mode) unless a custom value is specified"/>
129 <param argument="--translated-subject-coverage-threshold" type="float" value="50" min="0" max="100"
130 label="Subject coverage threshold for translated alignments"/>
131 <param argument="--translated-query-coverage-threshold" type="float" value="90" min="0" max="100"
132 label="Query coverage threshold for translated alignments"/>
133 </section>
134 </xml>
135 <token name="@TRANSLATED_SEARCH_PREPARE@"><![CDATA[
136 #if $wf.translated_search.protein_db.selector == 'history'
137 mkdir protein_db
138 &&
139 diamond makedb
140 --in '$wf.translated_search.protein_db.protein_database'
141 --db 'protein_db/protein-db-201901b'
142 --threads "\${GALAXY_SLOTS:-4}"
143 &&
144 #end if
145 ]]></token>
146 <token name="@TRANSLATED_SEARCH_RUN@"><![CDATA[
147 --translated-alignment 'diamond'
148 #if $wf.translated_search.protein_db.selector == 'history'
149 --protein-database protein_db
150 --search-mode '$wf.translated_search.protein_db.search_mode'
151 #else
152 --protein-database '$wf.translated_search.protein_db.protein_database.fields.path'
153 #if 'uniref50' in $wf.translated_search.protein_db.protein_database.fields.dbkey
154 --search-mode 'uniref50'
155 #else
156 --search-mode 'uniref90'
157 #end if
158 #end if
159 --evalue $wf.translated_search.evalue
160 #if str($wf.translated_search.translated_identity_threshold) != ''
161 --identity-threshold $wf.translated_search.translated_identity_threshold
162 #end if
163 --translated-subject-coverage-threshold $wf.translated_search.translated_subject_coverage_threshold
164 --translated-query-coverage-threshold $wf.translated_search.translated_query_coverage_threshold
165 ]]></token>
166 </macros>
167 <expand macro="edam_ontology"/>
168 <expand macro="requirements"/>
169 <expand macro="version"/>
170 <command detect_errors="exit_code"><![CDATA[
171 #import re
172 #if $in.input.ext.startswith("fasta")
173 #set ext="fasta"
174 #else if $in.input.ext.startswith("fastq")
175 #set ext="fastq"
176 #else if $in.input.ext.endswith("bam")
177 #set ext="bam"
178 #else if $in.input.ext == 'sam'
179 #set ext="sam"
180 #else if $in.input.ext == 'biom1'
181 #set ext="biom"
182 #else
183 >&2 "unknown extension $in.input.ext"
184 exit 1;
185 #end if
186 #if $in.input.ext.endswith(".gz")
187 #set ext+=".gz"
188 #end if
189
190 #if $wf.selector == 'bypass_prescreen'
191 @NUCLEOTIDE_SEARCH_PREPARE@
192 @TRANSLATED_SEARCH_PREPARE@
193 #else if $wf.selector == 'bypass_taxonomic_profiling'
194 @NUCLEOTIDE_SEARCH_PREPARE@
195 @TRANSLATED_SEARCH_PREPARE@
196 #else if $wf.selector == 'bypass_nucleotide_index'
197 @NUCLEOTIDE_SEARCH_PREPARE@
198 @TRANSLATED_SEARCH_PREPARE@
199 #else if $wf.selector == 'bypass_nucleotide_search'
200 @TRANSLATED_SEARCH_PREPARE@
201 #else if $wf.selector == 'bypass_translated_search'
202 @PRESCREEN_PREPARE@
203 @NUCLEOTIDE_SEARCH_PREPARE@
204 #else if $wf.selector == 'none'
205 @PRESCREEN_PREPARE@
206 @NUCLEOTIDE_SEARCH_PREPARE@
207 @TRANSLATED_SEARCH_PREPARE@
208 #end if
209
210 humann
211 --input '$input'
212 --input-format $ext
213 -o 'output'
214 #if $wf.selector == 'bypass_prescreen'
215 --bypass-prescreen
216 @NUCLEOTIDE_SEARCH_RUN@
217 @TRANSLATED_SEARCH_RUN@
218 #else if $wf.selector == 'bypass_taxonomic_profiling'
219 --taxonomic-profile '$wf.taxonomic_profile'
220 @NUCLEOTIDE_SEARCH_RUN@
221 @TRANSLATED_SEARCH_RUN@
222 #else if $wf.selector == 'bypass_nucleotide_index'
223 --bypass-nucleotide-index
224 @NUCLEOTIDE_SEARCH_RUN@
225 @TRANSLATED_SEARCH_RUN@
226 #else if $wf.selector == 'bypass_nucleotide_search'
227 --bypass-nucleotide-search
228 @TRANSLATED_SEARCH_RUN@
229 #else if $wf.selector == 'bypass_translated_search'
230 --bypass-translated-search
231 @PRESCREEN_RUN@
232 @NUCLEOTIDE_SEARCH_RUN@
233 #else if $wf.selector == 'none'
234 @PRESCREEN_RUN@
235 @NUCLEOTIDE_SEARCH_RUN@
236 @TRANSLATED_SEARCH_RUN@
237 #end if
238 --gap-fill '$g_p_quant.gap_fill'
239 --minpath '$g_p_quant.minpath'
240 --pathways '$g_p_quant.pathways'
241 --xipe '$g_p_quant.xipe'
242 --annotation-gene-index $g_p_quant.annotation_gene_index
243 #if $g_p_quant.id_mapping
244 --id-mapping '$g_p_quant.id_mapping'
245 #end if
246 --log-level 'DEBUG'
247 --o-log '$log'
248 --output-basename '$out.output_basename'
249 --output-format '$out.output_format'
250 --output-max-decimals $out.output_max_decimals
251 $out.remove_column_description_output
252 $out.remove_stratified_output
253 --threads "\${GALAXY_SLOTS:-4}"
254 --memory-use minimum
255 ]]></command>
256 <inputs>
257 <conditional name="in">
258 <param name="selector" type="select" label="Input(s)">
259 <option value="raw" selected="true">Quality-controlled shotgun sequencing reads (metagenome (DNA reads) or metatranscriptome (RNA reads))</option>
260 <option value="mapping">Pre-computed mappings of reads to database sequences</option>
261 <option value="abundance">Pre-computed (typically gene) abundance tables</option>
262 </param>
263 <when value="raw">
264 <param name="input" type="data" format="fastq,fastq.gz,fasta,fasta.gz" label="Paired-end Fasta/FastQ files should be merged first"/>
265 </when>
266 <when value="mapping">
267 <param name="input" type="data" format="sam,bam" label="Pre-computed mappings of reads to database sequences"/>
268 </when>
269 <when value="abundance">
270 <param name="input" type="data" format="tabular,tsv,biom1" label="Pre-computed (typically gene) abundance tables"/>
271 </when>
272 </conditional>
273 <conditional name="wf">
274 <param name="selector" type="select" label="Steps">
275 <option value="bypass_prescreen">Bypass the prescreen step and run on the full ChocoPhlAn database (--bypass-prescreen)</option>
276 <option value="bypass_taxonomic_profiling">Bypass the taxonomic profiling step and creates a custom ChocoPhlAn database of the species</option>
277 <option value="bypass_nucleotide_index">Starts the workflow with the nucleotide alignment step using the provided indexed database (--bypass-nucleotide-index)</option>
278 <option value="bypass_nucleotide_search">Bypass all of the alignment steps before the translated search (--bypass_nucleotide-search)</option>
279 <option value="bypass_translated_search">Run all of the alignment steps except the translated search (--bypass_translated-search)</option>
280 <option value="none" selected="true">Run the full workflow steps</option>
281 </param>
282 <when value="bypass_prescreen">
283 <expand macro="nucleotide_search"/>
284 <expand macro="translated_search"/>
285 </when>
286 <when value="bypass_taxonomic_profiling">
287 <param argument="--taxonomic-profile" type="data" format="tabular,txt" label="Taxonomic profile file"/>
288 <expand macro="nucleotide_search"/>
289 <expand macro="translated_search"/>
290 </when>
291 <when value="bypass_nucleotide_index">
292 <expand macro="nucleotide_search"/>
293 <expand macro="translated_search"/>
294 </when>
295 <when value="bypass_nucleotide_search">
296 <expand macro="translated_search"/>
297 </when>
298 <when value="bypass_translated_search">
299 <expand macro="prescreen"/>
300 <expand macro="nucleotide_search"/>
301 </when>
302 <when value="none">
303 <expand macro="prescreen"/>
304 <expand macro="nucleotide_search"/>
305 <expand macro="translated_search"/>
306 </when>
307 </conditional>
308 <section name="g_p_quant" title="Gene and pathway quantification" expanded="true">
309 <param argument="--gap-fill" type="boolean" truevalue="on" falsevalue="off" checked="true" label="Use gap fill computation?"/>
310 <param argument="--minpath" type="boolean" truevalue="on" falsevalue="off" checked="true" label="Use minpath computation?"/>
311 <param argument="--pathways" type="select" label="Database to use for pathway computations">
312 <option value="metacyc" selected="true">MetaCyc</option>
313 <option value="unipathway">UniPathway</option>
314 </param>
315 <param argument="--xipe" type="boolean" truevalue="on" falsevalue="off" checked="false" label="Use xipe computation?"/>
316 <param argument="--annotation-gene-index" type="integer" value="3" label="Index of the gene in the sequence annotation"/>
317 <param argument="--id-mapping" type="data" format="tsv" optional="true" label="id mapping file for alignments"/>
318 </section>
319 <section name="out" title="Outputs" expanded="true">
320 <param argument="--output-basename" type="text" value="humann" label="basename">
321 <sanitizer invalid_char="">
322 <valid initial="string.ascii_letters,string.digits">
323 <add value="_" />
324 <add value="-" />
325 </valid>
326 </sanitizer>
327 <validator type="empty_field" />
328 </param>
329 <param argument="--output-format" type="select" label="Format of the output files">
330 <option value="tsv" selected="true">Tabular</option>
331 <option value="biom">BIOM</option>
332 </param>
333 <param argument="--output-max-decimals" type="integer" value="10" label="Number of decimals to output"/>
334 <param argument="--remove-column-description-output" type="boolean" truevalue="--remove-column-description-output" falsevalue="" checked="false" label="Remove description in the output column?"/>
335 <param argument="--remove-stratified-output" type="boolean" truevalue="--remove-stratified-output" falsevalue="" checked="false" label="Remove stratification from output?"/>
336 <param name="intermediate_temp" type="select" multiple="true" label="Intermediate output files">
337 <option value="metaphlan_bowtie2">MetaPhlAn Bowtie2 output</option>
338 <option value="metaphlan_bugs_list">MetaPhlAn bugs list</option>
339 <option value="bowtie2_alignment">Bowtie2 alignment results</option>
340 <option value="bowtie2_reduced_alignment">Bowtie2 reduced alignment results</option>
341 <option value="bowtie2_unaligned">Unaligned reads after Bowtie2</option>
342 <option value="custom_chocophlan_database">Custom ChocoPhlAn database</option>
343 <option value="diamond_aligned">Translated alignment results</option>
344 <option value="diamond_unaligned">Translated alignment unaligned reads</option>
345 </param>
346 </section>
347 </inputs>
348 <outputs>
349 <data format="tabular" name="gene_families_tsv" from_work_dir="output/*_genefamilies.tsv" label="${tool.name} on ${on_string}: Gene families and their abundance" >
350 <filter>out['output_format'] == "tsv"</filter>
351 </data>
352 <data format="biom1" name="gene_families_biom" from_work_dir="output/*_genefamilies.biom" label="${tool.name} on ${on_string}: Gene families and their abundance" >
353 <filter>out['output_format'] == "biom"</filter>
354 </data>
355 <data format="tabular" name="pathcoverage_tsv" from_work_dir="output/*_pathcoverage.tsv" label="${tool.name} on ${on_string}: Pathways and their coverage" >
356 <filter>out['output_format'] == "tsv"</filter>
357 </data>
358 <data format="biom1" name="pathcoverage_biom" from_work_dir="output/*_pathcoverage.biom" label="${tool.name} on ${on_string}: Pathways and their coverage" >
359 <filter>out['output_format'] == "biom"</filter>
360 </data>
361 <data format="tabular" name="pathabundance_tsv" from_work_dir="output/*_pathabundance.tsv" label="${tool.name} on ${on_string}: Pathways and their abundance" >
362 <filter>out['output_format'] == "tsv"</filter>
363 </data>
364 <data format="biom1" name="pathabundance_biom" from_work_dir="output/*_pathabundance.biom" label="${tool.name} on ${on_string}: Pathways and their abundance" >
365 <filter>out['output_format'] == "biom"</filter>
366 </data>
367 <data format="txt" name="log" label="${tool.name} on ${on_string}: Log"/>
368 <data format="tabular" name="metaphlan_bowtie2" from_work_dir="output/*_humann_temp/*_metaphlan_bowtie2.txt" label="${tool.name} on ${on_string}: MetaPhlAn Bowtie2 output" >
369 <filter>"metaphlan_bowtie2" in out['intermediate_temp']</filter>
370 </data>
371 <data format="tabular" name="metaphlan_bugs_list" from_work_dir="output/*_humann_temp/*_metaphlan_bugs_list.tsv" label="${tool.name} on ${on_string}: MetaPhlAn bugs list" >
372 <filter>"metaphlan_bugs_list" in out['intermediate_temp']</filter>
373 </data>
374 <data format="sam" name="bowtie2_alignment" from_work_dir="output/*_humann_temp/*_bowtie2_aligned.sam" label="${tool.name} on ${on_string}: Bowtie2 alignment results" >
375 <filter>"bowtie2_alignment" in out['intermediate_temp']</filter>
376 </data>
377 <data format="tabular" name="bowtie2_reduced_alignment" from_work_dir="output/*_humann_temp/*_bowtie2_aligned.tsv" label="${tool.name} on ${on_string}: Bowtie2 reduced alignment results" >
378 <filter>"bowtie2_reduced_alignment" in out['intermediate_temp']</filter>
379 </data>
380 <data format="fasta" name="bowtie2_unaligned" from_work_dir="output/*_humann_temp/*_bowtie2_unaligned.fa" label="${tool.name} on ${on_string}: Unaligned reads after Bowtie2" >
381 <filter>"bowtie2_unaligned" in out['intermediate_temp']</filter>
382 </data>
383 <data format="fasta" name="custom_chocophlan_database" from_work_dir="output/*_humann_temp/*_custom_chocophlan_database.ffn" label="${tool.name} on ${on_string}: Custom ChocoPhlAn database" >
384 <filter>"custom_chocophlan_database" in out['intermediate_temp']</filter>
385 </data>
386 <data format="tabular" name="diamond_aligned" from_work_dir="output/*_humann_temp/*_diamond_aligned.tsv" label="${tool.name} on ${on_string}: Translated alignment results" >
387 <filter>"diamond_aligned" in out['intermediate_temp']</filter>
388 </data>
389 <data format="fasta" name="diamond_unaligned" from_work_dir="output/*_humann_temp/*_diamond_unaligned.fa" label="${tool.name} on ${on_string}: Translated alignment unaligned reads" >
390 <filter>"diamond_unaligned" in out['intermediate_temp']</filter>
391 </data>
392 </outputs>
393 <tests>
394 <test expect_num_outputs="12">
395 <conditional name="in">
396 <!-- raw fasta file -->
397 <param name="selector" value="raw"/>
398 <param name="input" value="demo.fastq.gz"/>
399 </conditional>
400 <conditional name="wf">
401 <!-- full workflow -->
402 <param name="selector" value="none"/>
403 <section name="prescreen">
404 <conditional name="metaphlan_db">
405 <param name="selector" value="history"/>
406 <param name="bowtie2db" value="test-db/metaphlan-db/demo-db-v30.fasta"/>
407 <param name="mpa_pkl" value="test-db/metaphlan-db/demo-db-v30.json"/>
408 </conditional>
409 <param name="prescreen_threshold" value="0.01"/>
410 </section>
411 <section name="nucleotide_search">
412 <conditional name="nucleotide_db">
413 <param name="selector" value="history"/>
414 <param name="nucleotide_database">
415 <collection type="list">
416 <element name="g__Bacteroides.s__Bacteroides_stercoris.centroids" ftype="fasta.gz" value="test-db/nucleotide-db/g__Bacteroides.s__Bacteroides_dorei.centroids.v296_201901b.ffn.gz" />
417 <element name="g__Bacteroides.s__Bacteroides_vulgatus.centroids" ftype="fasta.gz" value="test-db/nucleotide-db/g__Bacteroides.s__Bacteroides_vulgatus.centroids.v296_201901b.ffn.gz" />
418 </collection>
419 </param>
420 </conditional>
421 <param name="nucleotide_identity_threshold" value="0"/>
422 <param name="nucleotide_subject_coverage_threshold" value="50"/>
423 <param name="nucleotide_query_coverage_threshold" value="90"/>
424 </section>
425 <section name="translated_search">
426 <conditional name="protein_db">
427 <param name="selector" value="history"/>
428 <param name="protein_database" value="test-db/protein-db/uniref90_demo_prots_v201901b.fasta"/>
429 <param name="search_mode" value="uniref90"/>
430 </conditional>
431 <param name="evalue" value="1"/>
432 <param name="translated_subject_coverage_threshold" value="50"/>
433 <param name="translated_query_coverage_threshold" value="90"/>
434 </section>
435 </conditional>
436 <section name="g_p_quant">
437 <param name="gap_fill" value="true"/>
438 <param name="minpath" value="true"/>
439 <param name="pathways" value="metacyc"/>
440 <param name="xipe" value="false"/>
441 <param name="annotation_gene_index" value="3"/>
442 </section>
443 <section name="out">
444 <!-- intermediate files -->
445 <param name="output_basename" value="humann"/>
446 <param name="log_level" value="DEBUG"/>
447 <param name="output_format" value="tsv"/>
448 <param name="output_max_decimals" value="10"/>
449 <param name="remove_column_description_output" value="false"/>
450 <param name="remove_statified_output" value="false"/>
451 <param name="intermediate_temp"
452 value="metaphlan_bowtie2,metaphlan_bugs_list,bowtie2_alignment,bowtie2_reduced_alignment,bowtie2_unaligned,custom_chocophlan_database,diamond_aligned,diamond_unaligned"/>
453 </section>
454 <output name="gene_families_tsv" ftype="tabular" value="demo_genefamilies.tsv" compare="sim_size">
455 <assert_contents>
456 <has_text text="humann_Abundance-RPKs"/>
457 <has_text text="UniRef90_A0A078RDY6|g__Bacteroides.s__Bacteroides_vulgatus"/>
458 <has_n_columns n="2"/>
459 </assert_contents>
460 </output>
461 <output name="pathcoverage_tsv" ftype="tabular" value="demo_pathcoverage.tsv" compare="sim_size">
462 <assert_contents>
463 <has_text text="humann_Coverage"/>
464 <has_text text="PWY-5423: oleoresin monoterpene volatiles biosynthesis|unclassified"/>
465 <has_n_columns n="2"/>
466 </assert_contents>
467 </output>
468 <output name="pathabundance_tsv" ftype="tabular" value="demo_pathabundance.tsv" compare="sim_size">
469 <assert_contents>
470 <has_text text="humann_Abundance"/>
471 <has_text text="PWY-5423: oleoresin monoterpene volatiles biosynthesis|unclassified"/>
472 <has_n_columns n="2"/>
473 </assert_contents>
474 </output>
475 <output name="log" ftype="txt">
476 <assert_contents>
477 <has_text text="DATABASE SETTINGS"/>
478 <has_text text="humann.utilities"/>
479 <has_text text="humann_genefamilies"/>
480 <has_text text="humann_pathabundance"/>
481 <has_text text="humann_pathcoverage"/>
482 <has_text text="g__Bacteroides.s__Bacteroides_dorei"/>
483 </assert_contents>
484 </output>
485 <output name="metaphlan_bowtie2" ftype="tabular">
486 <assert_contents>
487 <has_text text="s__Bacteroides_dorei_read000116"/>
488 <has_text text="357276__I9R1V6__DXD47_04125"/>
489 <has_text text="s__Bacteroides_dorei_read000129"/>
490 <has_text text="357276__B6W1Y5__IY41_11405"/>
491 </assert_contents>
492 </output>
493 <output name="metaphlan_bugs_list" ftype="tabular">
494 <assert_contents>
495 <has_text text="relative_abundance"/>
496 <has_text text="k__Bacteria|p__Bacteroidetes|c__Bacteroidia|o__Bacteroidales|f__Bacteroidaceae|g__Bacteroides|s__Bacteroides_vulgatus"/>
497 <has_text text="k__Bacteria|p__Bacteroidetes|c__Bacteroidia|o__Bacteroidales|f__Bacteroidaceae|g__Bacteroides|s__Bacteroides_dorei"/>
498 </assert_contents>
499 </output>
500 <output name="bowtie2_alignment" ftype="sam">
501 <assert_contents>
502 <has_text text="SN:821__F3PQ30__HMPREF9446_00822|k__Bacteria.p__Bacteroidetes.c__Bacteroidia.o__Bacteroidales.f__Bacteroidaceae.g__Bacteroides.s__Bacteroides_vulgatus|UniRef90_F3PQ30|UniRef50_F3PQ30|510"/>
503 <has_text text="s__Bacteroides_dorei_read009840"/>
504 <has_text text="PN:bowtie2"/>
505 <has_text text="LN:1281"/>
506 </assert_contents>
507 </output>
508 <output name="bowtie2_reduced_alignment" ftype="tabular">
509 <assert_contents>
510 <has_text text="s__Bacteroides_dorei_read000001"/>
511 <has_text text="821__A6L5K0__BVU_3338|k__Bacteria.p__Bacteroidetes.c__Bacteroidia.o__Bacteroidales.f__Bacteroidaceae.g__Bacteroides.s__Bacteroides_vulgatus|UniRef90_A6L5K0|UniRef50_A6L5K0|468"/>
512 <has_text text="s__Bacteroides_vulgatus_read003845"/>
513 <has_text text="821__A0A396BBC3__DXC03_14350|k__Bacteria.p__Bacteroidetes.c__Bacteroidia.o__Bacteroidales.f__Bacteroidaceae.g__Bacteroides.s__Bacteroides_vulgatus|UniRef90_A0A396BBC3|UniRef50_A0A174FNA3|2934"/>
514 </assert_contents>
515 </output>
516 <output name="bowtie2_unaligned" ftype="fasta">
517 <assert_contents>
518 <has_text text=">s__Bacteroides_dorei_read000001|100"/>
519 <has_text text=">s__Bacteroides_dorei_read000002|100"/>
520 <has_text text=">unclassified_read000971|100"/>
521 <has_text text=">s__Bacteroides_vulgatus_read004473|100"/>
522 </assert_contents>
523 </output>
524 <output name="custom_chocophlan_database" ftype="fasta">
525 <assert_contents>
526 <has_text text=">821__F3PQ30__HMPREF9446_00822|k__Bacteria.p__Bacteroidetes.c__Bacteroidia.o__Bacteroidales.f__Bacteroidaceae.g__Bacteroides.s__Bacteroides_vulgatus|UniRef90_F3PQ30|UniRef50_F3PQ30|510"/>
527 <has_text text=">821__F3PUY1__HMPREF9446_02555|k__Bacteria.p__Bacteroidetes.c__Bacteroidia.o__Bacteroidales.f__Bacteroidaceae.g__Bacteroides.s__Bacteroides_vulgatus|UniRef90_F3PUY1|UniRef50_A0A3E5DX68|411"/>
528 <has_text text=">821__A0A3E4KCH0__DXD33_19495|k__Bacteria.p__Bacteroidetes.c__Bacteroidia.o__Bacteroidales.f__Bacteroidaceae.g__Bacteroides.s__Bacteroides_vulgatus|UniRef90_A0A3E4KCH0|UniRef50_F3PP72|3582"/>
529 </assert_contents>
530 </output>
531 <output name="diamond_aligned" ftype="tabular">
532 <assert_contents>
533 <has_text text="UniRef90_Z5XVM9|969"/>
534 <has_text text="s__Bacteroides_vulgatus_read"/>
535 <has_text text="s__Bacteroides_vulgatus_read"/>
536 <has_text text="UniRef90_Y0KEF3|618"/>
537 </assert_contents>
538 </output>
539 <output name="diamond_unaligned" ftype="fasta">
540 <assert_contents>
541 <has_text text=">s__Bacteroides_dorei_read000001|100"/>
542 <has_text text=">s__Bacteroides_vulgatus_read006412|100"/>
543 <has_text text=">unclassified_read000867|100"/>
544 </assert_contents>
545 </output>
546 </test>
547 <test expect_num_outputs="4">
548 <conditional name="in">
549 <!-- fastq file -->
550 <param name="selector" value="raw"/>
551 <param name="input" value="demo.fasta.gz"/>
552 </conditional>
553 <conditional name="wf">
554 <!-- bypass_prescreen -->
555 <param name="selector" value="bypass_prescreen"/>
556 <section name="nucleotide_search">
557 <conditional name="nucleotide_db">
558 <param name="selector" value="cached"/>
559 <param name="nucleotide_database" value="chocophlan-DEMO-20210421"/>
560 </conditional>
561 <param name="nucleotide_identity_threshold" value="0"/>
562 <param name="nucleotide_subject_coverage_threshold" value="50"/>
563 <param name="nucleotide_query_coverage_threshold" value="90"/>
564 </section>
565 <section name="translated_search">
566 <conditional name="protein_db">
567 <param name="selector" value="cached"/>
568 <param name="protein_database" value="uniref-DEMO_diamond-20210421"/>
569 </conditional>
570 <param name="evalue" value="1"/>
571 <param name="translated_subject_coverage_threshold" value="50"/>
572 <param name="translated_query_coverage_threshold" value="90"/>
573 </section>
574 </conditional>
575 <section name="g_p_quant">
576 <param name="gap_fill" value="true"/>
577 <param name="minpath" value="true"/>
578 <param name="pathways" value="metacyc"/>
579 <param name="xipe" value="false"/>
580 <param name="annotation_gene_index" value="3"/>
581 </section>
582 <section name="out">
583 <!-- Biom -->
584 <param name="output_basename" value="humann"/>
585 <param name="log_level" value="DEBUG"/>
586 <param name="output_format" value="biom"/>
587 <param name="output_max_decimals" value="10"/>
588 <param name="remove_column_description_output" value="false"/>
589 <param name="remove_statified_output" value="false"/>
590 <param name="intermediate_temp" value=""/>
591 </section>
592 <output name="gene_families_biom" ftype="biom1">
593 <assert_contents>
594 <has_text text="http://biom-format.org"/>
595 <has_text text="UniRef90_A0A396BPQ7|g__Bacteroides.s__Bacteroides_vulgatus"/>
596 <has_text text="UniRef90_W8YTG4|unclassified"/>
597 </assert_contents>
598 </output>
599 <output name="pathcoverage_biom" ftype="biom1">
600 <assert_contents>
601 <has_text text="TREE"/>
602 <has_text text="format-url"/>
603 <has_text text="http://biom-format.org"/>
604 <has_text text="PWY-5423: oleoresin monoterpene volatiles biosynthesis|unclassified"/>
605 <has_text text="humann_Coverage"/>
606 </assert_contents>
607 </output>
608 <output name="pathabundance_biom" ftype="biom1">
609 <assert_contents>
610 <has_text text="TREE"/>
611 <has_text text="format-url"/>
612 <has_text text="http://biom-format.org"/>
613 <has_text text="PWY-5423: oleoresin monoterpene volatiles biosynthesis|unclassified"/>
614 <has_text text="humann_Abundance"/>
615 </assert_contents>
616 </output>
617 <output name="log" ftype="txt">
618 <assert_contents>
619 <has_text text="Running bowtie2-build ........"/>
620 <has_text text="Total bugs from nucleotide alignment: 2"/>
621 <has_text text="Total gene families from nucleotide alignment: "/>
622 <has_text text="Aligning to reference database: "/>
623 <has_text text="Total gene families after translated alignment: "/>
624 </assert_contents>
625 </output>
626 </test>
627 <test expect_num_outputs="4">
628 <conditional name="in">
629 <param name="selector" value="raw"/>
630 <param name="input" value="demo.fasta.gz"/>
631 </conditional>
632 <conditional name="wf">
633 <!-- bypass_taxonomic_profiling -->
634 <param name="selector" value="bypass_taxonomic_profiling"/>
635 <param name="taxonomic_profile" value="demo-taxonomic-profile.tabular"/>
636 <section name="nucleotide_search">
637 <conditional name="nucleotide_db">
638 <param name="selector" value="cached"/>
639 <param name="nucleotide_database" value="chocophlan-DEMO-20210421"/>
640 </conditional>
641 <param name="nucleotide_identity_threshold" value="0"/>
642 <param name="nucleotide_subject_coverage_threshold" value="50"/>
643 <param name="nucleotide_query_coverage_threshold" value="90"/>
644 </section>
645 <section name="translated_search">
646 <conditional name="protein_db">
647 <param name="selector" value="cached"/>
648 <param name="protein_database" value="uniref-DEMO_diamond-20210421"/>
649 </conditional>
650 <param name="evalue" value="1"/>
651 <param name="translated_subject_coverage_threshold" value="50"/>
652 <param name="translated_query_coverage_threshold" value="90"/>
653 </section>
654 </conditional>
655 <section name="g_p_quant">
656 <param name="gap_fill" value="true"/>
657 <param name="minpath" value="true"/>
658 <param name="pathways" value="metacyc"/>
659 <param name="xipe" value="false"/>
660 <param name="annotation_gene_index" value="3"/>
661 </section>
662 <section name="out">
663 <param name="output_basename" value="humann"/>
664 <param name="log_level" value="DEBUG"/>
665 <param name="output_format" value="tsv"/>
666 <param name="output_max_decimals" value="10"/>
667 <param name="remove_column_description_output" value="false"/>
668 <param name="remove_statified_output" value="false"/>
669 <param name="intermediate_temp" value=""/>
670 </section>
671 <output name="gene_families_tsv" ftype="tabular">
672 <assert_contents>
673 <has_text text="humann_Abundance-RPKs"/>
674 <has_text text="UniRef90_G1UL42|g__Bacteroides.s__Bacteroides_dorei"/>
675 <has_text text="UniRef90_A0A078RDY6|g__Bacteroides.s__Bacteroides_vulgatus"/>
676 <has_n_columns n="2"/>
677 </assert_contents>
678 </output>
679 <output name="pathcoverage_tsv" ftype="tabular">
680 <assert_contents>
681 <has_text text="humann_Coverage"/>
682 <has_text text="UNINTEGRATED|unclassified"/>
683 <has_text text="PWY-4203: volatile benzenoid biosynthesis I (ester formation)|unclassified"/>
684 <has_n_columns n="2"/>
685 </assert_contents>
686 </output>
687 <output name="pathabundance_tsv" ftype="tabular">
688 <assert_contents>
689 <has_text text="humann_Abundance"/>
690 <has_text text="UNINTEGRATED|unclassified"/>
691 <has_text text="PWY-4203: volatile benzenoid biosynthesis I (ester formation)|unclassified"/>
692
693 <has_n_columns n="2"/>
694 </assert_contents>
695 </output>
696 <output name="log" ftype="txt">
697 <assert_contents>
698 <has_text text="Found g__Bacteroides.s__Bacteroides_vulgatus : "/>
699 <has_text text="Total species selected from prescreen: 2"/>
700 <has_text text="Total bugs from nucleotide alignment: 2"/>
701 <has_text text="g__Bacteroides.s__Bacteroides_vulgatus: "/>
702 <has_text text="g__Bacteroides.s__Bacteroides_dorei: "/>
703 <has_text text="Total gene families from nucleotide alignment: "/>
704 <has_text text="Total bugs after translated alignment: 3"/>
705 <has_text text="Total gene families after translated alignment"/>
706 </assert_contents>
707 </output>
708 </test>
709 <test expect_num_outputs="4">
710 <conditional name="in">
711 <!-- mapping SAM file -->
712 <param name="selector" value="mapping"/>
713 <param name="input" value="demo.sam"/>
714 </conditional>
715 <conditional name="wf">
716 <!-- bypass_nucleotide_index -->
717 <param name="selector" value="bypass_nucleotide_index"/>
718 <section name="nucleotide_search">
719 <conditional name="nucleotide_db">
720 <param name="selector" value="cached"/>
721 <param name="nucleotide_database" value="chocophlan-DEMO-20210421"/>
722 </conditional>
723 <param name="nucleotide_identity_threshold" value="0"/>
724 <param name="nucleotide_subject_coverage_threshold" value="50"/>
725 <param name="nucleotide_query_coverage_threshold" value="90"/>
726 </section>
727 <section name="translated_search">
728 <conditional name="protein_db">
729 <param name="selector" value="cached"/>
730 <param name="protein_database" value="uniref-DEMO_diamond-20210421"/>
731 </conditional>
732 <param name="evalue" value="1"/>
733 <param name="translated_subject_coverage_threshold" value="50"/>
734 <param name="translated_query_coverage_threshold" value="90"/>
735 </section>
736 </conditional>
737 <section name="g_p_quant">
738 <param name="gap_fill" value="true"/>
739 <param name="minpath" value="true"/>
740 <param name="pathways" value="metacyc"/>
741 <param name="xipe" value="false"/>
742 <param name="annotation_gene_index" value="3"/>
743 </section>
744 <section name="out">
745 <param name="output_basename" value="humann"/>
746 <param name="log_level" value="DEBUG"/>
747 <param name="output_format" value="tsv"/>
748 <param name="output_max_decimals" value="10"/>
749 <param name="remove_column_description_output" value="false"/>
750 <param name="remove_statified_output" value="false"/>
751 <param name="intermediate_temp" value=""/>
752 </section>
753 <output name="gene_families_tsv" ftype="tabular">
754 <assert_contents>
755 <has_text text="UniRef90_R6HHA8|g__Bacteroides.s__Bacteroides_dorei"/>
756 <has_text text="UniRef90_unknown|g__Bacteroides.s__Bacteroides_vulgatus"/>
757 <has_n_columns n="2"/>
758 </assert_contents>
759 </output>
760 <output name="pathcoverage_tsv" ftype="tabular">
761 <assert_contents>
762 <has_text text="UNMAPPED"/>
763 <has_text text="UNINTEGRATED"/>
764 <has_n_columns n="2"/>
765 </assert_contents>
766 </output>
767 <output name="pathabundance_tsv" ftype="tabular">
768 <assert_contents>
769 <has_text text="UNMAPPED"/>
770 <has_text text="UNINTEGRATED"/>
771 <has_n_columns n="2"/>
772 </assert_contents>
773 </output>
774 <output name="log" ftype="txt">
775 <assert_contents>
776 <has_text text="Process the sam mapping results"/>
777 <has_text text="Computing gene families"/>
778 <has_text text="Computing pathways abundance and coverage"/>
779 </assert_contents>
780 </output>
781 </test>
782 <test expect_num_outputs="4">
783 <conditional name="in">
784 <!-- raw fasta file -->
785 <param name="selector" value="raw"/>
786 <param name="input" value="demo.fastq.gz"/>
787 </conditional>
788 <conditional name="wf">
789 <!-- bypass_nucleotide_search -->
790 <param name="selector" value="bypass_nucleotide_search"/>
791 <section name="translated_search">
792 <conditional name="protein_db">
793 <param name="selector" value="cached"/>
794 <param name="protein_database" value="uniref-DEMO_diamond-20210421"/>
795 </conditional>
796 <param name="evalue" value="1"/>
797 <param name="translated_subject_coverage_threshold" value="50"/>
798 <param name="translated_query_coverage_threshold" value="90"/>
799 </section>
800 </conditional>
801 <section name="g_p_quant">
802 <param name="gap_fill" value="true"/>
803 <param name="minpath" value="true"/>
804 <param name="pathways" value="metacyc"/>
805 <param name="xipe" value="false"/>
806 <param name="annotation_gene_index" value="3"/>
807 </section>
808 <section name="out">
809 <param name="output_basename" value="humann"/>
810 <param name="log_level" value="DEBUG"/>
811 <param name="output_format" value="tsv"/>
812 <param name="output_max_decimals" value="10"/>
813 <param name="remove_column_description_output" value="false"/>
814 <param name="remove_statified_output" value="false"/>
815 <param name="intermediate_temp" value=""/>
816 </section>
817 <output name="gene_families_tsv" ftype="tabular">
818 <assert_contents>
819 <has_text text="humann_Abundance-RPKs"/>
820 <has_text text="UniRef90_Q9ZUH4|unclassified"/>
821 <has_n_columns n="2"/>
822 </assert_contents>
823 </output>
824 <output name="pathcoverage_tsv" ftype="tabular">
825 <assert_contents>
826 <has_text text="humann_Coverage"/>
827 <has_text text="PWY-5423: oleoresin monoterpene volatiles biosynthesis|unclassified"/>
828 <has_n_columns n="2"/>
829 </assert_contents>
830 </output>
831 <output name="pathabundance_tsv" ftype="tabular">
832 <assert_contents>
833 <has_text text="humann_Abundance"/>
834 <has_text text="PWY-5423: oleoresin monoterpene volatiles biosynthesis|unclassified"/>
835 <has_n_columns n="2"/>
836 </assert_contents>
837 </output>
838 <output name="log" ftype="txt">
839 <assert_contents>
840 <has_text text="Total bugs after translated alignment: 1"/>
841 <has_text text="unclassified: "/>
842 <has_text text="Unaligned reads after translated alignment: "/>
843 <has_text text="Total gene families"/>
844 </assert_contents>
845 </output>
846 </test>
847 <test expect_num_outputs="4">
848 <conditional name="in">
849 <!-- raw fasta file -->
850 <param name="selector" value="raw"/>
851 <param name="input" value="demo.fastq.gz"/>
852 </conditional>
853 <conditional name="wf">
854 <!-- bypass_translated_search -->
855 <param name="selector" value="bypass_translated_search"/>
856 <section name="prescreen">
857 <conditional name="metaphlan_db">
858 <param name="selector" value="cached"/>
859 <param name="cached_db" value="metaphlan-demo-db-20210421"/>
860 </conditional>
861 <param name="prescreen_threshold" value="0.01"/>
862 </section>
863 <section name="nucleotide_search">
864 <conditional name="nucleotide_db">
865 <param name="selector" value="cached"/>
866 <param name="nucleotide_database" value="chocophlan-DEMO-20210421"/>
867 </conditional>
868 <param name="nucleotide_identity_threshold" value="0"/>
869 <param name="nucleotide_subject_coverage_threshold" value="50"/>
870 <param name="nucleotide_query_coverage_threshold" value="90"/>
871 </section>
872 </conditional>
873 <section name="g_p_quant">
874 <param name="gap_fill" value="true"/>
875 <param name="minpath" value="true"/>
876 <param name="pathways" value="metacyc"/>
877 <param name="xipe" value="false"/>
878 <param name="annotation_gene_index" value="3"/>
879 </section>
880 <section name="out">
881 <param name="output_basename" value="newname"/>
882 <param name="log_level" value="DEBUG"/>
883 <param name="output_format" value="tsv"/>
884 <param name="output_max_decimals" value="10"/>
885 <param name="remove_column_description_output" value="false"/>
886 <param name="remove_statified_output" value="false"/>
887 <param name="intermediate_temp" value=""/>
888 </section>
889 <output name="gene_families_tsv" ftype="tabular">
890 <assert_contents>
891 <has_text text="newname_Abundance-RPKs"/>
892 <has_text text="UniRef90_G1UL42|g__Bacteroides.s__Bacteroides_dorei"/>
893 <has_n_columns n="2"/>
894 </assert_contents>
895 </output>
896 <output name="pathcoverage_tsv" ftype="tabular">
897 <assert_contents>
898 <has_text text="newname_Coverage"/>
899 <has_text text="UNMAPPED"/>
900 <has_text text="UNINTEGRATED"/>
901 <has_n_columns n="2"/>
902 </assert_contents>
903 </output>
904 <output name="pathabundance_tsv" ftype="tabular">
905 <assert_contents>
906 <has_text text="newname_Abundance"/>
907 <has_text text="UNMAPPED"/>
908 <has_text text="UNINTEGRATED"/>
909 <has_n_columns n="2"/>
910 </assert_contents>
911 </output>
912 <output name="log" ftype="txt">
913 <assert_contents>
914 <has_text text="Total bugs from nucleotide alignment: 2"/>
915 <has_text text="g__Bacteroides.s__Bacteroides_vulgatus: 1195 hits"/>
916 <has_text text="g__Bacteroides.s__Bacteroides_dorei: 1260 hits"/>
917 <has_text text="Total gene families from nucleotide alignment: 545"/>
918 <has_text text="Bypass translated search"/>
919 </assert_contents>
920 </output>
921 </test>
922 </tests>
923 <help><![CDATA[
924 @HELP_HEADER@
925
926 This tool corresponds to the main tool in HUMAnN pipeline:
927
928
929 1. Taxomonic prescreen
930
931 Reads are mapped (with MetaPhlAn) to clade-specific marker genes to rapidly identify community species
932
933 2. Pangenome search (nucleotide search)
934
935 Reads are mapped (with Bowtie2) to pangenomes of identified species
936
937 3. Translated search
938
939 Unclassified reads are aligned to a comprehensive and non-redundant protein database
940
941 4. Gene family and pathway quantification
942
943 - Gene abundance estimation
944
945 Mapping results are processed to estimate per-species and community total gene family abundance, weighting by
946
947 - alignment Quality
948 - gene length
949 - gene coverage
950
951 - Per-species and community-level metabolic network reconstruction
952
953 Genes are mapped to metabolic reactions to identify a parsiomonious set of pathways that explains each species' observed reactions
954
955 Pathway abundance and coverage are quantified by:
956
957 1. optimizing over alternative subpathways
958 2. imputing abundance for conspicuously depleted reactions
959
960
961 Inputs
962 ======
963
964 HUMAnN can start from a few different types of input data each in a few different types of formats:
965
966 - Quality-controlled shotgun sequencing reads
967
968 This is the most common starting point : A metagenome (DNA reads) or metatranscriptome (RNA reads)
969
970 - Pre-computed mappings of reads to database sequences
971
972 - Pre-computed (typically gene) abundance tables
973
974
975 HUMAnN uses 3 reference databases
976 Locally cached databases have to be downloaded database before using them (using the dedicated tool). Custom databases can also be used after upload.
977
978 Outputs
979 =======
980
981 HUMAnN creates three output files:
982
983 - Gene families and their abundance
984 - Pathways and their abundance
985 - Pathways and their coverage
986
987 Ten intermediate temp output files can also be retrieved.
988
989 ]]></help>
990 <expand macro="citations"/>
991 </tool>