comparison picard_MergeBamAlignment.xml @ 33:3f254c5ced1d draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/picard commit 9ecbbb878d68a980ba35a90865e524c723ca3ed8
author iuc
date Sun, 03 Mar 2024 16:06:11 +0000
parents f9242e01365a
children
comparison
equal deleted inserted replaced
32:f9242e01365a 33:3f254c5ced1d
1 <tool name="MergeBamAlignment" id="picard_MergeBamAlignment" version="@TOOL_VERSION@.@WRAPPER_VERSION@"> 1 <tool name="MergeBamAlignment" id="picard_MergeBamAlignment" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
2 <description>merge alignment data with additional info stored in an unmapped BAM dataset</description> 2 <description>merge alignment data with additional info stored in an unmapped BAM dataset</description>
3 <macros> 3 <macros>
4 <import>picard_macros.xml</import> 4 <import>picard_macros.xml</import>
5 <token name="@WRAPPER_VERSION@">2</token> 5 <token name="@WRAPPER_VERSION@">0</token>
6 </macros> 6 </macros>
7 <expand macro="requirements" /> 7 <expand macro="requirements"/>
8 <command detect_errors="exit_code"><![CDATA[ 8 <command detect_errors="exit_code"><![CDATA[
9 @java_options@ 9 @java_options@
10 #set $picard_dict = "localref.dict" 10 #set $picard_dict = "localref.dict"
11 #set $ref_fasta = "localref.fa" ## This is done because picards "likes" .fa extension 11 #set $ref_fasta = "localref.fa" ## This is done because picards "likes" .fa extension
12 12
13 ln -s "${reference_source.ref_file}" "${ref_fasta}" && 13 ln -sf '${reference_source.ref_file}' '${ref_fasta}' &&
14 14
15 #if str( $reference_source.reference_source_selector ) == "history": 15 #if str( $reference_source.reference_source_selector ) == "history":
16 16
17 picard CreateSequenceDictionary REFERENCE="${ref_fasta}" OUTPUT="${picard_dict}" 17 picard CreateSequenceDictionary
18 QUIET=true 18 -REFERENCE '${ref_fasta}'
19 VERBOSITY=ERROR 19 -OUTPUT '${picard_dict}'
20 -QUIET true
21 -VERBOSITY ERROR
20 22
21 && 23 &&
22 24
23 #else: 25 #else:
24 26
25 #set $ref_fasta = str( $reference_source.ref_file.fields.path ) 27 #set $ref_fasta = str( $reference_source.ref_file.fields.path )
26 28
27 #end if 29 #end if
28 30
29 picard 31 picard MergeBamAlignment
30 MergeBamAlignment 32 --UNMAPPED_BAM '${unmapped_bam}'
31 UNMAPPED_BAM="${unmapped_bam}" 33
32 34 --PAIRED_RUN true ##This argument is ignored and will be removed. Required. Possible values: {true, false}
33 PAIRED_RUN=true ##This argument is ignored and will be removed. Required. Possible values: {true, false}
34 35
35 #if str( $aligned_or_read1_and_read2.aligned_or_read1_and_read2_selector ) == "paired_one_file": 36 #if str( $aligned_or_read1_and_read2.aligned_or_read1_and_read2_selector ) == "paired_one_file":
36 #for $dataset in $aligned_or_read1_and_read2.aligned_bams: 37 #for $dataset in $aligned_or_read1_and_read2.aligned_bams:
37 ALIGNED_BAM="${dataset.aligned_bam}" 38 --ALIGNED_BAM '${dataset.aligned_bam}'
38 #end for 39 #end for
39 #elif str( $aligned_or_read1_and_read2.aligned_or_read1_and_read2_selector ) == "paired_two_files": 40 #elif str( $aligned_or_read1_and_read2.aligned_or_read1_and_read2_selector ) == "paired_two_files":
40 #for $dataset in $aligned_or_read1_and_read2.read1_aligned_bams: 41 #for $dataset in $aligned_or_read1_and_read2.read1_aligned_bams:
41 READ1_ALIGNED_BAM="${dataset.read1_aligned_bam}" 42 --READ1_ALIGNED_BAM '${dataset.read1_aligned_bam}'
42 #end for 43 #end for
43 #for $dataset in $aligned_or_read1_and_read2.read2_aligned_bams: 44 #for $dataset in $aligned_or_read1_and_read2.read2_aligned_bams:
44 READ2_ALIGNED_BAM="${dataset.read2_aligned_bam}" 45 --READ2_ALIGNED_BAM '${dataset.read2_aligned_bam}'
45 #end for 46 #end for
46 #else 47 #else
47 #for $dataset in $aligned_or_read1_and_read2.read1_aligned_bams: 48 #for $dataset in $aligned_or_read1_and_read2.read1_aligned_bams:
48 READ1_ALIGNED_BAM="${dataset.read1_aligned_bam}" 49 --READ1_ALIGNED_BAM '${dataset.read1_aligned_bam}'
49 #end for 50 #end for
50 #end if 51 #end if
51 52
52 OUTPUT="${outFile}" 53 --OUTPUT '${outFile}'
53 REFERENCE_SEQUENCE="${ref_fasta}" 54 --REFERENCE_SEQUENCE '${ref_fasta}'
54 55
55 CLIP_ADAPTERS="${clip_adapters}" 56 --CLIP_ADAPTERS '${clip_adapters}'
56 IS_BISULFITE_SEQUENCE="${is_bisulfite_sequence}" 57 --IS_BISULFITE_SEQUENCE '${is_bisulfite_sequence}'
57 ALIGNED_READS_ONLY="${aligned_reads_only}" 58 --ALIGNED_READS_ONLY '${aligned_reads_only}'
58 MAX_INSERTIONS_OR_DELETIONS="${max_insertions_or_deletions}" 59 --MAX_INSERTIONS_OR_DELETIONS '${max_insertions_or_deletions}'
59 60
60 #for $attribute in $attributes_to_retain: 61 #for $attribute in $attributes_to_retain:
61 ATTRIBUTES_TO_RETAIN="${$attribute.attribute}" 62 --ATTRIBUTES_TO_RETAIN '${$attribute.attribute}'
62 #end for 63 #end for
63 64
64 #for $attribute in $attributes_to_remove: 65 #for $attribute in $attributes_to_remove:
65 ATTRIBUTES_TO_REMOVE="${$attribute.attribute}" 66 --ATTRIBUTES_TO_REMOVE '${$attribute.attribute}'
66 #end for 67 #end for
67 68
68 READ1_TRIM="${read1_trim}" 69 --READ1_TRIM '${read1_trim}'
69 READ2_TRIM="${read2_trim}" 70 --READ2_TRIM '${read2_trim}'
70 71
71 #if str( $orientations ) != "None": 72 #if str( $orientations ) != "None":
72 #for $orientation in str( $orientations ).split(','): ## See trello card https://trello.com/c/9nW02Zhd 73 #for $orientation in str( $orientations ).split(','): ## See trello card https://trello.com/c/9nW02Zhd
73 EXPECTED_ORIENTATIONS="${orientation}" 74 --EXPECTED_ORIENTATIONS '${orientation}'
74 #end for 75 #end for
75 #end if 76 #end if
76 77
77 ALIGNER_PROPER_PAIR_FLAGS="${aligner_proper_pair_flags}" 78 --ALIGNER_PROPER_PAIR_FLAGS '${aligner_proper_pair_flags}'
78 PRIMARY_ALIGNMENT_STRATEGY="${primary_alignment_strategy}" 79 --PRIMARY_ALIGNMENT_STRATEGY '${primary_alignment_strategy}'
79 CLIP_OVERLAPPING_READS="${clip_overlapping_reads}" 80 --CLIP_OVERLAPPING_READS '${clip_overlapping_reads}'
80 INCLUDE_SECONDARY_ALIGNMENTS="${include_secondary_alignments}" 81 --INCLUDE_SECONDARY_ALIGNMENTS '${include_secondary_alignments}'
81 ADD_MATE_CIGAR="${add_mate_cigar}" 82 --ADD_MATE_CIGAR '${add_mate_cigar}'
82 83
83 VALIDATION_STRINGENCY="${validation_stringency}" 84 --VALIDATION_STRINGENCY '${validation_stringency}'
84 85
85 SORT_ORDER=coordinate 86 --SORT_ORDER coordinate
86 QUIET=true 87 --QUIET true
87 VERBOSITY=ERROR 88 --VERBOSITY ERROR
88 89
89 ]]></command> 90 ]]></command>
90 91 <inputs>
91 <inputs> 92 <conditional name="reference_source">
92 93 <param name="reference_source_selector" type="select" label="Load reference genome from">
93 <conditional name="reference_source"> 94 <option value="cached">Local cache</option>
94 <param name="reference_source_selector" type="select" label="Load reference genome from"> 95 <option value="history">History</option>
95 <option value="cached">Local cache</option> 96 </param>
96 <option value="history">History</option> 97 <when value="cached">
97 </param> 98 <param name="ref_file" type="select" label="Use dictionary from the list" help="Select genome from the list">
98 <when value="cached"> 99 <options from_data_table="picard_indexes">
99 <param name="ref_file" type="select" label="Use dictionary from the list" help="Select genome from the list"> 100 <filter type="sort_by" column="2"/>
100 <options from_data_table="picard_indexes"> 101 <validator type="no_options" message="No indexes are available"/>
101 <filter type="sort_by" column="2" /> 102 </options>
102 <validator type="no_options" message="No indexes are available" /> 103 <validator type="no_options" message="A built-in dictionary is not available for the build associated with the selected input file"/>
103 </options> 104 </param>
104 <validator type="no_options" message="A built-in dictionary is not available for the build associated with the selected input file"/> 105 </when>
106 <when value="history">
107 <param name="ref_file" type="data" format="fasta" label="Use the following dataset to create dictionary" help="You can upload a FASTA sequence to the history from which Picard will automatically generate dictionary using CreateSequenceDictionary command"/>
108 </when>
109 </conditional>
110 <param format="sam,bam" name="unmapped_bam" type="data" label="Selected unaligned SAM or BAM with original reads" help="UNMAPPED_BAM; This dataset must be sorted in queryname order (use picard_SortSam to do this)"/>
111 <conditional name="aligned_or_read1_and_read2">
112 <param name="aligned_or_read1_and_read2_selector" type="select" label="What type of aligned data do you have?">
113 <option value="paired_one_file">Paired data in a single BAM file (ALIGNED_BAM)</option>
114 <option value="paired_two_files">Paired data in separate files (READ1_ALIGNED_BAM and READ2_ALIGNED_BAM)</option>
115 <option value="single_file">Singe end data (READ1_ALIGNED_BAM)</option>
116 </param>
117 <when value="paired_one_file">
118 <repeat name="aligned_bams" title="Aligned SAM or BAM dataset" min="1" help="You can provide multiple datasets">
119 <param name="aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data" help="ALIGNED_BAM"/>
120 </repeat>
121 </when>
122 <when value="paired_two_files">
123 <repeat name="read1_aligned_bams" title="Aligned SAM or BAM dataset for Read 1" min="1" help="You can provide multiple datasets">
124 <param name="read1_aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data for Read1" help="READ1_ALIGNED_BAM"/>
125 </repeat>
126 <repeat name="read2_aligned_bams" title="Aligned SAM or BAM dataset for Read 2" min="1" help="You can provide multiple datasets">
127 <param name="read2_aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data for Read2" help="READ2_ALIGNED_BAM"/>
128 </repeat>
129 </when>
130 <when value="single_file">
131 <repeat name="read1_aligned_bams" title="Aligned SAM or BAM dataset for Single Reads" min="1" help="You can provide multiple datasets">
132 <param name="read1_aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data" help="READ1_ALIGNED_BAM"/>
133 </repeat>
134 </when>
135 </conditional>
136 <param name="clip_adapters" type="boolean" checked="true" label="Whether to clip adapters where identified" help="CLIP_ADAPTERS; default=True"/>
137 <param name="is_bisulfite_sequence" type="boolean" label="Whether the data is from bisulfite sequencing (used when caculating the NM tag)" help="IS_BISULFITE_SEQUENCE; default=False"/>
138 <param name="aligned_reads_only" type="boolean" label="Whether to output only aligned reads" help="ALIGNED_READS_ONLY; default=False"/>
139 <param name="max_insertions_or_deletions" type="integer" value="1" label="The maximum number of insertions or deletions permitted for an alignment to be included" help="MAX_INSERTIONS_OR_DELETIONS; Alignments with more than this many insertions or deletions will be ignored. Set to -1 to allow any number of insertions or deletions. default=1"/>
140 <repeat name="attributes_to_retain" title="Retain the following alignment attribute" min="0" help="You can provide multiple attributes">
141 <param name="attribute" type="text" label="Reserved alignment attributes (tags starting with X, Y, or Z) that should be brought over from the alignment data when merging" help="ATTRIBUTES_TO_RETAIN; example: XA"/>
142 </repeat>
143 <repeat name="attributes_to_remove" title="Remove the following alignment attribute" min="0" help="You can provide multiple attributes">
144 <param name="attribute" type="text" label="Attributes from the alignment record that should be removed when merging." help="ATTRIBUTES_TO_REMOVE; This overrides ATTRIBUTES_TO_RETAIN if they share common tags"/>
145 </repeat>
146 <param name="read1_trim" type="integer" value="0" label="The number of bases trimmed from the beginning of read 1 prior to alignment" help="READ1_TRIM; default=0"/>
147 <param name="read2_trim" type="integer" value="0" label="The number of bases trimmed from the beginning of read 2 prior to alignment" help="READ2_TRIM; default=0"/>
148 <param name="orientations" type="select" multiple="True" display="checkboxes" label="The expected orientation of proper read pairs" help="EXPECTED_ORIENTATIONS; multiple orinetations can be selected">
149 <option value="FR">Forward/Reverse (FR)</option>
150 <option value="RF">Reverse/Forward (RF)</option>
151 <option value="TANDEM">Tandem</option>
105 </param> 152 </param>
106 </when> 153 <param name="aligner_proper_pair_flags" type="boolean" label="Use the aligner's idea of what a proper pair is rather than computing in this program" help="ALIGNER_PROPER_PAIR_FLAGS; default=False"/>
107 <when value="history"> 154 <param name="primary_alignment_strategy" type="select" label="Strategy for selecting primary alignment when the aligner has provided more than one alignment for a pair or fragments" help="PRIMARY_ALIGNMENT_STRATEGY; see help below for more info; default=BestMapq">
108 <param name="ref_file" type="data" format="fasta" label="Use the following dataset to create dictionary" help="You can upload a FASTA sequence to the history from which Picard will automatically generate dictionary using CreateSequenceDictionary command" /> 155 <option value="BestMapq" selected="True">BestMapq</option>
109 </when> 156 <option value="EarliestFragment">EarliestFragment</option>
110 </conditional> 157 <option value="BestEndMapq">BestEndMapq</option>
111 158 <option value="MostDistant">MostDistant</option>
112 <param format="sam,bam" name="unmapped_bam" type="data" label="Selected unaligned SAM or BAM with original reads" help="UNMAPPED_BAM; This dataset must be sorted in queryname order (use picard_SortSam to do this)" /> 159 </param>
113 <conditional name="aligned_or_read1_and_read2"> 160 <param name="clip_overlapping_reads" type="boolean" checked="True" label="For paired reads, soft clip the 3' end of each read if necessary so that it does not extend past the 5' end of its mate" help="CLIP_OVERLAPPING_READS; default=True"/>
114 <param name="aligned_or_read1_and_read2_selector" type="select" label="What type of aligned data do you have?"> 161 <param name="include_secondary_alignments" type="boolean" checked="True" label="If false, do not write secondary alignments to output" help="INCLUDE_SECONDARY_ALIGNMENTS; default=True"/>
115 <option value="paired_one_file">Paired data in a single BAM file (ALIGNED_BAM)</option> 162 <param name="add_mate_cigar" type="boolean" checked="True" label="Adds the mate CIGAR tag (MC) if true, does not if false" help="ADD_MATE_CIGAR; default=True"/>
116 <option value="paired_two_files">Paired data in separate files (READ1_ALIGNED_BAM and READ2_ALIGNED_BAM)</option> 163 <expand macro="VS"/>
117 <option value="single_file">Singe end data (READ1_ALIGNED_BAM)</option> 164 </inputs>
118 </param> 165 <outputs>
119 <when value="paired_one_file"> 166 <data name="outFile" format="bam" label="${tool.name} on ${on_string}: BAM"/>
120 <repeat name="aligned_bams" title="Aligned SAM or BAM dataset" min="1" help="You can provide multiple datasets"> 167 </outputs>
121 <param name="aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data" help="ALIGNED_BAM"/> 168 <tests>
122 </repeat> 169 <test>
123 </when> 170 <param name="reference_source_selector" value="history"/>
124 <when value="paired_two_files"> 171 <param name="ref_file" value="picard_MergeBamAlignment_ref.fa" ftype="fasta"/>
125 <repeat name="read1_aligned_bams" title="Aligned SAM or BAM dataset for Read 1" min="1" help="You can provide multiple datasets"> 172 <param name="unmapped_bam" value="picard_MergeBamAlignment_unaligned.bam" ftype="bam"/>
126 <param name="read1_aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data for Read1" help="READ1_ALIGNED_BAM"/> 173 <param name="aligned_or_read1_and_read2_selector" value="paired_one_file"/>
127 </repeat> 174 <param name="aligned_bam" value="picard_MergeBamAlignment_aligned.bam" ftype="bam"/>
128 <repeat name="read2_aligned_bams" title="Aligned SAM or BAM dataset for Read 2" min="1" help="You can provide multiple datasets"> 175 <param name="clip_adapters" value="True"/>
129 <param name="read2_aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data for Read2" help="READ2_ALIGNED_BAM"/> 176 <param name="is_bisulfite_sequence" value="False"/>
130 </repeat> 177 <param name="aligned_reads_only" value="False"/>
131 </when> 178 <param name="max_insertions_or_deletions" value="1"/>
132 <when value="single_file"> 179 <param name="read1_trim" value="0"/>
133 <repeat name="read1_aligned_bams" title="Aligned SAM or BAM dataset for Single Reads" min="1" help="You can provide multiple datasets"> 180 <param name="read2_trim" value="0"/>
134 <param name="read1_aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data" help="READ1_ALIGNED_BAM"/> 181 <param name="orientations" value="FR"/>
135 </repeat> 182 <param name="aligner_proper_pair_flags" value="False"/>
136 </when> 183 <param name="primary_alignment_strategy" value="BestMapq"/>
137 </conditional> 184 <param name="clip_overlapping_reads" value="True"/>
138 185 <param name="include_secondary_alignments" value="True"/>
139 <param name="clip_adapters" type="boolean" checked="true" label="Whether to clip adapters where identified" help="CLIP_ADAPTERS; default=True"/> 186 <param name="add_mate_cigar" value="True"/>
140 <param name="is_bisulfite_sequence" type="boolean" label="Whether the data is from bisulfite sequencing (used when caculating the NM tag)" help="IS_BISULFITE_SEQUENCE; default=False"/> 187 <output name="outFile" file="picard_MergeBamAlignment_test1.bam" ftype="bam" lines_diff="4"/>
141 <param name="aligned_reads_only" type="boolean" label="Whether to output only aligned reads" help="ALIGNED_READS_ONLY; default=False"/> 188 </test>
142 <param name="max_insertions_or_deletions" type="integer" value="1" label="The maximum number of insertions or deletions permitted for an alignment to be included" help="MAX_INSERTIONS_OR_DELETIONS; Alignments with more than this many insertions or deletions will be ignored. Set to -1 to allow any number of insertions or deletions. default=1"/> 189 </tests>
143 190 <help>
144 <repeat name="attributes_to_retain" title="Retain the following alignment attribute" min="0" help="You can provide multiple attributes">
145 <param name="attribute" type="text" label="Reserved alignment attributes (tags starting with X, Y, or Z) that should be brought over from the alignment data when merging" help="ATTRIBUTES_TO_RETAIN; example: XA"/>
146 </repeat>
147
148 <repeat name="attributes_to_remove" title="Remove the following alignment attribute" min="0" help="You can provide multiple attributes">
149 <param name="attribute" type="text" label="Attributes from the alignment record that should be removed when merging." help="ATTRIBUTES_TO_REMOVE; This overrides ATTRIBUTES_TO_RETAIN if they share common tags"/>
150 </repeat>
151
152 <param name="read1_trim" type="integer" value="0" label="The number of bases trimmed from the beginning of read 1 prior to alignment" help="READ1_TRIM; default=0"/>
153 <param name="read2_trim" type="integer" value="0" label="The number of bases trimmed from the beginning of read 2 prior to alignment" help="READ2_TRIM; default=0"/>
154
155 <param name="orientations" type="select" multiple="True" display="checkboxes" label="The expected orientation of proper read pairs" help="EXPECTED_ORIENTATIONS; multiple orinetations can be selected">
156 <option value="FR">Forward/Reverse (FR)</option>
157 <option value="RF">Reverse/Forward (RF)</option>
158 <option value="TANDEM">Tandem</option>
159 </param>
160
161
162 <param name="aligner_proper_pair_flags" type="boolean" label="Use the aligner's idea of what a proper pair is rather than computing in this program" help="ALIGNER_PROPER_PAIR_FLAGS; default=False"/>
163
164 <param name="primary_alignment_strategy" type="select" label="Strategy for selecting primary alignment when the aligner has provided more than one alignment for a pair or fragments" help="PRIMARY_ALIGNMENT_STRATEGY; see help below for more info; default=BestMapq">
165 <option value="BestMapq" selected="True">BestMapq</option>
166 <option value="EarliestFragment">EarliestFragment</option>
167 <option value="BestEndMapq">BestEndMapq</option>
168 <option value="MostDistant">MostDistant</option>
169 </param>
170
171 <param name="clip_overlapping_reads" type="boolean" checked="True" label="For paired reads, soft clip the 3' end of each read if necessary so that it does not extend past the 5' end of its mate" help="CLIP_OVERLAPPING_READS; default=True"/>
172 <param name="include_secondary_alignments" type="boolean" checked="True" label="If false, do not write secondary alignments to output" help="INCLUDE_SECONDARY_ALIGNMENTS; default=True"/>
173 <param name="add_mate_cigar" type="boolean" checked="True" label="Adds the mate CIGAR tag (MC) if true, does not if false" help="ADD_MATE_CIGAR; default=True"/>
174 <expand macro="VS" />
175 </inputs>
176 <outputs>
177 <data name="outFile" format="bam" label="${tool.name} on ${on_string}: BAM"/>
178 </outputs>
179 <tests>
180 <test>
181 <param name="reference_source_selector" value="history" />
182 <param name="ref_file" value="picard_MergeBamAlignment_ref.fa" ftype="fasta" />
183 <param name="unmapped_bam" value="picard_MergeBamAlignment_unaligned.bam" ftype="bam"/>
184 <param name="aligned_or_read1_and_read2_selector" value="paired_one_file"/>
185 <param name="aligned_bam" value="picard_MergeBamAlignment_aligned.bam" ftype="bam"/>
186 <param name="clip_adapters" value="True"/>
187 <param name="is_bisulfite_sequence" value="False"/>
188 <param name="aligned_reads_only" value="False"/>
189 <param name="max_insertions_or_deletions" value="1"/>
190 <param name="read1_trim" value="0"/>
191 <param name="read2_trim" value="0"/>
192 <param name="orientations" value="FR"/>
193 <param name="aligner_proper_pair_flags" value="False"/>
194 <param name="primary_alignment_strategy" value="BestMapq"/>
195 <param name="clip_overlapping_reads" value="True"/>
196 <param name="include_secondary_alignments" value="True"/>
197 <param name="add_mate_cigar" value="True"/>
198 <output name="outFile" file="picard_MergeBamAlignment_test1.bam" ftype="bam" lines_diff="4"/>
199 </test>
200 </tests>
201
202
203 <help>
204 191
205 .. class:: infomark 192 .. class:: infomark
206 193
207 **Purpose** 194 **Purpose**
208 195
307 294
308 295
309 296
310 @more_info@ 297 @more_info@
311 </help> 298 </help>
312 <expand macro="citations" /> 299 <expand macro="citations"/>
313 </tool> 300 </tool>