-
Notifications
You must be signed in to change notification settings - Fork 92
/
lca.xml
100 lines (78 loc) · 5.19 KB
/
lca.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<tool id="lca1" name="Find lowest diagnostic rank" version="1.0.1">
<description></description>
<requirements>
<requirement type="package" version="1.0.0">taxonomy</requirement>
</requirements>
<command interpreter="python">
lca.py $input1 $out_file1 $rank_bound
</command>
<inputs>
<param format="taxonomy" name="input1" type="data" label="for taxonomy dataset"/>
<param name="rank_bound" label="require the lowest rank to be at least" type="select">
<option value="0">No restriction</option>
<option value="3">Superkingdom</option>
<option value="4">Kingdom</option>
<option value="5">Subkingdom</option>
<option value="6">Superphylum</option>
<option value="7">Phylum</option>
<option value="8">Subphylum</option>
<option value="9">Superclass</option>
<option value="10">Class</option>
<option value="11">Subclass</option>
<option value="12">Superorder</option>
<option value="13">Order</option>
<option value="14">Suborder</option>
<option value="15">Superfamily</option>
<option value="16">Family</option>
<option value="17">Subfamily</option>
<option value="18">Tribe</option>
<option value="19">Subtribe</option>
<option value="20">Genus</option>
<option value="21">Subgenus</option>
<option value="22">Species</option>
<option value="23">Subspecies</option>
</param>
</inputs>
<outputs>
<data format="taxonomy" name="out_file1" metadata_source="input1" />
</outputs>
<tests>
<test>
<param name="input1" value="lca_input.taxonomy" ftype="taxonomy"/>
<param name="rank_bound" value="0" />
<output name="out_file1" file="lca_output.taxonomy" ftype="taxonomy"/>
</test>
<test>
<param name="input1" value="lca_input2.taxonomy" ftype="taxonomy"/>
<param name="rank_bound" value="7" />
<output name="out_file1" file="lca_output2.taxonomy" ftype="taxonomy"/>
</test>
<!--Test case with invalid lines -->
<test>
<param name="input1" value="lca_input3.taxonomy" ftype="taxonomy"/>
<param name="rank_bound" value="10" />
<output name="out_file1" file="lca_output3.taxonomy" ftype="taxonomy"/>
</test>
</tests>
<help>
**What it does**
This tool identifies the lowest taxonomic rank for which a mategenomic sequencing read is diagnostic. It takes datasets produced by *Fetch Taxonomic Ranks* tool (aka Taxonomy format) as the input.
-------
**Example**
Suppose you have two reads, **read_1** and **read_2**, with the following taxonomic profiles (scroll sideways to see the entire dataset)::
read_1 1 root superkingdom1 kingdom1 subkingdom1 superphylum1 phylum1 subphylum1 superclass1 class1 subclass1 superorder1 order1 suborder1 superfamily1 family1 subfamily1 tribe1 subtribe1 genus1 subgenus1 species1 subspecies1
read_1 2 root superkingdom1 kingdom1 subkingdom1 superphylum1 phylum1 subphylum1 superclass1 class1 subclass1 superorder1 order1 suborder1 superfamily1 family1 subfamily1 tribe1 subtribe1 genus2 subgenus2 species2 subspecies2
read_2 3 root superkingdom1 kingdom1 subkingdom1 superphylum1 phylum3 subphylum3 superclass3 class3 subclass3 superorder3 order3 suborder3 superfamily3 family3 subfamily3 tribe3 subtribe3 genus3 subgenus3 species3 subspecies3
read_2 4 root superkingdom1 kingdom1 subkingdom1 superphylum1 phylum4 subphylum4 superclass4 class4 subclass4 superorder4 order4 suborder4 superfamily4 family4 subfamily4 tribe4 subtribe4 genus4 subgenus4 species4 subspecies4
For **read_1** taxonomic labels are consistent until the genus level, where the taxonomy splits into two branches, one ending with *subspecies1* and the other with *subspecies2*. This implies **that the lowest taxomomic rank read_1 can identify is SUBTRIBE**. Similarly, read_2 is diagnostic up until the **superphylum** level. As a results the output of this tool will be::
read_1 2 root superkingdom1 kingdom1 subkingdom1 superphylum1 phylum1 subphylum1 superclass1 class1 subclass1 superorder1 order1 suborder1 superfamily1 family1 subfamily1 tribe1 subtribe1 n n n n
read_2 3 root superkingdom1 kingdom1 subkingdom1 superphylum1 n n n n n n n n n n n n n n n n n
where, **n** means *EMPTY*.
--------
**What's up with the drop down?**
Why do we need the *require the lowest rank to be at least* dropdown? Let's look at the above example again. Suppose you need to find only those reads that are diagnostic on at least phylum level. To do this you need to set the *require the lowest rank to be at least* to **phylum**. As a result your output will look like this::
read_1 2 root superkingdom1 kingdom1 subkingdom1 superphylum1 phylum1 subphylum1 superclass1 class1 subclass1 superorder1 order1 suborder1 superfamily1 family1 subfamily1 tribe1 subtribe1 n n n n
.. class:: infomark
Note, that **read_2** is now omitted as it matches two phyla (**phylum3** and **phylum4**) and therefore is not diagnostic (but rather cosmopolitan) on *phylum* level.
</help>
</tool>