forked from arq5x/bedtools-galaxy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
multiIntersectBed.xml
200 lines (151 loc) · 6.89 KB
/
multiIntersectBed.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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
<tool id="bedtools_multiintersectbed" name="Intersect" version="2.18.2.0">
<description>multiple sorted BED files</description>
<requirements>
<requirement type="package" version="2.18.2">bedtools2</requirement>
</requirements>
<version_command>bedtools --version</version_command>
<command>multiIntersectBed
$header
#if $zero.value == True:
-empty
-g ${chromInfo}
#end if
-i '$input1'
'$input2'
#for $q in $beds
'${q.input}'
#end for
-names
#if $name1.choice == "tag":
'${input1.name}'
#else
'${name1.custom_name}'
#end if
#if $name2.choice == "tag":
'${input2.name}'
#else
'${name2.custom_name}'
#end if
#for $q in $beds
#if $q.name.choice == "tag":
'${q.input.name}'
#else
'${q.input.custom_name}'
#end if
#end for
> '$output'
</command>
<inputs>
<!-- Make it easy for the user, first two input files are always shown -->
<!-- INPUT 1 -->
<param name="input1" format="bed" type="data" label="First sorted BED file" />
<conditional name="name1">
<param name="choice" type="select" label="Sample name">
<option value="tag" selected="true">Use input's tag</option>
<option value="custom">Enter custom table name</option>
</param>
<when value="tag">
</when>
<when value="custom">
<param name="custom_name" type="text" area="false" label="Custom sample name"/>
</when>
</conditional>
<!-- INPUT 2 -->
<param name="input2" format="bed" type="data" label="Second sorted BED file" />
<conditional name="name2">
<param name="choice" type="select" label="Sample name">
<option value="tag" selected="true">Use input's tag</option>
<option value="custom">Enter custom table name</option>
</param>
<when value="tag">
</when>
<when value="custom">
<param name="custom_name" type="text" area="false" label="Custom sample name"/>
</when>
</conditional>
<!-- Additional files, if the user needs more -->
<repeat name="beds" title="Add'l sorted BED files" >
<param name="input" format="bed" type="data" label="BED file" />
<conditional name="name">
<param name="choice" type="select" label="Sample name">
<option value="tag" selected="true">Use input's tag</option>
<option value="custom">Enter custom table name</option>
</param>
<when value="tag">
</when>
<when value="custom">
<param name="custom_name" type="text" area="false" label="Custom sample name"/>
</when>
</conditional>
</repeat>
<param name="header" type="boolean" checked="true" truevalue="-header" falsevalue="" label="Print header line" help="The first line will include the name of each sample." />
<param name="zero" type="boolean" checked="true" label="Report regions that are not covered by any of the files" help="If set, regions that are not overlapped by any file will also be reported. Requires a valid organism key for all input datasets" />
</inputs>
<outputs>
<data format="tabular" name="output" metadata_source="input1" label="Common intervals identified from among ${input1.name}, ${input2.name} and so on." />
</outputs>
<help>
**What it does**
This tool identifies common intervals among multiple, sorted BED files. Intervals can be common among 0 to N of the N input BED files. The pictorial and raw data examples below illustrate the behavior of this tool more clearly.
.. image:: http://people.virginia.edu/~arq5x/files/bedtools-galaxy/mbi.png
.. class:: warningmark
This tool requires that each BED file is reference-sorted (chrom, then start).
.. class:: infomark
The output file will contain five fixed columns, plus additional columns for each BED file:
* 1. Chromosome name (or 'genome' for whole-genome coverage).
* 2. The zero-based start position of the interval.
* 3. The one-based end position of the interval.
* 4. The number of input files that had at least one feature overlapping this interval.
* 5. A list of input files or labels that had at least one feature overlapping this interval.
* 6. For each input file, an indication (1 = Yes, 0 = No) of whether or not the file had at least one feature overlapping this interval.
------
**Example input**::
# a.bed
chr1 6 12
chr1 10 20
chr1 22 27
chr1 24 30
# b.bed
chr1 12 32
chr1 14 30
# c.bed
chr1 8 15
chr1 10 14
chr1 32 34
------
**Example without a header and without reporting intervals with zero coverage**::
chr1 6 8 1 1 1 0 0
chr1 8 12 2 1,3 1 0 1
chr1 12 15 3 1,2,3 1 1 1
chr1 15 20 2 1,2 1 1 0
chr1 20 22 1 2 0 1 0
chr1 22 30 2 1,2 1 1 0
chr1 30 32 1 2 0 1 0
chr1 32 34 1 3 0 0 1
**Example adding a header line**::
chrom start end num list a.bed b.bed c.bed
chr1 6 8 1 1 1 0 0
chr1 8 12 2 1,3 1 0 1
chr1 12 15 3 1,2,3 1 1 1
chr1 15 20 2 1,2 1 1 0
chr1 20 22 1 2 0 1 0
chr1 22 30 2 1,2 1 1 0
chr1 30 32 1 2 0 1 0
chr1 32 34 1 3 0 0 1
**Example adding a header line and custom file labels**::
chrom start end num list joe bob sue
chr1 6 8 1 joe 1 0 0
chr1 8 12 2 joe,sue 1 0 1
chr1 12 15 3 joe,bob,sue 1 1 1
chr1 15 20 2 joe,bob 1 1 0
chr1 20 22 1 bob 0 1 0
chr1 22 30 2 joe,bob 1 1 0
chr1 30 32 1 bob 0 1 0
chr1 32 34 1 sue 0 0 1
-----
This tool is part of the `bedtools package`__ from the `Quinlan laboratory`__. If you use this tool, please cite `Quinlan AR, and Hall I.M. BEDTools: A flexible framework for comparing genomic features. Bioinformatics, 2010, 26, 6.`__
.. __: http://code.google.com/p/bedtools/
.. __: http://cphg.virginia.edu/quinlan/
.. __: http://bioinformatics.oxfordjournals.org/content/26/6/841.short
</help>
</tool>