Skip to content

Commit bbcbf9c

Browse files
authored
Merge pull request #659 from RECETOX/hechth/issue579
wavica: accept tabular as input
2 parents 64b61ff + fd29a68 commit bbcbf9c

File tree

3 files changed

+109
-137
lines changed

3 files changed

+109
-137
lines changed

tools/waveica/macros.xml

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,29 +22,14 @@
2222

2323
<xml name="annotation">
2424
<xrefs>
25-
<xref type="bio.tools">waveica</xref>
25+
<xref type="bio.tools">waveica</xref>
2626
</xrefs>
2727
</xml>
2828

2929
<xml name="input_data">
30-
<param type="data" name="data" label="Feature table" format="csv,tsv,parquet" help=""/>
31-
</xml>
32-
<xml name="general_parameters">
33-
<param type="integer" value="20" name="k" label="Number of components to decompose" help="maximal component that ICA decomposes"/>
34-
<param type="float" value="0" name="alpha" label="Alpha" help="trade-off value between the independence of samples (temporal ICA) and variables (spatial ICA), should be between 0 and 1"/>
35-
</xml>
36-
<xml name="batchwise_parameters">
37-
<param type="float" value="0.05" name="t" label="Batch-association threshold" help="threshold to consider a component associate with the batch,
38-
should be between 0 and 1"/>
39-
<param type="float" value="0.05" name="t2" label="Group-association threshold" help="threshold to consider a component associate with the group,
40-
should be between 0 and 1"/>
41-
</xml>
42-
<xml name="singlebatch_parameters">
43-
<param type="float" value="0" name="cutoff" label="Cutoff" help="threshold of the variation explained by the injection order for independent components, should be between 0 and 1"/>
44-
</xml>
45-
<xml name="exclude_blanks">
46-
<param name="exclude_blanks" type="boolean" checked="false" truevalue="TRUE" falsevalue="FALSE" label="Remove blanks" help="Excludes blank samples from the output" />
30+
<param type="data" name="data" label="Feature table" format="csv,tsv,tabular,parquet" help=""/>
4731
</xml>
32+
4833
<xml name="wf">
4934
<conditional name="wf">
5035
<param type="select" name="wavelet_filter" label="Wavelet transform filter" help="wavelet function and filter length [1] (see footnotes for more details)">

tools/waveica/waveica.xml

