annotate phyloseq_ordinate_plot.xml @ 1:52f009b255a1 draft default tip

Updated tool
author simon-gladman
date Thu, 22 Nov 2018 07:07:27 -0500
parents ae9cd53b7760
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
1 <tool id="phyloseq_ordinate" name="Phyloseq Ordination Plot" version="1.22.3.2" hidden="false">
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
2 <description>ordination plotting</description>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
3 <requirements>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
4 <requirement type="package" version="1.22.3">bioconductor-phyloseq</requirement>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
5 <requirement type="package" version="1.20.0">r-getopt</requirement>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
6 <requirement type="package" version="1.0.11">r-doparallel</requirement>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
7 <requirement type="package" version="9.18">ghostscript</requirement>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
8 </requirements>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
9 <version_command><![CDATA[
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
10 echo $(R --version | grep version | grep -v GNU)", phyloseq version" $(R --vanilla --slave -e "library(phyloseq); cat(sessionInfo()\$otherPkgs\$phyloseq\$Version)" 2> /dev/null | grep -v -i "WARNING: ")
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
11 ]]></version_command>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
12 <command detect_errors="exit_code"><![CDATA[
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
13 Rscript '${__tool_directory__}/phyloseq_ordinate_plot.R'
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
14 #if str($file_source.file_source_selector) == "set_biom":
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
15 --biom='$file_source.input'
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
16 --subset='$file_source.subsetColumn'
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
17 #else:
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
18 --otu_table='$OTU_TABLE'
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
19 --tax_table='$TAX_TABLE'
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
20 --meta_table='$META_TABLE'
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
21 --category='$file_source.category'
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
22 #end if
1
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
23 #if str($plot_selection.plot_type) == "2":
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
24 --plottype='$plot_selection.plot_type'
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
25 --kingdom='null'
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
26 #else:
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
27 --plottype='$plot_selection.plot_type'
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
28 --kingdom='$plot_selection.kingdom_field'
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
29 #end if
0
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
30 --method='$ord_method'
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
31 --distance='$distance'
1
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
32 --log='$log'
0
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
33 --outdir="$htmlfile.files_path"
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
34 --htmlfile='$htmlfile'
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
35 ]]>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
36 </command>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
37
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
38 <inputs>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
39 <conditional name="file_source">
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
40 <param name="file_source_selector" type="select" label="Choose an input file type">
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
41 <option value="set_biom" selected="True">BIOM File</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
42 <option value="set_table">TABULAR File</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
43 </param>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
44 <when value="set_biom">
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
45 <param format="biom1" name="input" type="data" label="Input File"/>
1
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
46 <param name="subsetColumn" type="select" label="Classify plot by">
0
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
47 <options>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
48 <filter type="data_meta" ref="input" key="table_column_metadata_headers" />
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
49 </options>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
50 </param>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
51 </when>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
52 <when value="set_table">
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
53 <param format="tabular" name="OTU_TABLE" type="data" label="OTU table"/>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
54 <param format="tabular" name="TAX_TABLE" type="data" label="Taxonomy table"/>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
55 <param format="tabular" name="META_TABLE" type="data" label="Metadata table"/>
1
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
56 <param name="category" type="data_column" data_ref="META_TABLE" use_header_names="True" label="Classify plot by"/>
0
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
57 </when>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
58 </conditional>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
59 <param name="ord_method" type="select" display="radio" label="Select Ordination method">
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
60 <option value="NMDS" selected="true">NMDS(Non-metric Multidimensional Scalling)</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
61 <option value="DCA">DCA (Detrended Correspondence Analysis)</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
62 <option value="CCA">CCA (Constrained Correspondence Analysis)</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
63 <option value="RDA">RDA (Redundancy Analysis)</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
64 <option value="DPCoA">DPCoA (Double Principle Coordinate Analysis)</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
65 <option value="MDS">MDS (Multidimensional Scaling)</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
66 <option value="PCoA">PCoA (Principal Coordinate Analysis)</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
67 </param>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
68 <param name="distance" type="select" display="radio" label="Select Distance method">
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
69 <option value="bray" selected="true">bray (Bray-Curtis distance)</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
70 <option value="gower">gower (Gower's distance)</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
71 <option value="jsd">jds (Jensen-Shannon Divergence)</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
72 <option value="unifrac">unifrac (unweighted UniFrac distance)</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
73 <option value="wunifrac">wunifrac (weighted-UniFrac distance)</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
74 </param>
1
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
75 <!-- <param name="kingdom_field" type="select" display="radio" label="Select a taxonomic rank for the analysis">
0
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
76 <option value="Kingdom">Kingdom</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
77 <option value="Phylum" selected="true">Phylum</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
78 <option value="Class">Class</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
79 <option value="Order">Order</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
80 <option value="Family">Family</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
81 <option value="Genus">Genus</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
82 <option value="Species">Species</option>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
83 </param>
1
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
84 -->
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
85 <conditional name="plot_selection">
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
86 <param name="plot_type" type="select" label="Type of Plot" help="Ordination plot type (Plot OTUs, Plot SAMPLE, Biplot graphic, Split plot graphic)">
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
87 <option value="1">OTU</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
88 <option value="2" selected="true">SAMPLE</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
89 <option value="3">BIPLOT</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
90 <option value="4">SPLIT PLOT</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
91 </param>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
92 <when value="1">
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
93 <param name="kingdom_field" type="select" display="radio" label="Select a taxonomic rank for the analysis">
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
94 <option value="Kingdom">Kingdom</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
95 <option value="Phylum" selected="true">Phylum</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
96 <option value="Class">Class</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
97 <option value="Order">Order</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
98 <option value="Family">Family</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
99 <option value="Genus">Genus</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
100 <option value="Species">Species</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
101 </param>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
102 </when>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
103 <when value="2">
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
104 </when>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
105 <when value="3">
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
106 <param name="kingdom_field" type="select" display="radio" label="Select a taxonomic rank for the analysis">
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
107 <option value="Kingdom">Kingdom</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
108 <option value="Phylum" selected="true">Phylum</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
109 <option value="Class">Class</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
110 <option value="Order">Order</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
111 <option value="Family">Family</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
112 <option value="Genus">Genus</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
113 <option value="Species">Species</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
114 </param>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
115 </when>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
116 <when value="4">
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
117 <param name="kingdom_field" type="select" display="radio" label="Select a taxonomic rank for the analysis">
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
118 <option value="Kingdom">Kingdom</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
119 <option value="Phylum" selected="true">Phylum</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
120 <option value="Class">Class</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
121 <option value="Order">Order</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
122 <option value="Family">Family</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
123 <option value="Genus">Genus</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
124 <option value="Species">Species</option>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
125 </param>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
126 </when>
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
127 </conditional>
0
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
128 </inputs>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
129 <outputs>
1
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
130 <data format="txt" name="log" label="${tool.name} - stress value - distance matrix - sample column sum"/>
0
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
131 <data format="html" name="htmlfile" label="${tool.name} - ${ord_method.value_label}_${distance.value_label}.html"/>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
132 </outputs>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
133
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
134 <tests>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
135 <test> <!-- Test #1: Test BIOM format input -->
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
136 <!-- Equivalent command (replace + with double dash): Rscript phyloseq_nmds.R +biom=test-data/GP.biom +subset=6 +method=NMDS
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
137 +distance=bray +kingdom=Phylum +cutoff=5 +keep=5 +outdir=outputdir +htmlfile=biom_out.html -->
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
138 <conditional name="file_source">
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
139 <param name="file_source_selector" value="set_biom"/>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
140 <param name="input" value="GP.biom" ftype="biom1"/>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
141 <param name="subsetColumn" value="Primer" />
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
142 </conditional>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
143 <output name="htmlfile" ftype="html" file="biom_out.html" />
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
144 </test>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
145 <test> <!-- Test #2: Test TABULAR format inputs -->
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
146 <!-- Equivalent command (replace + with double dash): Rscript phyloseq_nmds.R +otu_table=test-data/GP_OTU_TABLE.txt
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
147 +tax_table=test-data/GP_TAX_TABLE.txt +meta_table=test-data/GP_SAMPLE_TABLE.txt
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
148 +method="bray" +kingdom=Phylum +cutoff=5 + keep=5 +category=6 +outdir=outputdir +htmlfile=test.html -->
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
149 <conditional name="file_source">
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
150 <param name="file_source_selector" value="set_table" />
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
151 <param name="OTU_TABLE" value="GP_OTU_TABLE.txt" />
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
152 <param name="TAX_TABLE" value="GP_TAX_TABLE.txt" />
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
153 <param name="META_TABLE" value="GP_SAMPLE_TABLE.txt" />
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
154 <param name="category" value="6" />
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
155 </conditional>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
156 <output name="htmlfile" ftype="html" file="test.html" />
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
157 </test>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
158 </tests>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
159
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
160 <help>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
161 **What it does**
1
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
162 Creates various ordination plot using an R_package_called_phyloseq_,specifically according to the methods outlined in the Phyloseq_Ordination_Plot_Tutorial_.
0
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
163
1
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
164 .. _R_package_called_phyloseq: https://joey711.github.io/phyloseq/index.html
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
165 .. _Phyloseq_Ordination_Plot_Tutorial: https://joey711.github.io/phyloseq/plot_ordination-examples.html
0
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
166
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
167 -----
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
168
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
169 **Input**
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
170
1
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
171 - **Choose an input file type** - either 1 BIOM File or 3 TABULAR files (OTU, taxonomy and Metadata tables)
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
172 - **Classify plot by** - points on the plot will be colour coded according to their value of the selected feature
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
173 - **Select Ordination method** - several methods are supported
52f009b255a1 Updated tool
simon-gladman
parents: 0
diff changeset
174 - **Select Distance method** - several methods are supported
0
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
175 - **Select a taxonomic rank for the analysis** - select a taxonomy for ordination plot
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
176
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
177 -----
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
178
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
179 =========
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
180 Resources
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
181 =========
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
182
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
183 **Wrapper Authors**
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
184
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
185 QFAB Bioinformatics (support@qfab.org)
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
186 Melbourne Bioinformatics
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
187 </help>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
188 <citations>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
189 <citation type="doi">10.18129/B9.bioc.phyloseq</citation>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
190 </citations>
ae9cd53b7760 Initial upload
simon-gladman
parents:
diff changeset
191 </tool>