annotate gene_family_classifier.xml @ 26:e9bf17c24260 draft

Uploaded
author greg
date Thu, 12 Jan 2017 10:50:02 -0500
parents 9be4bb807c21
children f041f7778540
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
8b5a8a3ca9ee Uploaded
greg
parents: 0
diff changeset
1 <tool id="plant_tribes_gene_family_classifier" name="GeneFamilyClassifier" version="1.0.0">
0
315440c6fb44 Uploaded
greg
parents:
diff changeset
2 <description>pipeline</description>
315440c6fb44 Uploaded
greg
parents:
diff changeset
3 <requirements>
315440c6fb44 Uploaded
greg
parents:
diff changeset
4 <requirement type="package" version="0.2">plant_tribes_gene_family_classifier</requirement>
315440c6fb44 Uploaded
greg
parents:
diff changeset
5 </requirements>
315440c6fb44 Uploaded
greg
parents:
diff changeset
6 <stdio>
315440c6fb44 Uploaded
greg
parents:
diff changeset
7 <!-- Anything other than zero is an error -->
315440c6fb44 Uploaded
greg
parents:
diff changeset
8 <exit_code range="1:" />
315440c6fb44 Uploaded
greg
parents:
diff changeset
9 <!-- In case the return code has not been set properly check stderr too -->
315440c6fb44 Uploaded
greg
parents:
diff changeset
10 <regex match="Error:" />
315440c6fb44 Uploaded
greg
parents:
diff changeset
11 <regex match="Exception:" />
315440c6fb44 Uploaded
greg
parents:
diff changeset
12 </stdio>
315440c6fb44 Uploaded
greg
parents:
diff changeset
13 <command>
315440c6fb44 Uploaded
greg
parents:
diff changeset
14 <![CDATA[
21
795745116516 Uploaded
greg
parents: 20
diff changeset
15 #if str($options_type.options_type_selector) == 'advanced':
17
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
16 #set create_orthogroup_cond = $options_type.create_orthogroup_cond
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
17 #set create_orthogroup = $create_orthogroup_cond.create_orthogroup
22
035e8b85cdf7 Uploaded
greg
parents: 21
diff changeset
18
21
795745116516 Uploaded
greg
parents: 20
diff changeset
19 #if str($create_orthogroup) == 'yes':
795745116516 Uploaded
greg
parents: 20
diff changeset
20 #set create_corresponding_coding_sequences_cond = $create_orthogroup_cond.create_corresponding_coding_sequences_cond
795745116516 Uploaded
greg
parents: 20
diff changeset
21 #if str($create_corresponding_coding_sequences_cond.create_corresponding_coding_sequences) == 'yes':
795745116516 Uploaded
greg
parents: 20
diff changeset
22 #set create_corresponding_coding_sequences = True
795745116516 Uploaded
greg
parents: 20
diff changeset
23 #else:
795745116516 Uploaded
greg
parents: 20
diff changeset
24 #set create_corresponding_coding_sequences = False
22
035e8b85cdf7 Uploaded
greg
parents: 21
diff changeset
25 #end if
035e8b85cdf7 Uploaded
greg
parents: 21
diff changeset
26
21
795745116516 Uploaded
greg
parents: 20
diff changeset
27 #import os
795745116516 Uploaded
greg
parents: 20
diff changeset
28 #set create_ortho_sequences = True
795745116516 Uploaded
greg
parents: 20
diff changeset
29 #set orthogroups_fasta_src_dir = $os.path.join('geneFamilyClassification_dir', 'orthogroups_fasta')
795745116516 Uploaded
greg
parents: 20
diff changeset
30 #set dest_dir = $output.extra_files_path
23
1d3e9e154750 Uploaded
greg
parents: 22
diff changeset
31 mkdir -p $dest_dir &&
21
795745116516 Uploaded
greg
parents: 20
diff changeset
32 #else:
795745116516 Uploaded
greg
parents: 20
diff changeset
33 #set create_ortho_sequences = False
23
1d3e9e154750 Uploaded
greg
parents: 22
diff changeset
34 #set create_corresponding_coding_sequences = False
21
795745116516 Uploaded
greg
parents: 20
diff changeset
35 #end if
13
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
36 #else:
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
37 #set create_ortho_sequences = False
23
1d3e9e154750 Uploaded
greg
parents: 22
diff changeset
38 #set create_corresponding_coding_sequences = False
4
2ffac03c08fe Uploaded
greg
parents: 3
diff changeset
39 #end if
20
038777896b71 Uploaded
greg
parents: 19
diff changeset
40
0
315440c6fb44 Uploaded
greg
parents:
diff changeset
41 GeneFamilyClassifier
315440c6fb44 Uploaded
greg
parents:
diff changeset
42 --proteins "$input"
315440c6fb44 Uploaded
greg
parents:
diff changeset
43 --scaffold "$scaffold"
315440c6fb44 Uploaded
greg
parents:
diff changeset
44 --method $method
13
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
45 --classifier $save_hmmscan_log_cond.classifier
20
038777896b71 Uploaded
greg
parents: 19
diff changeset
46
0
315440c6fb44 Uploaded
greg
parents:
diff changeset
47 #if str($options_type.options_type_selector) == 'advanced':
315440c6fb44 Uploaded
greg
parents:
diff changeset
48 --super_orthogroups $options_type.super_orthogroups
315440c6fb44 Uploaded
greg
parents:
diff changeset
49 #if str($options_type.single_copy_cond) == 'taxa':
315440c6fb44 Uploaded
greg
parents:
diff changeset
50 --single_copy_taxa $options_type.single_copy_cond.single_copy_taxa
315440c6fb44 Uploaded
greg
parents:
diff changeset
51 --taxa_present $options_type.single_copy_cond.taxa_present
315440c6fb44 Uploaded
greg
parents:
diff changeset
52 #end if
17
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
53 #if str($create_orthogroup) == 'yes':
0
315440c6fb44 Uploaded
greg
parents:
diff changeset
54 --orthogroup_fasta
18
b14a129fe55f Uploaded
greg
parents: 17
diff changeset
55 #if $create_corresponding_coding_sequences:
17
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
56 --coding_sequences "$create_corresponding_coding_sequences_cond.coding_sequences"
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
57 #end if
0
315440c6fb44 Uploaded
greg
parents:
diff changeset
58 #end if
315440c6fb44 Uploaded
greg
parents:
diff changeset
59 #end if
20
038777896b71 Uploaded
greg
parents: 19
diff changeset
60
2
5440f5f083bc Uploaded
greg
parents: 1
diff changeset
61 --scaffold_dir "${GALAXY_DATA_INDEX_DIR}/plant_tribes/scaffolds"
24
93c2ac892a19 Uploaded
greg
parents: 23
diff changeset
62 --num_threads \${GALAXY_SLOTS:-4}
93c2ac892a19 Uploaded
greg
parents: 23
diff changeset
63 --no_config_override
20
038777896b71 Uploaded
greg
parents: 19
diff changeset
64
13
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
65 #if str($save_hmmscan_log_cond.classifier) == 'hmmscan' or str($save_hmmscan_log_cond.classifier) == 'both':
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
66 #if str($save_hmmscan_log_cond.save_hmmscan_log) == 'yes':
15
9d4ec1102803 Uploaded
greg
parents: 14
diff changeset
67 && mv geneFamilyClassification_dir/hmmscan.log $hmmscan_log
13
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
68 #else:
15
9d4ec1102803 Uploaded
greg
parents: 14
diff changeset
69 && rm geneFamilyClassification_dir/hmmscan.log
13
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
70 #end if
12
b75510484c16 Uploaded
greg
parents: 11
diff changeset
71 #end if
20
038777896b71 Uploaded
greg
parents: 19
diff changeset
72
14
595088cc480a Uploaded
greg
parents: 13
diff changeset
73 #if $create_ortho_sequences:
18
b14a129fe55f Uploaded
greg
parents: 17
diff changeset
74 #if $create_corresponding_coding_sequences:
25
9be4bb807c21 Uploaded
greg
parents: 24
diff changeset
75 && echo "Sequences classified into pre-computed orthologous plant gene family clusters with corresponding coding sequences: `ls $orthogroups_fasta_src_dir | grep f | wc -l` files" > $output
18
b14a129fe55f Uploaded
greg
parents: 17
diff changeset
76 #else:
25
9be4bb807c21 Uploaded
greg
parents: 24
diff changeset
77 && echo "Sequences classified into pre-computed orthologous plant gene family clusters: `ls $orthogroups_fasta_src_dir | grep f | wc -l` files" > $output
18
b14a129fe55f Uploaded
greg
parents: 17
diff changeset
78 #end if
25
9be4bb807c21 Uploaded
greg
parents: 24
diff changeset
79 && ls -al $orthogroups_fasta_src_dir | grep f >> $output
26
e9bf17c24260 Uploaded
greg
parents: 25
diff changeset
80 && mv $orthogroups_fasta_src_dir/* $dest_dir || true
4
2ffac03c08fe Uploaded
greg
parents: 3
diff changeset
81 #end if
20
038777896b71 Uploaded
greg
parents: 19
diff changeset
82
0
315440c6fb44 Uploaded
greg
parents:
diff changeset
83 ]]>
315440c6fb44 Uploaded
greg
parents:
diff changeset
84 </command>
315440c6fb44 Uploaded
greg
parents:
diff changeset
85 <inputs>
315440c6fb44 Uploaded
greg
parents:
diff changeset
86 <param name="input" format="fasta" type="data" label="Amino acids (proteins) sequences fasta file"/>
315440c6fb44 Uploaded
greg
parents:
diff changeset
87 <param name="scaffold" type="select" label="Orthogroups or gene families proteins scaffold">
315440c6fb44 Uploaded
greg
parents:
diff changeset
88 <options from_data_table="plant_tribes_scaffolds" />
315440c6fb44 Uploaded
greg
parents:
diff changeset
89 <validator type="no_options" message="No PlantTribes scaffolds are available. Use the PlantTribes Scaffolds Download Data Manager tool to install and populate the PlantTribes scaffolds data table."/>
315440c6fb44 Uploaded
greg
parents:
diff changeset
90 </param>
315440c6fb44 Uploaded
greg
parents:
diff changeset
91 <param name="method" type="select" label="Protein clustering method">
315440c6fb44 Uploaded
greg
parents:
diff changeset
92 <option value="gfam" selected="true">GFam</option>
315440c6fb44 Uploaded
greg
parents:
diff changeset
93 <option value="orthofinder">OrthoFinder</option>
315440c6fb44 Uploaded
greg
parents:
diff changeset
94 <option value="orthomcl">OrthoMCL</option>
315440c6fb44 Uploaded
greg
parents:
diff changeset
95 </param>
13
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
96 <conditional name="save_hmmscan_log_cond">
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
97 <param name="classifier" type="select" label="Protein classification method">
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
98 <option value="blastp" selected="true">blastp</option>
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
99 <option value="hmmscan">HMMScan</option>
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
100 <option value="both">Both blastp and HMMScan</option>
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
101 </param>
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
102 <when value="blastp" />
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
103 <when value="hmmscan">
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
104 <param name="save_hmmscan_log" type="select" label="Save hmmscan log?" help="Save the hmmscan log in an additional output dataset">
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
105 <option value="no" selected="true">No</option>
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
106 <option value="yes">Yes</option>
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
107 </param>
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
108 </when>
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
109 <when value="both">
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
110 <param name="save_hmmscan_log" type="select" label="Save hmmscan log?" help="Save the hmmscan log in an additional output dataset">
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
111 <option value="no" selected="true">No</option>
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
112 <option value="yes">Yes</option>
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
113 </param>
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
114 </when>
cddbb2f13c28 Uploaded
greg
parents: 12
diff changeset
115 </conditional>
0
315440c6fb44 Uploaded
greg
parents:
diff changeset
116 <conditional name="options_type">
315440c6fb44 Uploaded
greg
parents:
diff changeset
117 <param name="options_type_selector" type="select" label="Options Configuration">
315440c6fb44 Uploaded
greg
parents:
diff changeset
118 <option value="basic" selected="true">Basic</option>
315440c6fb44 Uploaded
greg
parents:
diff changeset
119 <option value="advanced">Advanced</option>
315440c6fb44 Uploaded
greg
parents:
diff changeset
120 </param>
315440c6fb44 Uploaded
greg
parents:
diff changeset
121 <when value="basic" />
315440c6fb44 Uploaded
greg
parents:
diff changeset
122 <when value="advanced">
315440c6fb44 Uploaded
greg
parents:
diff changeset
123 <param name="super_orthogroups" type="select" label="SuperOrthogroups MCL clustering" help="blastp e-value matrix between all pairs of orthogroups">
315440c6fb44 Uploaded
greg
parents:
diff changeset
124 <option value="min_evalue" selected="true">Minimum e-value</option>
315440c6fb44 Uploaded
greg
parents:
diff changeset
125 <option value="avg_evalue">Average e-value</option>
315440c6fb44 Uploaded
greg
parents:
diff changeset
126 </param>
315440c6fb44 Uploaded
greg
parents:
diff changeset
127 <conditional name="single_copy_cond">
315440c6fb44 Uploaded
greg
parents:
diff changeset
128 <param name="single_copy" type="select" label="Select single copy configuration">
315440c6fb44 Uploaded
greg
parents:
diff changeset
129 <option value="custom" selected="true">Single copy orthogroup custom</option>
315440c6fb44 Uploaded
greg
parents:
diff changeset
130 <option value="taxa">Minumum single copy taxa required in orthogroup</option>
315440c6fb44 Uploaded
greg
parents:
diff changeset
131 </param>
315440c6fb44 Uploaded
greg
parents:
diff changeset
132 <when value="custom" />
315440c6fb44 Uploaded
greg
parents:
diff changeset
133 <when value="taxa">
315440c6fb44 Uploaded
greg
parents:
diff changeset
134 <param name="single_copy_taxa" type="integer" value="20" label="Minumum single copy taxa required in orthogroup"/>
315440c6fb44 Uploaded
greg
parents:
diff changeset
135 <param name="taxa_present" type="integer" value="21" label="Minumum taxa required in single copy orthogroup"/>
315440c6fb44 Uploaded
greg
parents:
diff changeset
136 </when>
315440c6fb44 Uploaded
greg
parents:
diff changeset
137 </conditional>
315440c6fb44 Uploaded
greg
parents:
diff changeset
138 <conditional name="create_orthogroup_cond">
315440c6fb44 Uploaded
greg
parents:
diff changeset
139 <param name="create_orthogroup" type="select" label="Create orthogroup fasta files?">
315440c6fb44 Uploaded
greg
parents:
diff changeset
140 <option value="no" selected="true">No</option>
315440c6fb44 Uploaded
greg
parents:
diff changeset
141 <option value="yes">Yes</option>
315440c6fb44 Uploaded
greg
parents:
diff changeset
142 </param>
315440c6fb44 Uploaded
greg
parents:
diff changeset
143 <when value="no" />
315440c6fb44 Uploaded
greg
parents:
diff changeset
144 <when value="yes">
17
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
145 <conditional name="create_corresponding_coding_sequences_cond">
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
146 <param name="create_corresponding_coding_sequences" type="select" label="Create corresponding coding sequences?">
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
147 <option value="no" selected="true">No</option>
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
148 <option value="yes">Yes</option>
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
149 </param>
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
150 <when value="no" />
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
151 <when value="yes">
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
152 <param name="coding_sequences" format="fasta" type="data" label="Corresponding coding sequences (CDS) fasta file"/>
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
153 </when>
cb7487bdab99 Uploaded
greg
parents: 16
diff changeset
154 </conditional>
0
315440c6fb44 Uploaded
greg
parents:
diff changeset
155 </when>
315440c6fb44 Uploaded
greg
parents:
diff changeset
156 </conditional>
315440c6fb44 Uploaded
greg
parents:
diff changeset
157 </when>
315440c6fb44 Uploaded
greg
parents:
diff changeset
158 </conditional>
315440c6fb44 Uploaded
greg
parents:
diff changeset
159 </inputs>
315440c6fb44 Uploaded
greg
parents:
diff changeset
160 <outputs>
15
9d4ec1102803 Uploaded
greg
parents: 14
diff changeset
161 <data name="hmmscan_log" format="txt" label="Protein classification hmmscan.log on ${on_string}">
9d4ec1102803 Uploaded
greg
parents: 14
diff changeset
162 <filter>save_hmmscan_log_cond['classifier'] in ['hmmscan', 'both'] and save_hmmscan_log_cond['save_hmmscan_log'] == 'yes'</filter>
9d4ec1102803 Uploaded
greg
parents: 14
diff changeset
163 </data>
9
c7010d37df2c Uploaded
greg
parents: 8
diff changeset
164 <data name="output" format="txt" label="Sequences classified into gene family clusters on ${on_string}">
c7010d37df2c Uploaded
greg
parents: 8
diff changeset
165 <filter>options_type['options_type_selector'] == 'advanced' and options_type['create_orthogroup_cond']['create_orthogroup'] == 'yes'</filter>
c7010d37df2c Uploaded
greg
parents: 8
diff changeset
166 </data>
0
315440c6fb44 Uploaded
greg
parents:
diff changeset
167 <collection name="transcripts" type="list">
12
b75510484c16 Uploaded
greg
parents: 11
diff changeset
168 <discover_datasets pattern="__name__" directory="geneFamilyClassification_dir" visible="false" ext="tabular" />
0
315440c6fb44 Uploaded
greg
parents:
diff changeset
169 </collection>
315440c6fb44 Uploaded
greg
parents:
diff changeset
170 </outputs>
315440c6fb44 Uploaded
greg
parents:
diff changeset
171 <tests>
315440c6fb44 Uploaded
greg
parents:
diff changeset
172 <test>
315440c6fb44 Uploaded
greg
parents:
diff changeset
173 <param name="input" value="" ftype="fasta" />
315440c6fb44 Uploaded
greg
parents:
diff changeset
174 <param name="prediction_method" value="transdecoder"/>
315440c6fb44 Uploaded
greg
parents:
diff changeset
175 <param name="target_gene_family_assembly" value="no"/>
315440c6fb44 Uploaded
greg
parents:
diff changeset
176 <param name="strand_specific" value="yes"/>
315440c6fb44 Uploaded
greg
parents:
diff changeset
177 <param name="dereplicate" value="yes"/>
315440c6fb44 Uploaded
greg
parents:
diff changeset
178 <param name="min_length" value="200"/>
315440c6fb44 Uploaded
greg
parents:
diff changeset
179 <output_collection name="orthos" type="list">
315440c6fb44 Uploaded
greg
parents:
diff changeset
180
315440c6fb44 Uploaded
greg
parents:
diff changeset
181 </output_collection>
315440c6fb44 Uploaded
greg
parents:
diff changeset
182 </test>
315440c6fb44 Uploaded
greg
parents:
diff changeset
183 </tests>
315440c6fb44 Uploaded
greg
parents:
diff changeset
184 <help>
315440c6fb44 Uploaded
greg
parents:
diff changeset
185 This tool is one of the PlantTribes' collection of automated modular analysis pipelines that utilize objective classifications of
9
c7010d37df2c Uploaded
greg
parents: 8
diff changeset
186 complete protein sequences from sequenced plant genomes to perform comparative evolutionary studies. It performs gene family
0
315440c6fb44 Uploaded
greg
parents:
diff changeset
187 classification of the post processed de novo transcripts using either blastp (faster), HMMScan (slower but more sensitive to remote
315440c6fb44 Uploaded
greg
parents:
diff changeset
188 homologs) or both (more exhaustive).
315440c6fb44 Uploaded
greg
parents:
diff changeset
189
315440c6fb44 Uploaded
greg
parents:
diff changeset
190 -----
315440c6fb44 Uploaded
greg
parents:
diff changeset
191
315440c6fb44 Uploaded
greg
parents:
diff changeset
192 **Options**
315440c6fb44 Uploaded
greg
parents:
diff changeset
193
315440c6fb44 Uploaded
greg
parents:
diff changeset
194 * **Orthogroups or gene families proteins scaffold** - PlantTribes scaffolds data.
315440c6fb44 Uploaded
greg
parents:
diff changeset
195 * **Protein clustering method** - One of GFam, OrthoFinder or OrthoMCL.
315440c6fb44 Uploaded
greg
parents:
diff changeset
196 * **Protein classification method** - One of blastp, HMMScan or both.
315440c6fb44 Uploaded
greg
parents:
diff changeset
197 * **SuperOrthogroups MCL clustering** - blastp e-value matrix between all pairs of orthogroups.
315440c6fb44 Uploaded
greg
parents:
diff changeset
198 * **Minumum single copy taxa required in orthogroup** - Used with "Minumum single copy taxa required in orthogroup" configuration only.
315440c6fb44 Uploaded
greg
parents:
diff changeset
199 * **Minumum taxa required in single copy orthogroup** - Used with "Minumum single copy taxa required in orthogroup" configuration only.
315440c6fb44 Uploaded
greg
parents:
diff changeset
200 * **Corresponding coding sequences (CDS) fasta file** - Used only when selecting "Create orthogroup fasta files?".
315440c6fb44 Uploaded
greg
parents:
diff changeset
201
315440c6fb44 Uploaded
greg
parents:
diff changeset
202 </help>
315440c6fb44 Uploaded
greg
parents:
diff changeset
203 <citations>
315440c6fb44 Uploaded
greg
parents:
diff changeset
204 <citation type="bibtex">
315440c6fb44 Uploaded
greg
parents:
diff changeset
205 @unpublished{None,
315440c6fb44 Uploaded
greg
parents:
diff changeset
206 author = {None},
315440c6fb44 Uploaded
greg
parents:
diff changeset
207 title = {None},
315440c6fb44 Uploaded
greg
parents:
diff changeset
208 year = {None},
315440c6fb44 Uploaded
greg
parents:
diff changeset
209 eprint = {None},
315440c6fb44 Uploaded
greg
parents:
diff changeset
210 url = {None}
315440c6fb44 Uploaded
greg
parents:
diff changeset
211 }</citation>
315440c6fb44 Uploaded
greg
parents:
diff changeset
212 </citations>
315440c6fb44 Uploaded
greg
parents:
diff changeset
213 </tool>