Lines changed: 105 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<tool id="waveica" name="WaveICA" version="@TOOL_VERSION@+galaxy8" profile="21.09">
1+
<tool id="waveica" name="WaveICA" version="@TOOL_VERSION@+galaxy9" profile="23.0">
22
<description>removal of batch effects for untargeted metabolomics data</description>
33
<macros>
44
<import>macros.xml</import>
@@ -18,8 +18,8 @@
1818
-e 'normalized_data <- waveica(
1919
file = "$input_num.data",
2020
#if $input_num.input_choice == "2":
21-
metadata = "$input_num.input_metadata.metadata",
22-
ext = "$input_num.data.ext,$input_num.input_metadata.metadata.ext",
21+
metadata = "$input_num.metadata",
22+
ext = "$input_num.data.ext,$input_num.metadata.ext",
2323
transpose = $input_num.transpose_feature_table,
2424
#else:
2525
ext = "$input_num.data.ext",
@@ -36,8 +36,8 @@
3636
-e 'normalized_data <- waveica_singlebatch(
3737
file = "$input_num.data",
3838
#if $input_num.input_choice == "2":
39-
metadata = "$input_num.input_metadata.metadata",
40-
ext = "$input_num.data.ext,$input_num.input_metadata.metadata.ext",
39+
metadata = "$input_num.metadata",
40+
ext = "$input_num.data.ext,$input_num.metadata.ext",
4141
transpose = $input_num.transpose_feature_table,
4242
#else:
4343
ext = "$input_num.data.ext",
@@ -65,14 +65,13 @@
6565
</when>
6666
<when value="2">
6767
<expand macro="input_data"/>
68-
<section name="input_metadata" title="Input metadata table" expanded="true">
69-
<param name="metadata" label="Input metadata" type="data" format="csv,tsv,parquet" help="" />
70-
</section>
68+
<param name="metadata" label="Input metadata" type="data" format="csv,tsv,tabular,parquet" help="" />
7169
<param name = "transpose_feature_table" label="Transpose feature table" type="boolean" checked="false"
7270
truevalue="TRUE" falsevalue="FALSE" help="Swap sample names with feature names as column headers (to fit recetox-aplcms outputs)." />
7371
</when>
7472
</conditional>
75-
<expand macro="general_parameters"/>
73+
<param type="integer" value="20" name="k" label="Number of components to decompose" help="maximal component that ICA decomposes"/>
74+
<param type="float" value="0" name="alpha" label="Alpha" help="trade-off value between the independence of samples (temporal ICA) and variables (spatial ICA), should be between 0 and 1"/>
7675
<expand macro="wf"/>
7776
<conditional name="batch_correction">
7877
<param name="mode" type="select" label="Batch correction mode" help="'multiple batches' takes into account
@@ -82,167 +81,155 @@
8281
<option value="single_batch">Single batch (or no batch information)</option>
8382
</param>
8483
<when value="batchwise">
85-
<expand macro="batchwise_parameters"/>
84+
<param type="float" value="0.05" name="t" label="Batch-association threshold" help="threshold to consider a component associate with the batch, should be between 0 and 1"/>
85+
<param type="float" value="0.05" name="t2" label="Group-association threshold" help="threshold to consider a component associate with the group, should be between 0 and 1"/>
8686
</when>
8787
<when value="single_batch">
88-
<expand macro="singlebatch_parameters"/>
88+
<param type="float" value="0" name="cutoff" label="Cutoff" help="threshold of the variation explained by the injection order for independent components, should be between 0 and 1"/>
8989
</when>
9090
</conditional>
91-
<expand macro="exclude_blanks"/>
91+
<param name="exclude_blanks" type="boolean" checked="false" truevalue="TRUE" falsevalue="FALSE" label="Remove blanks" help="Excludes blank samples from the output" />
9292
<expand macro="split_output"/>
9393
</inputs>
9494

9595
<expand macro="outputs"/>
9696

