File: test-multi_intersect.sh

package info (click to toggle)
bedtools 2.26.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 55,328 kB
  • sloc: cpp: 37,989; sh: 6,930; makefile: 2,225; python: 163
file content (404 lines) | stat: -rw-r--r-- 12,010 bytes parent folder | download
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
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
echo -e \
"\n###########################################################
#  
#  MULTIPLE DATABASE INTERSECTION
#
###########################################################\n"


BT=${BT-../../../bin/bedtools}

check()
{
	if diff $1 $2; then
    	echo ok
	else
    	echo fail
	fi
}

###########################################################
#  Test the intersection of a query with 3 dbs against 
#  the merged and sorted result of 3 
#  seperate intersections of the query with each db.
#
#  First make sure the 3 seperate intersections are correct.
#
############################################################
echo "    intersect.t01...\c"
echo \
"chr1	5	20
chr1	70	75
chr2	5	20
chr2	70	75
chr3	5	20
chr3	70	75" > exp1 
$BT intersect -a query.bed -b d1.bed > obs
check obs exp1
rm obs

echo "    intersect.t02...\c"
echo \
"chr1	40	45
chr1	110	120
chr2	40	45
chr2	110	120
chr3	40	45
chr3	110	120" > exp2
$BT intersect -a query.bed -b d2.bed > obs
check obs exp2
rm obs

echo "    intersect.t03...\c"
echo \
"chr1	85	90
chr1	105	115
chr2	85	90
chr2	105	115
chr3	85	90
chr3	105	115" > exp3
$BT intersect -a query.bed -b d3.bed > obs
check obs exp3
rm obs

###########################################################
#  Now test that the R-tree (unsorted input) with sorted
#  output will give the correct result
###########################################################
echo "    intersect.t04...\c"
cat exp1 exp2 exp3 | sort -k1,1 -k2,2n > exp
$BT intersect -a query.bed -b d1.bed d2.bed d3.bed -sortout > obs
check exp obs
rm obs exp1 exp2 exp3


###########################################################
#  And then test that sorted input with sorted
#  output will give the correct result
###########################################################
echo "    intersect.t05...\c"
$BT intersect -a query.bed -b d1.bed d2.bed d3.bed -sorted -sortout > obs
check exp obs
rm obs exp


###########################################################
# 
#  Now repeat the above with chroms in a non-standard order
#
###########################################################

echo "    intersect.t06...\c"
echo \
"chr1	5	20
chr1	70	75
chr2	5	20
chr2	70	75
chr10	5	20
chr10	70	75" > exp1 
$BT intersect -a query2.bed -b d4.bed > obs
check obs exp1
rm obs

echo "    intersect.t07...\c"
echo \
"chr1	40	45
chr1	110	120
chr2	40	45
chr2	110	120
chr10	40	45
chr10	110	120" > exp2
$BT intersect -a query2.bed -b d5.bed > obs
check obs exp2
rm obs

echo "    intersect.t08...\c"
echo \
"chr1	85	90
chr1	105	115
chr2	85	90
chr2	105	115
chr10	85	90
chr10	105	115" > exp3
$BT intersect -a query2.bed -b d6.bed > obs
check obs exp3
rm obs

###########################################################
#  Now test that the R-tree (unsorted input) with sorted
#  output will give the correct result
###########################################################
echo "    intersect.t09...\c"
cat exp1 exp2 exp3 | sort -k1.4,1n -k2,2n > exp
$BT intersect -a query2.bed -b d4.bed d5.bed d6.bed -g g.bed -sortout > obs
check exp obs
rm obs exp1 exp2 exp3


###########################################################
#  And then test that sorted input with sorted
#  output will give the correct result
###########################################################
echo "    intersect.t10...\c"
$BT intersect -a query2.bed -b d4.bed d5.bed d6.bed -sorted -g g.bed -sortout > obs
check exp obs
rm obs exp



###########################################################
# 
# TEST VARIOUS CMD LINE OUTPUT OPTIONS
#
###########################################################


