0
|
1 <macros>
|
13
|
2 <xml name="bamCorrelate_mode_actions">
|
18
|
3
|
|
4 <expand macro="region_limit_operation" />
|
|
5
|
0
|
6 <conditional name="advancedOpt">
|
|
7 <param name="showAdvancedOpt" type="select" label="Show advanced options" >
|
|
8 <option value="no" selected="true">no</option>
|
|
9 <option value="yes">yes</option>
|
|
10 </param>
|
|
11 <when value="no" />
|
|
12 <when value="yes">
|
|
13 <param name="doNotExtendPairedEnds" type="boolean" truevalue="--doNotExtendPairedEnds" falsevalue=""
|
|
14 label="Do not extend paired ends"
|
|
15 help="If set, reads are not extended to match the fragment length reported in the BAM file, instead they will be extended to match the fragment length. Default is to extend the reads if paired end information is available."/>
|
|
16
|
|
17 <param name="ignoreDuplicates" type="boolean" truevalue="--ignoreDuplicates" falsevalue=""
|
|
18 label="Ignore duplicates"
|
|
19 help="If set, reads that have the same orientation and start position will be considered only once. If reads are paired, the mate position also has to coincide to ignore a read." />
|
|
20
|
|
21 <param name="minMappingQuality" type="integer" optional="true" value="1" min="1"
|
|
22 label="Minimum mapping quality"
|
|
23 help= "If set, only reads that have a mapping quality score higher than the given value are considered. *Note* Bowtie's Mapping quality is related to uniqueness: the higher the score, the more unique is a read. A mapping quality defined by Bowtie of 10 or less indicates that there is at least a 1 in 10 chance that the read truly originated elsewhere."/>
|
|
24
|
|
25 <param name="includeZeros" type="boolean" truevalue="--includeZeros" falsevalue=""
|
|
26 label ="Include zeros"
|
|
27 help ="If set, then regions with zero counts for *all* BAM files given are included. The default behavior is to ignore those cases." />
|
|
28
|
7
|
29 <param name="zMin" type="integer" value="" optional="true" label="Minimum value for the heatmap intensities"
|
0
|
30 help="If not specified the value is set automatically."/>
|
|
31
|
7
|
32 <param name="zMax" type="integer" value="" optional="true" label="Maximum value for the heatmap intensities"
|
0
|
33 help="If not specified the value is set automatically."/>
|
|
34
|
|
35 <expand macro="colormap" />
|
|
36 </when>
|
|
37 </conditional>
|
13
|
38 </xml>
|
18
|
39
|
|
40 <xml name="region_limit_operation">
|
|
41 <param name="region" type="text" value=""
|
|
42 label="Region of the genome to limit the operation to"
|
|
43 help="This is useful when testing parameters to reduce the computing time. The format is chr:start:end, for example "chr10" or "chr10:456700:891000"" />
|
|
44 </xml>
|
|
45
|
0
|
46 <token name="@THREADS@">--numberOfProcessors "\${GALAXY_SLOTS:-4}"</token>
|
13
|
47 <xml name="requirements">
|
0
|
48 <requirements>
|
18
|
49 <requirement type="binary">@BINARY@</requirement>
|
2
|
50 <requirement type="package" >samtools</requirement>
|
|
51 <requirement type="package" >deepTools</requirement>
|
|
52 <requirement type="package" >ucsc_tools</requirement>
|
23
|
53 <requirement type="package" version="1.5.4_3268f7e1458f3a520ab6fea3039971ee9d7a6d5b">deepTools</requirement>
|
0
|
54 <requirement type="package" version="0.1">ucsc_tools</requirement>
|
|
55 <requirement type="package" version="1.7.1">numpy</requirement>
|
5
|
56 <requirement type="package" version="0.7.7">pysam</requirement>
|
10
|
57 <requirement type="package" version="0.12.0">scipy</requirement>
|
9
|
58 <requirement type="package" version="1.2.1">matplotlib</requirement>
|
0
|
59 <requirement type="package" version="0.1.19">samtools</requirement>
|
9
|
60 <requirement type="package" version="12-2013">bx-python</requirement>
|
0
|
61 <yield />
|
|
62 </requirements>
|
18
|
63 <version_command>@BINARY@ --version</version_command>
|
13
|
64 </xml>
|
18
|
65
|
|
66 <xml name="kmeans_clustering">
|
|
67
|
|
68 <conditional name="used_multiple_regions">
|
|
69 <param name="used_multiple_regions_options" type="select"
|
|
70 label="Did you used multiple regions in ComputeMatrix?"
|
|
71 help="Would you like to cluster the regions according to the similarity of the signal distribution? This is only possible if you used computeMatrix on only one group of regions.">
|
|
72 <option value="yes">Yes, I used multiple regions.</option>
|
|
73 <option value="no">No, I used only one region.</option>
|
|
74 </param>
|
|
75 <when value="no">
|
|
76 <conditional name="clustering">
|
|
77 <param name="clustering_options" type="select" label="Clustering algorithm">
|
|
78 <option value="none">No clustering</option>
|
|
79 <option value="kmeans">Kmeans clustering</option>
|
|
80 </param>
|
|
81 <when value="kmeans">
|
|
82 <param name="k_kmeans" type="integer" value="0" label="Number of clusters to compute"
|
|
83 help="When this option is set, then the matrix is split into clusters using the kmeans algorithm. Only works for data that is not grouped, otherwise only the first group will be clustered. If more specific clustering methods are required it is advisable to save the underlying matrix and run the clustering using other software. The plotting of the clustering may fail (Error: Segmentation fault) if a cluster has very few members compared to the total number or regions. (default: None)."/>
|
|
84 </when>
|
|
85 <when value="none" />
|
|
86 </conditional>
|
|
87 </when>
|
|
88 <when value="yes" />
|
|
89 </conditional>
|
|
90
|
|
91 </xml>
|
|
92 <token name="@kmeans_clusterin@">
|
|
93 #if $advancedOpt.used_multiple_regions.used_multiple_regions_options == 'no':
|
|
94 #if $advancedOpt.used_multiple_regions.clustering.clustering_options == 'kmeans':
|
|
95 #if int($advancedOpt.used_multiple_regions.clustering.k_kmeans) > 0:
|
|
96 --kmeans $advancedOpt.used_multiple_regions.clustering.k_kmeans
|
|
97 #end if
|
|
98 #end if
|
|
99 #end if
|
|
100 </token>
|
|
101
|
13
|
102 <xml name="stdio">
|
10
|
103 <stdio>
|
|
104 <exit_code range="1:" />
|
|
105 <exit_code range=":-1" />
|
|
106 <regex match="Error:" />
|
|
107 <regex match="Exception:" />
|
|
108 <regex match="EXception:" />
|
12
|
109 <regex match="Traceback" />
|
10
|
110 </stdio>
|
13
|
111 </xml>
|
0
|
112 <token name="@REFERENCES@">
|
|
113
|
18
|
114 .. class:: infomark
|
|
115
|
|
116 For more informations, please visit the `project site`_.
|
0
|
117
|
|
118 If you would like to give us feedback or you run into any trouble, please send an email to deeptools@googlegroups.com
|
|
119
|
|
120 This tool is developed by the `Bioinformatics and Deep-Sequencing Unit`_ at the `Max Planck Institute for Immunobiology and Epigenetics`_.
|
|
121
|
|
122
|
|
123 .. _Bioinformatics and Deep-Sequencing Unit: http://www3.ie-freiburg.mpg.de/facilities/research-facilities/bioinformatics-and-deep-sequencing-unit/
|
|
124 .. _Max Planck Institute for Immunobiology and Epigenetics: http://www3.ie-freiburg.mpg.de
|
18
|
125 .. _project site: https://github.com/fidelram/deepTools/wiki/
|
0
|
126
|
|
127 </token>
|
|
128
|
13
|
129 <xml name="multiple_input_bams">
|
9
|
130 <repeat name="input_files" title="BAM files" min="2">
|
0
|
131 <param name="bamfile" type="data" format="bam"
|
|
132 label="Bam file"
|
|
133 help="The BAM file must be sorted."/>
|
|
134 <param name="label" type="text" size="30" optional="true" value=""
|
|
135 label="Label"
|
|
136 help="Label to use in the output. If not given the dataset name will be used instead."/>
|
|
137 </repeat>
|
13
|
138 </xml>
|
0
|
139
|
|
140 <token name="@multiple_input_bams@">
|
14
|
141 #import tempfile
|
15
|
142 #set $temp_dir = os.path.abspath(tempfile.mkdtemp())
|
|
143 #set files=[]
|
|
144 #set labels=[]
|
0
|
145 #for $i in $input_files:
|
|
146 #set $temp_input_handle = tempfile.NamedTemporaryFile( dir=$temp_dir )
|
|
147 #set $temp_input_path = $temp_input_handle.name
|
|
148 #silent $temp_input_handle.close()
|
|
149 #silent os.system("ln -s %s %s.bam" % (str($i.bamfile), $temp_input_path))
|
|
150 #silent os.system("ln -s %s %s.bam.bai" % (str($i.bamfile.metadata.bam_index), $temp_input_path))
|
|
151 #silent $files.append('%s.bam' % $temp_input_path)
|
|
152
|
|
153 ##set $files += [str($i.bamfile)]
|
|
154 #if str($i.label.value) != "":
|
|
155 #set $labels += ["\"%s\"" % ($i.label.value)]
|
|
156 #else
|
|
157 #set $labels += ["\"%s\"" % ($i.bamfile.name)]
|
|
158 #end if
|
|
159 #end for
|
|
160 </token>
|
|
161
|
13
|
162 <xml name="reference_genome_source">
|
0
|
163 <conditional name="source">
|
|
164 <param name="ref_source" type="select" label="Reference genome">
|
|
165 <option value="cached">locally cached</option>
|
|
166 <option value="history">in your history</option>
|
|
167 </param>
|
|
168 <when value="cached">
|
|
169 <param name="input1_2bit" type="select" label="Using reference genome" help="If your genome of interest is not listed, contact the Galaxy team">
|
8
|
170 <options from_data_table="deepTools_seqs">
|
|
171 <filter type="sort_by" column="1" />
|
|
172 <validator type="no_options" message="No indexes are available." />
|
|
173 </options>
|
0
|
174 </param>
|
|
175 </when>
|
|
176 <when value="history">
|
|
177 <param name="input1" type="data" format="twobit" label="Select a reference dataset in 2bit format" />
|
|
178 </when>
|
|
179 </conditional>
|
13
|
180 </xml>
|
0
|
181
|
|
182 <token name="@reference_genome_source@">
|
|
183 #if $source.ref_source=="history":
|
|
184 --genome $source.input1
|
|
185 #else:
|
|
186 --genome "${source.input1_2bit.fields.path}"
|
|
187 #end if
|
|
188 </token>
|
|
189
|
13
|
190 <xml name="effectiveGenomeSize">
|
0
|
191 <conditional name="effectiveGenomeSize">
|
|
192 <param name="effectiveGenomeSize_opt" type="select" label="Effective genome size"
|
|
193 help="The effective genome size is the portion of the genome that is mappable. Large fractions of the genome are stretches of NNNN that should be discarded.
|
|
194 Also, if repetitive regions were not included in the mapping of reads, the effective genome size needs to be adjusted accordingly.
|
|
195 See Table 2 of http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0030377 or http://www.nature.com/nbt/journal/v27/n1/fig_tab/nbt.1518_T1.html for several effective genome sizes.">
|
18
|
196 <option value="93260000">ce10 (93260000)</option>
|
|
197 <option value="121400000">dm3 (121400000)</option>
|
|
198 <option value="2451960000" selected="true">hg19 (2451960000)</option>
|
|
199 <option value="2150570000">mm9 (2150570000)</option>
|
0
|
200 <option value="specific">user specified</option>
|
|
201 </param>
|
|
202 <when value="specific">
|
21
|
203 <param name="effectiveGenomeSize" type="integer" value="" label="Effective genome size" help="e.g. ce10: 93260000, dm3: 121400000, hg19: 2451960000, mm9: 2150570000"/>
|
0
|
204 </when>
|
18
|
205 <when value="2150570000" />
|
|
206 <when value="2451960000" />
|
|
207 <when value="121400000" />
|
|
208 <when value="93260000" />
|
0
|
209 </conditional>
|
13
|
210 </xml>
|
0
|
211
|
13
|
212 <xml name="image_file_format">
|
10
|
213 <param name="outFileFormat" type="select" label="Image file format">
|
|
214 <option value="png" selected="true">png</option>
|
|
215 <option value="pdf">pdf</option>
|
|
216 <option value="svg">svg</option>
|
|
217 <option value="eps">eps</option>
|
|
218 <option value="emf">emf</option>
|
|
219 </param>
|
13
|
220 </xml>
|
10
|
221
|
13
|
222 <xml name="input_save_matrix_values">
|
|
223 <param name="saveMatrix" type="boolean" label="Save the matrix of values underlying the heatmap"/>
|
|
224 </xml>
|
|
225
|
|
226 <xml name="input_graphic_output_settings">
|
0
|
227 <conditional name="output" >
|
|
228 <param name="showOutputSettings" type="select" label="Show advanced output settings" >
|
|
229 <option value="no" selected="true">no</option>
|
|
230 <option value="yes">yes</option>
|
|
231 </param>
|
|
232 <when value="no" />
|
|
233 <when value="yes">
|
11
|
234 <yield />
|
13
|
235 <param name="saveData" type="boolean" label="Save the data underlying the average profile"/>
|
0
|
236 <param name="saveSortedRegions" type="boolean" label="Save the regions after skipping zeros or min/max threshold values" help="The order of the regions in the file follows the sorting order selected. This is useful, for example, to generate other heatmaps keeping the sorting of the first heatmap."/>
|
|
237 </when>
|
|
238 </conditional>
|
13
|
239 </xml>
|
0
|
240
|
13
|
241 <xml name="input_image_file_format">
|
11
|
242 <param name="outFileFormat" type="select" label="Image file format">
|
|
243 <option value="png" selected="true">png</option>
|
|
244 <option value="pdf">pdf</option>
|
|
245 <option value="svg">svg</option>
|
|
246 <option value="eps">eps</option>
|
|
247 <option value="emf">emf</option>
|
|
248 </param>
|
13
|
249 </xml>
|
11
|
250
|
13
|
251 <xml name="output_image_file_format">
|
10
|
252 <data format="png" name="outFileName" label="${tool.name} image">
|
|
253 <change_format>
|
|
254 <when input="output.outFileFormat" value="pdf" format="pdf" />
|
|
255 <when input="output.outFileFormat" value="svg" format="svg" />
|
|
256 <when input="output.outFileFormat" value="eps" format="eps" />
|
|
257 <when input="output.outFileFormat" value="emf" format="emf" />
|
|
258 </change_format>
|
|
259 </data>
|
13
|
260 </xml>
|
11
|
261
|
13
|
262 <xml name="output_save_matrix_values">
|
|
263 <data format="tabular" name="outFileNameMatrix" label="${tool.name} on ${on_string}: Heatmap values">
|
|
264 <filter>
|
|
265 ((
|
|
266 output['showOutputSettings'] == 'yes' and
|
|
267 output['saveMatrix'] is True
|
|
268 ))
|
|
269 </filter>
|
|
270 </data>
|
|
271 </xml>
|
|
272
|
|
273 <xml name="output_graphic_outputs">
|
10
|
274 <data format="tabular" name="outFileNameData" label="${tool.name} on ${on_string}: averages per matrix column">
|
|
275 <filter>
|
|
276 ((
|
|
277 output['showOutputSettings'] == 'yes' and
|
|
278 output['saveData'] is True
|
|
279 ))
|
|
280 </filter>
|
|
281 </data>
|
|
282 <data format="bed" name="outFileSortedRegions" label="${tool.name} on ${on_string}: sorted/filtered regions">
|
|
283 <filter>
|
|
284 ((
|
|
285 output['showOutputSettings'] == 'yes' and
|
|
286 output['saveSortedRegions'] is True
|
|
287 ))
|
|
288 </filter>
|
|
289 </data>
|
13
|
290 </xml>
|
10
|
291
|
13
|
292 <xml name="colormap">
|
0
|
293 <param name="colorMap" type="select" label="Color map to use for the heatmap" help=" Available color map names can be found here: http://www.astro.lsa.umich.edu/~msshin/science/code/matplotlib_cm/">
|
|
294 <option value="RdYlBu" selected="true">RdYlBu</option>
|
|
295 <option value="Accent">Accent</option>
|
|
296 <option value="Spectral">Spectral</option>
|
|
297 <option value="Set1">Set1</option>
|
|
298 <option value="Set2">Set2</option>
|
|
299 <option value="Set3">Set3</option>
|
|
300 <option value="Dark2">Dark2</option>
|
|
301 <option value="Reds">Reds</option>
|
|
302 <option value="Oranges">Oranges</option>
|
|
303 <option value="Greens">Greens</option>
|
|
304 <option value="Blues">Blues</option>
|
|
305 <option value="Greys">Greys</option>
|
|
306 <option value="Purples">Purples</option>
|
|
307 <option value="Paired">Paired</option>
|
|
308 <option value="Pastel1">Pastel1</option>
|
|
309 <option value="Pastel2">Pastel2</option>
|
|
310 <option value="spring">spring</option>
|
|
311 <option value="summer">summer</option>
|
|
312 <option value="autumn">autumn</option>
|
|
313 <option value="winter">winter</option>
|
|
314 <option value="hot">hot</option>
|
|
315 <option value="coolwarm">coolwarm</option>
|
|
316 <option value="cool">cool</option>
|
|
317 <option value="seismic">seismic</option>
|
|
318 <option value="terrain">terrain</option>
|
|
319 <option value="ocean">ocean</option>
|
|
320 <option value="rainbow">rainbow</option>
|
|
321 <option value="bone">bone</option>
|
|
322 <option value="flag">flag</option>
|
|
323 <option value="prism">prism</option>
|
|
324 <option value="cubehelix">cubehelix</option>
|
|
325 <option value="binary">binary</option>
|
|
326 <option value="pink">pink</option>
|
|
327 <option value="gray">gray</option>
|
|
328 <option value="copper">copper</option>
|
|
329 <option value="BrBG">BrBG</option>
|
|
330 <option value="BuGn">BuGn</option>
|
|
331 <option value="BuPu">BuPu</option>
|
|
332 <option value="GnBu">GnBu</option>
|
|
333 <option value="OrRd">OrRd</option>
|
|
334 <option value="PiYG">PiYG</option>
|
|
335 <option value="PRGn">PRGn</option>
|
|
336 <option value="PuOr">PuOr</option>
|
|
337 <option value="PuRd">PuRd</option>
|
|
338 <option value="PuBu">PuBu</option>
|
|
339 <option value="RdBu">RdBu</option>
|
|
340 <option value="RdGy">RdGy</option>
|
|
341 <option value="RdPu">RdPu</option>
|
|
342 <option value="YlGn">YlGn</option>
|
|
343 <option value="PuBuGn">PuBuGn</option>
|
|
344 <option value="RdYlGn">RdYlGn</option>
|
|
345 <option value="YlGnBu">YlGnBu</option>
|
|
346 <option value="YlOrBr">YlOrBr</option>
|
|
347 <option value="YlOrRd">YlOrRd</option>
|
|
348 <option value="gist_gray">gist_gray</option>
|
|
349 <option value="gist_stern">gist_stern</option>
|
|
350 <option value="gist_earth">gist_earth</option>
|
|
351 <option value="gist_yarg">gist_yarg</option>
|
|
352 <option value="gist_ncar">gist_ncar</option>
|
|
353 <option value="gist_rainbow">gist_rainbow</option>
|
|
354 <option value="gist_heat">gist_heat</option>
|
|
355 <option value="gnuplot">gnuplot</option>
|
|
356 <option value="gnuplot2">gnuplot2</option>
|
|
357 <option value="CMRmap">CMRmap</option>
|
|
358 <option value="bwr">bwr</option>
|
|
359 <option value="hsv">hsv</option>
|
|
360 <option value="brg">brg</option>
|
|
361 <option value="jet">jet</option>
|
|
362 <option value="afmhot">afmhot</option>
|
|
363 <option value="Accent_r">Accent reversed</option>
|
|
364 <option value="Spectral_r">Spectral reversed</option>
|
|
365 <option value="Set1_r">Set1 reversed</option>
|
|
366 <option value="Set2_r">Set2 reversed</option>
|
|
367 <option value="Set3_r">Set3 reversed</option>
|
|
368 <option value="Dark2_r">Dark2 reversed</option>
|
|
369 <option value="Reds_r">Reds reversed</option>
|
|
370 <option value="Oranges_r">Oranges reversed</option>
|
|
371 <option value="Greens_r">Greens reversed</option>
|
|
372 <option value="Blues_r">Blues reversed</option>
|
|
373 <option value="Greys_r">Greys reversed</option>
|
|
374 <option value="Purples_r">Purples reversed</option>
|
|
375 <option value="Paired_r">Paired reversed</option>
|
|
376 <option value="Pastel1_r">Pastel1 reversed</option>
|
|
377 <option value="Pastel2_r">Pastel2 reversed</option>
|
|
378 <option value="spring_r">spring reversed</option>
|
|
379 <option value="summer_r">summer reversed</option>
|
|
380 <option value="autumn_r">autumn reversed</option>
|
|
381 <option value="winter_r">winter reversed</option>
|
|
382 <option value="hot_r">hot reversed</option>
|
|
383 <option value="coolwarm_r">coolwarm reversed</option>
|
|
384 <option value="cool_r">cool reversed</option>
|
|
385 <option value="seismic_r">seismic reversed</option>
|
|
386 <option value="terrain_r">terrain reversed</option>
|
|
387 <option value="ocean_r">ocean reversed</option>
|
|
388 <option value="rainbow_r">rainbow reversed</option>
|
|
389 <option value="bone_r">bone reversed</option>
|
|
390 <option value="flag_r">flag reversed</option>
|
|
391 <option value="prism_r">prism reversed</option>
|
|
392 <option value="cubehelix_r">cubehelix reversed</option>
|
|
393 <option value="binary_r">binary reversed</option>
|
|
394 <option value="pink_r">pink reversed</option>
|
|
395 <option value="gray_r">gray reversed</option>
|
|
396 <option value="copper_r">copper reversed</option>
|
|
397 <option value="BrBG_r">BrBG reversed</option>
|
|
398 <option value="BuGn_r">BuGn reversed</option>
|
|
399 <option value="BuPu_r">BuPu reversed</option>
|
|
400 <option value="GnBu_r">GnBu reversed</option>
|
|
401 <option value="OrRd_r">OrRd reversed</option>
|
|
402 <option value="PiYG_r">PiYG reversed</option>
|
|
403 <option value="PRGn_r">PRGn reversed</option>
|
|
404 <option value="PuOr_r">PuOr reversed</option>
|
|
405 <option value="PuRd_r">PuRd reversed</option>
|
|
406 <option value="PuBu_r">PuBu reversed</option>
|
|
407 <option value="RdBu_r">RdBu reversed</option>
|
|
408 <option value="RdGy_r">RdGy reversed</option>
|
|
409 <option value="RdPu_r">RdPu reversed</option>
|
|
410 <option value="YlGn_r">YlGn reversed</option>
|
|
411 <option value="PuBuGn_r">PuBuGn reversed</option>
|
|
412 <option value="RdYlBu_r">RdYlBu reversed</option>
|
|
413 <option value="RdYlGn_r">RdYlGn reversed</option>
|
|
414 <option value="YlGnBu_r">YlGnBu reversed</option>
|
|
415 <option value="YlOrBr_r">YlOrBr reversed</option>
|
|
416 <option value="YlOrRd_r">YlOrRd reversed</option>
|
|
417 <option value="gist_gray_r">gist_gray reversed</option>
|
|
418 <option value="gist_stern_r">gist_stern reversed</option>
|
|
419 <option value="gist_earth_r">gist_earth reversed</option>
|
|
420 <option value="gist_yarg_r">gist_yarg reversed</option>
|
|
421 <option value="gist_ncar_r">gist_ncar reversed</option>
|
|
422 <option value="gist_rainbow_r">gist_rainbow reversed</option>
|
|
423 <option value="gist_heat_r">gist_heat reversed</option>
|
|
424 <option value="gnuplot_r">gnuplot reversed</option>
|
|
425 <option value="gnuplot2_r">gnuplot2 reversed</option>
|
|
426 <option value="CMRmap_r">CMRmap reversed</option>
|
|
427 <option value="bwr_r">bwr reversed</option>
|
|
428 <option value="hsv_r">hsv reversed</option>
|
|
429 <option value="brg_r">brg reversed</option>
|
|
430 <option value="jet_r">jet reversed</option>
|
|
431 <option value="afmhot_r">afmhot reversed</option>
|
|
432 </param>
|
|
433
|
13
|
434 </xml>
|
0
|
435
|
|
436 </macros>
|