9797
<tests>
9898
<test expect_num_outputs="1"><!-- TEST 1 -->
99-
<param name="data" value="input_data.csv" ftype="csv"/>
100-
<param name="mode" value="batchwise"/>
101-
<param name="wavelet_filter" value="d"/>
102-
<param name="wavelet_length" value="2"/>
103-
<param name="k" value="20"/>
104-
<param name="t" value="0.05"/>
105-
<param name="t2" value="0.05"/>
99+
<conditional name="input_num">
100+
<param name="data" value="input_data.csv" ftype="csv"/>
101+
</conditional>
106102
<param name="alpha" value="0"/>
103+
<param name="k" value="20"/>
104+
<conditional name="wf">
105+
<param name="wavelet_filter" value="d"/>
106+
<param name="wavelet_length" value="2"/>
107+
</conditional>
108+
<conditional name="batch_correction">
109+
<param name="mode" value="batchwise"/>
110+
<param name="t" value="0.05"/>
111+
<param name="t2" value="0.05"/>
112+
</conditional>
107113
<output name="normalized_data" file="normalized_data.tsv" ftype="tabular"/>
108114
</test>
109115
<test expect_num_outputs="1"><!-- TEST 2 -->
110-
<param name="data" value="input_data.tsv" ftype="tsv"/>
111-
<param name="mode" value="batchwise"/>
112-
<param name="wavelet_filter" value="d"/>
113-
<param name="wavelet_length" value="2"/>
114-
<param name="k" value="20"/>
115-
<param name="t" value="0.05"/>
116-
<param name="t2" value="0.05"/>
116+
<conditional name="input_num">
117+
<param name="data" value="input_data.tsv" ftype="tsv"/>
118+
</conditional>
117119
<param name="alpha" value="0"/>
120+
<param name="k" value="20"/>
121+
<conditional name="wf">
122+
<param name="wavelet_filter" value="d"/>
123+
<param name="wavelet_length" value="2"/>
124+
</conditional>
125+
<conditional name="batch_correction">
126+
<param name="mode" value="batchwise"/>
127+
<param name="t" value="0.05"/>
128+
<param name="t2" value="0.05"/>
129+
</conditional>
118130
<output name="normalized_data" file="normalized_data.tsv" ftype="tabular"/>
119131
</test>
120132
<test expect_num_outputs="1"><!-- TEST 3 -->
121-
<param name="data" value="input_data.parquet" ftype="parquet"/>
122-
<param name="mode" value="batchwise"/>
123-
<param name="wavelet_filter" value="d"/>
124-
<param name="wavelet_length" value="2"/>
133+
<conditional name="input_num">
134+
<param name="data" value="input_data.parquet" ftype="parquet"/>
135+
</conditional>
125136
<param name="k" value="20"/>
126-
<param name="t" value="0.05"/>
127-
<param name="t2" value="0.05"/>
128137
<param name="alpha" value="0"/>
138+
<conditional name="wf">
139+
<param name="wavelet_filter" value="d"/>
140+
<param name="wavelet_length" value="2"/>
141+
</conditional>
142+
<conditional name="batch_correction">
143+
<param name="mode" value="batchwise"/>
144+
<param name="t" value="0.05"/>
145+
<param name="t2" value="0.05"/>
146+
</conditional>
129147
<output name="normalized_data" file="normalized_data.parquet" ftype="parquet"/>
130148
</test>
131149
<test expect_num_outputs="1"><!-- TEST 4 -->
132-
<param name="input_choice" value="2"/>
133-
<param name="data" value="feature_table.csv" ftype="csv"/>
134-
<param name="metadata" value="metadata.csv" ftype="csv"/>
135-
<param name="mode" value="batchwise"/>
136-
<param name="wavelet_filter" value="d"/>
137-
<param name="wavelet_length" value="2"/>
138-
<param name="k" value="20"/>
139-
<param name="t" value="0.05"/>
140-
<param name="t2" value="0.05"/>
150+
<conditional name="input_num">
151+
<param name="input_choice" value="2"/>
152+
<param name="data" value="feature_table.csv" ftype="csv"/>
153+
<param name="metadata" value="metadata.csv" ftype="csv"/>
154+
</conditional>
141155
<param name="alpha" value="0"/>
156+
<param name="k" value="20"/>
157+
<conditional name="wf">
158+
<param name="wavelet_filter" value="d"/>
159+
<param name="wavelet_length" value="2"/>
160+
</conditional>
161+
<conditional name="batch_correction">
162+
<param name="mode" value="batchwise"/>
163+
<param name="t" value="0.05"/>
164+
<param name="t2" value="0.05"/>
165+
</conditional>
142166
<output name="normalized_data" file="normalized_data.tsv" ftype="tabular"/>
143167
</test>
144168
<test expect_num_outputs="1"><!-- TEST 5 -->
145-
<param name="input_choice" value="2"/>
146-
<param name="data" value="feature_table.tsv" ftype="tsv"/>
147-
<param name="metadata" value="metadata.tsv" ftype="tsv"/>
148-
<param name="mode" value="batchwise"/>
149-
<param name="wavelet_filter" value="d"/>
150-
<param name="wavelet_length" value="2"/>
151-
<param name="k" value="20"/>
152-
<param name="t" value="0.05"/>
153-
<param name="t2" value="0.05"/>
154-
<param name="alpha" value="0"/>
169+
<conditional name="input_num">
170+
<param name="input_choice" value="2"/>
171+
<param name="data" value="feature_table.tsv" ftype="tabular"/>
172+
<param name="metadata" value="metadata.tsv" ftype="tabular"/>
173+
</conditional>
155174
<output name="normalized_data" file="normalized_data.tsv" ftype="tabular"/>
156175
</test>
157176
<test expect_num_outputs="1"><!-- TEST 6 -->
158-
<param name="input_choice" value="2"/>
159-
<param name="data" value="feature_table.parquet" ftype="parquet"/>
160-
<param name="metadata" value="metadata.csv" ftype="csv"/>
161-
<param name="mode" value="batchwise"/>
162-
<param name="wavelet_filter" value="d"/>
163-
<param name="wavelet_length" value="2"/>
164-
<param name="k" value="20"/>
165-
<param name="t" value="0.05"/>
166-
<param name="t2" value="0.05"/>
167-
<param name="alpha" value="0"/>
177+
<conditional name="input_num">
178+
<param name="input_choice" value="2"/>
179+
<param name="data" value="feature_table.parquet" ftype="parquet"/>
180+
<param name="metadata" value="metadata.csv" ftype="csv"/>
181+
</conditional>
168182
<output name="normalized_data" file="normalized_data.parquet" compare="sim_size" delta="200" ftype="parquet"/>
169183
</test>
170184
<test expect_num_outputs="1"><!-- TEST 7 -->
171-
<param name="input_choice" value="2"/>
172-
<param name="data" value="feature_table_transpose_version.parquet" ftype="parquet"/>
173-
<param name="metadata" value="metadata.parquet" ftype="parquet"/>
174-
<param name="transpose_feature_table" value="TRUE"/>
175-
<param name="mode" value="batchwise"/>
176-
<param name="wavelet_filter" value="d"/>
177-
<param name="wavelet_length" value="2"/>
178-
<param name="k" value="20"/>
179-
<param name="t" value="0.05"/>
180-
<param name="t2" value="0.05"/>
181-
<param name="alpha" value="0"/>
185+
<conditional name="input_num">
186+
<param name="input_choice" value="2"/>
187+
<param name="data" value="feature_table_transpose_version.parquet" ftype="parquet"/>
188+
<param name="metadata" value="metadata.parquet" ftype="parquet"/>
189+
<param name="transpose_feature_table" value="TRUE"/>
190+
</conditional>
182191
<output name="normalized_data" file="normalized_data.parquet" compare="sim_size" delta="200" ftype="parquet"/>
183192
</test>
184193
<test expect_num_outputs="1"><!-- TEST 8 -->
185-
<param name="input_choice" value="2"/>
186-
<param name="data" value="feature_table_transpose_version.csv" ftype="csv"/>
187-
<param name="metadata" value="metadata.csv" ftype="csv"/>
188-
<param name="transpose_feature_table" value="TRUE"/>
189-
<param name="mode" value="batchwise"/>
190-
<param name="wavelet_filter" value="d"/>
191-
<param name="wavelet_length" value="2"/>
192-
<param name="k" value="20"/>
193-
<param name="t" value="0.05"/>
194-
<param name="t2" value="0.05"/>
195-
<param name="alpha" value="0"/>
194+
<conditional name="input_num">
195+
<param name="input_choice" value="2"/>
196+
<param name="data" value="feature_table_transpose_version.csv" ftype="csv"/>
197+
<param name="metadata" value="metadata.csv" ftype="csv"/>
198+
<param name="transpose_feature_table" value="TRUE"/>
199+
</conditional>
196200
<output name="normalized_data" file="normalized_data.tsv" ftype="tabular"/>
197201
</test>
198-
<!-- The following test has different results on three platform I've tried -->
199-
<!-- <test>
200-
<param name="data" value="input_data_nobatch.csv" ftype="csv"/>
201-
<param name="mode" value="single_batch"/>
202-
<param name="wavelet_filter" value="d"/>
203-
<param name="filter_length" value="2"/>
204-
<param name="k" value="20"/>
205-
<param name="alpha" value="0"/>
206-
<param name="cutoff" value="0"/>
207-
<output name="normalized_data" file="normalized_data_nobatch.tsv"/>
208-
</test> -->
209202
<test expect_num_outputs="2"><!-- TEST 9 -->
210-
<param name="input_choice" value="2"/>
211-
<param name="data" value="feature_table_transpose_version.parquet" ftype="parquet"/>
212-
<param name="metadata" value="metadata.parquet" ftype="parquet"/>
213-
<param name="transpose_feature_table" value="TRUE"/>
214-
<param name="mode" value="batchwise"/>
215-
<param name="wavelet_filter" value="d"/>
216-
<param name="wavelet_length" value="2"/>
217-
<param name="k" value="20"/>
218-
<param name="t" value="0.05"/>
219-
<param name="t2" value="0.05"/>
220-
<param name="alpha" value="0"/>
203+
<conditional name="input_num">
204+
<param name="input_choice" value="2"/>
205+
<param name="data" value="feature_table_transpose_version.parquet" ftype="parquet"/>
206+
<param name="metadata" value="metadata.parquet" ftype="parquet"/>
207+
<param name="transpose_feature_table" value="TRUE"/>
208+
</conditional>
221209
<param name="keep_two_output" value="TRUE"/>
222210
<output name="normalized_data" file="test9_output1.parquet" ftype="parquet"/>
223211
<output name="metadata" file="test9_output2.parquet" ftype="parquet"/>
224212
</test>
225213
<test expect_num_outputs="2"><!-- TEST 10 -->
226-
<param name="input_choice" value="2"/>
227-
<param name="data" value="feature_table_transpose_version.csv" ftype="csv"/>
228-
<param name="metadata" value="metadata.csv" ftype="csv"/>
229-
<param name="transpose_feature_table" value="TRUE"/>
230-
<param name="mode" value="batchwise"/>
231-
<param name="wavelet_filter" value="d"/>
232-
<param name="wavelet_length" value="2"/>
233-
<param name="k" value="20"/>
234-
<param name="t" value="0.05"/>
235-
<param name="t2" value="0.05"/>
236-
<param name="alpha" value="0"/>
214+
<conditional name="input_num">
215+
<param name="input_choice" value="2"/>
216+
<param name="data" value="feature_table_transpose_version.csv" ftype="csv"/>
217+
<param name="metadata" value="metadata.csv" ftype="csv"/>
218+
<param name="transpose_feature_table" value="TRUE"/>
219+
</conditional>
237220
<param name="keep_two_output" value="TRUE"/>
238221
<output name="normalized_data" file="test10_output1.tsv" ftype="tabular"/>
239222
<output name="metadata" file="test10_output2.tsv" ftype="tabular"/>
240223
</test>
241224
<test expect_failure="true"><!-- TEST 11 -->
242-
<param name="data" value="na_data.csv" ftype="csv"/>
225+
<conditional name="input_num">
226+
<param name="data" value="na_data.csv" ftype="csv"/>
227+
</conditional>
243228
</test>
244229
<test expect_failure="true"><!-- TEST 12 -->
245-
<param name="data" value="incomplete_metadata_data.csv" ftype="csv"/>
230+
<conditional name="input_num">
231+
<param name="data" value="incomplete_metadata_data.csv" ftype="csv"/>
232+
</conditional>
246233
</test>
247234
</tests>
248235

tools/waveica/waveica_wrapper.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ read_file <- function(file, metadata, ft_ext, mt_ext, transpose) {
1717
read_data <- function(file, ext) {
1818
if (ext == "csv") {
1919
data <- read.csv(file, header = TRUE)
20-
} else if (ext == "tsv") {
20+
} else if (ext == "tsv" || ext == "tabular") {
2121
data <- read.csv(file, header = TRUE, sep = "\t")
2222
} else {
2323
data <- arrow::read_parquet(file)

0 commit comments

Comments
 (0)