###########################################################
#  Test -c option
###########################################################
echo "    intersect.t11...\c"
echo \
"chr1	1	20	1
chr1	40	45	1
chr1	70	90	2
chr1	105	120	2
chr2	1	20	1
chr2	40	45	1
chr2	70	90	2
chr2	105	120	2
chr3	1	20	1
chr3	40	45	1
chr3	70	90	2
chr3	105	120	2" > exp
$BT intersect -a query.bed -b d1.bed d2.bed d3.bed -c -sorted -sortout > obs
check exp obs
rm exp obs


###########################################################
#  Test -f option
###########################################################
echo "    intersect.t12...\c"
echo \
"chr1	5	20
chr1	40	45
chr1	110	120
chr1	105	115
chr2	5	20
chr2	40	45
chr2	110	120
chr2	105	115
chr3	5	20
chr3	40	45
chr3	110	120
chr3	105	115" > exp
$BT intersect -a query.bed -b d1.bed d2.bed d3.bed -f .6 > obs
check exp obs


###########################################################
#  Test -s option
###########################################################
echo "    intersect.t13...\c"
echo \
"chr1	5	20	q1	100	+
chr1	85	90	q3	100	+
chr1	110	120	q4	100	+
chr1	105	115	q4	100	+
chr3	5	20	q9	100	+
chr3	85	90	q11	100	+
chr3	110	120	q12	100	+
chr3	105	115	q12	100	+" > exp
$BT intersect -a query3.bed -b d7.bed d8.bed d9.bed -s > obs
check exp obs
rm exp obs


###########################################################
#  Test -s option
###########################################################
echo "    intersect.t13...\c"
echo \
"chr1	40	45	q2	100	+
chr1	70	75	q3	100	+
chr2	5	20	q5	100	+
chr2	40	45	q6	100	+
chr2	85	90	q7	100	+
chr2	105	115	q8	100	+
chr3	40	45	q10	100	+
chr3	70	75	q11	100	+" > exp
$BT intersect -a query3.bed -b d7.bed d8.bed d9.bed -S > obs
check exp obs
rm exp obs


###########################################################
#  Test -wo option
###########################################################
echo "    intersect.t14...\c"
echo \
"chr1	1	20	1	chr1	5	25	15
chr1	40	45	2	chr1	40	50	5
chr1	70	90	1	chr1	65	75	5
chr1	70	90	3	chr1	85	115	5
chr1	105	120	2	chr1	110	125	10
chr1	105	120	3	chr1	85	115	10
chr2	1	20	1	chr2	5	25	15
chr2	40	45	2	chr2	40	50	5
chr2	70	90	1	chr2	65	75	5
chr2	70	90	3	chr2	85	115	5
chr2	105	120	2	chr2	110	125	10
chr2	105	120	3	chr2	85	115	10
chr3	1	20	1	chr3	5	25	15
chr3	40	45	2	chr3	40	50	5
chr3	70	90	1	chr3	65	75	5
chr3	70	90	3	chr3	85	115	5
chr3	105	120	2	chr3	110	125	10
chr3	105	120	3	chr3	85	115	10" > exp
$BT intersect -a query.bed -b d1.bed d2.bed d3.bed -wo > obs
check exp obs
rm exp obs



###########################################################
#  Test -wa -wb -header option
###########################################################
echo "    intersect.t15...\c"
echo \
"# Query 3 Header Line.
chr1	1	20	q1	100	+	1	chr1	5	25	d7_1	100	+
chr1	40	45	q2	100	+	2	chr1	40	50	d8_1	100	-
chr1	70	90	q3	100	+	1	chr1	65	75	d7_2	100	-
chr1	70	90	q3	100	+	3	chr1	85	115	d9_1	100	+
chr1	105	120	q4	100	+	2	chr1	110	125	d8_2	100	+
chr1	105	120	q4	100	+	3	chr1	85	115	d9_1	100	+
chr2	1	20	q5	100	+	1	chr2	5	25	d7_4	100	-
chr2	40	45	q6	100	+	2	chr2	40	50	d8_3	100	-
chr2	70	90	q7	100	+	1	chr2	65	75	d7_5	100	.
chr2	70	90	q7	100	+	3	chr2	85	115	d9_1	100	-
chr2	105	120	q8	100	+	2	chr2	110	125	d8_4	100	.
chr2	105	120	q8	100	+	3	chr2	85	115	d9_1	100	-
chr3	1	20	q9	100	+	1	chr3	5	25	d7_7	100	+
chr3	40	45	q10	100	+	2	chr3	40	50	d8_5	100	-
chr3	70	90	q11	100	+	1	chr3	65	75	d7_8	100	-
chr3	70	90	q11	100	+	3	chr3	85	115	d9_1	100	+
chr3	105	120	q12	100	+	2	chr3	110	125	d8_6	100	+
chr3	105	120	q12	100	+	3	chr3	85	115	d9_1	100	+" > exp
$BT intersect -a query3.bed -b d7.bed d8.bed d9.bed -wa -wb -header > obs
check exp obs
rm exp obs



###########################################################
#  Test the -filenames option, before db listing
###########################################################
echo "    intersect.t16...\c"
echo \
"chr1	1	20	q1	100	+	d7.bed	chr1	5	25	d7_1	100	+
chr1	40	45	q2	100	+	d8.bed	chr1	40	50	d8_1	100	-
chr1	70	90	q3	100	+	d7.bed	chr1	65	75	d7_2	100	-
chr1	70	90	q3	100	+	d9.bed	chr1	85	115	d9_1	100	+
chr1	105	120	q4	100	+	d8.bed	chr1	110	125	d8_2	100	+
chr1	105	120	q4	100	+	d9.bed	chr1	85	115	d9_1	100	+
chr2	1	20	q5	100	+	d7.bed	chr2	5	25	d7_4	100	-
chr2	40	45	q6	100	+	d8.bed	chr2	40	50	d8_3	100	-
chr2	70	90	q7	100	+	d7.bed	chr2	65	75	d7_5	100	.
chr2	70	90	q7	100	+	d9.bed	chr2	85	115	d9_1	100	-
chr2	105	120	q8	100	+	d8.bed	chr2	110	125	d8_4	100	.
chr2	105	120	q8	100	+	d9.bed	chr2	85	115	d9_1	100	-
chr3	1	20	q9	100	+	d7.bed	chr3	5	25	d7_7	100	+
chr3	40	45	q10	100	+	d8.bed	chr3	40	50	d8_5	100	-
chr3	70	90	q11	100	+	d7.bed	chr3	65	75	d7_8	100	-
chr3	70	90	q11	100	+	d9.bed	chr3	85	115	d9_1	100	+
chr3	105	120	q12	100	+	d8.bed	chr3	110	125	d8_6	100	+
chr3	105	120	q12	100	+	d9.bed	chr3	85	115	d9_1	100	+" > exp
$BT intersect -a query3.bed -filenames -b d7.bed d8.bed d9.bed -wa -wb > obs
check exp obs
rm exp obs

###########################################################
#  Test the -filenames option, after db listing
###########################################################
echo "    intersect.t17...\c"
echo \
"chr1	1	20	q1	100	+	d7.bed	chr1	5	25	d7_1	100	+
chr1	40	45	q2	100	+	d8.bed	chr1	40	50	d8_1	100	-
chr1	70	90	q3	100	+	d7.bed	chr1	65	75	d7_2	100	-
chr1	70	90	q3	100	+	d9.bed	chr1	85	115	d9_1	100	+
chr1	105	120	q4	100	+	d8.bed	chr1	110	125	d8_2	100	+
chr1	105	120	q4	100	+	d9.bed	chr1	85	115	d9_1	100	+
chr2	1	20	q5	100	+	d7.bed	chr2	5	25	d7_4	100	-
chr2	40	45	q6	100	+	d8.bed	chr2	40	50	d8_3	100	-
chr2	70	90	q7	100	+	d7.bed	chr2	65	75	d7_5	100	.
chr2	70	90	q7	100	+	d9.bed	chr2	85	115	d9_1	100	-
chr2	105	120	q8	100	+	d8.bed	chr2	110	125	d8_4	100	.
chr2	105	120	q8	100	+	d9.bed	chr2	85	115	d9_1	100	-
chr3	1	20	q9	100	+	d7.bed	chr3	5	25	d7_7	100	+
chr3	40	45	q10	100	+	d8.bed	chr3	40	50	d8_5	100	-
chr3	70	90	q11	100	+	d7.bed	chr3	65	75	d7_8	100	-
chr3	70	90	q11	100	+	d9.bed	chr3	85	115	d9_1	100	+
chr3	105	120	q12	100	+	d8.bed	chr3	110	125	d8_6	100	+
chr3	105	120	q12	100	+	d9.bed	chr3	85	115	d9_1	100	+" > exp
$BT intersect -a query3.bed -b d7.bed d8.bed d9.bed -filenames -wa -wb > obs
check exp obs
rm exp obs


###########################################################
#  Test the -names option, before db listing
###########################################################
echo "    intersect.t18...\c"
echo \
"chr1	1	20	q1	100	+	blue	chr1	5	25	d7_1	100	+
chr1	40	45	q2	100	+	red	chr1	40	50	d8_1	100	-
chr1	70	90	q3	100	+	blue	chr1	65	75	d7_2	100	-
chr1	70	90	q3	100	+	green	chr1	85	115	d9_1	100	+
chr1	105	120	q4	100	+	red	chr1	110	125	d8_2	100	+
chr1	105	120	q4	100	+	green	chr1	85	115	d9_1	100	+
chr2	1	20	q5	100	+	blue	chr2	5	25	d7_4	100	-
chr2	40	45	q6	100	+	red	chr2	40	50	d8_3	100	-
chr2	70	90	q7	100	+	blue	chr2	65	75	d7_5	100	.
chr2	70	90	q7	100	+	green	chr2	85	115	d9_1	100	-
chr2	105	120	q8	100	+	red	chr2	110	125	d8_4	100	.
chr2	105	120	q8	100	+	green	chr2	85	115	d9_1	100	-
chr3	1	20	q9	100	+	blue	chr3	5	25	d7_7	100	+
chr3	40	45	q10	100	+	red	chr3	40	50	d8_5	100	-
chr3	70	90	q11	100	+	blue	chr3	65	75	d7_8	100	-
chr3	70	90	q11	100	+	green	chr3	85	115	d9_1	100	+
chr3	105	120	q12	100	+	red	chr3	110	125	d8_6	100	+
chr3	105	120	q12	100	+	green	chr3	85	115	d9_1	100	+" > exp
$BT intersect -a query3.bed -names blue red green -b d7.bed d8.bed d9.bed -wa -wb > obs
check exp obs
rm exp obs

###########################################################
#  Test the -names option, after db listing
###########################################################
echo "    intersect.t19...\c"
echo \
"chr1	1	20	q1	100	+	blue	chr1	5	25	d7_1	100	+
chr1	40	45	q2	100	+	red	chr1	40	50	d8_1	100	-
chr1	70	90	q3	100	+	blue	chr1	65	75	d7_2	100	-
chr1	70	90	q3	100	+	green	chr1	85	115	d9_1	100	+
chr1	105	120	q4	100	+	red	chr1	110	125	d8_2	100	+
chr1	105	120	q4	100	+	green	chr1	85	115	d9_1	100	+
chr2	1	20	q5	100	+	blue	chr2	5	25	d7_4	100	-
chr2	40	45	q6	100	+	red	chr2	40	50	d8_3	100	-
chr2	70	90	q7	100	+	blue	chr2	65	75	d7_5	100	.
chr2	70	90	q7	100	+	green	chr2	85	115	d9_1	100	-
chr2	105	120	q8	100	+	red	chr2	110	125	d8_4	100	.
chr2	105	120	q8	100	+	green	chr2	85	115	d9_1	100	-
chr3	1	20	q9	100	+	blue	chr3	5	25	d7_7	100	+
chr3	40	45	q10	100	+	red	chr3	40	50	d8_5	100	-
chr3	70	90	q11	100	+	blue	chr3	65	75	d7_8	100	-
chr3	70	90	q11	100	+	green	chr3	85	115	d9_1	100	+
chr3	105	120	q12	100	+	red	chr3	110	125	d8_6	100	+
chr3	105	120	q12	100	+	green	chr3	85	115	d9_1	100	+" > exp
$BT intersect -a query3.bed -b d7.bed d8.bed d9.bed -names blue red green -wa -wb > obs
check exp obs
rm exp obs