1set -e;
2BT=${BT-../../bin/bedtools}
3FAILURES=0;
4
5check()
6{
7	if diff $1 $2; then
8    	echo ok
9
10	else
11    	FAILURES=$(expr $FAILURES + 1);
12		echo fail
13
14	fi
15}
16
17
18###########################################################
19# test basic shuffle
20###########################################################
21echo -e "    shuffle.t1...\c"
22echo \
23"chr3	192943497	192943965	trf	789
24chr4	13668420	13668593	trf	346
25chr1	114076345	114076585	trf	434
26chr13	99270316	99270538	trf	273
27chr7	64692734	64692911	trf	187
28chr3	160795229	160795394	trf	199
29chr11	112718526	112718664	trf	242
30chr10	84388736	84388771	trf	70
31chr15	74373271	74373368	trf	79
32chr7	100517230	100517271	trf	73" > exp
33$BT shuffle -seed 42 -i simrep.bed  \
34            -g ../../genomes/human.hg19.genome | head > obs
35check obs exp
36rm obs exp
37
38
39###########################################################
40# test basic shuffle with -incl (choose intervals randomly)
41###########################################################
42echo -e "    shuffle.t2...\c"
43echo \
44"chr3	494824	495292	trf	789
45chr3	155662	155835	trf	346
46chr5	978428	978668	trf	434
47chr2	566144	566366	trf	273
48chr1	2524257	2524434	trf	187
49chr1	974662	974827	trf	199
50chr3	511406	511544	trf	242
51chr4	372392	372427	trf	70
52chr3	252210	252307	trf	79
53chr1	429351	429392	trf	73
54chr3	637074	637106	trf	64
55chr1	3632329	3632434	trf	149
56chr1	1405460	1405498	trf	58
57chr1	4587372	4587842	trf	278
58chr3	813140	813610	trf	339
59chr3	831383	831811	trf	202
60chr3	177788	177831	trf	59
61chr1	140167	140207	trf	62
62chr3	642846	642881	trf	52
63chr1	2627907	2628084	trf	302" > exp
64$BT shuffle -incl incl.bed -seed 42 -i simrep.bed  \
65            -g ../../genomes/human.hg19.genome | head -20 > obs
66check obs exp
67rm obs exp
68
69##############################################################
70# test basic shuffle with -incl (choose chroms randomly first)
71##############################################################
72echo -e "    shuffle.t3...\c"
73echo \
74"chr3	494824	495292	trf	789
75chr3	155662	155835	trf	346
76chr5	978428	978668	trf	434
77chr2	566144	566366	trf	273
78chr1	2524257	2524434	trf	187
79chr1	974662	974827	trf	199
80chr3	511406	511544	trf	242
81chr4	372392	372427	trf	70
82chr3	252210	252307	trf	79
83chr1	429351	429392	trf	73
84chr3	637074	637106	trf	64
85chr1	3632329	3632434	trf	149
86chr1	1405460	1405498	trf	58
87chr1	4587372	4587842	trf	278
88chr3	813140	813610	trf	339
89chr3	831383	831811	trf	202
90chr3	177788	177831	trf	59
91chr1	140167	140207	trf	62
92chr3	642846	642881	trf	52
93chr1	2627907	2628084	trf	302" > exp
94$BT shuffle -incl incl.bed -chromFirst -seed 42 -i simrep.bed  \
95            -g ../../genomes/human.hg19.genome | head -20 > obs
96check obs exp
97rm obs exp
98
99
100##############################################################
101# test basic shuffle with -excl
102##############################################################
103echo -e "    shuffle.t4...\c"
104echo -n "" > exp
105$BT shuffle -seed 42 -i simrep.bed  \
106            -g ../../genomes/human.hg19.genome \
107            -excl excl.bed \
108| $BT intersect -a - -b excl.bed > obs
109check obs exp
110rm obs exp
111
112##############################################################
113# test basic shuffle with
114##############################################################
115echo -e "    shuffle.t5...\c"
116echo \
117"chr4	13668420	13668593	trf	346
118chr1	114076345	114076585	trf	434
119chr1	114076345	114076585	trf	434
120chr5	17088394	17088864	trf	339
121chr3	53794735	53794769	trf	68
122chr2	73265723	73265766	trf	86
123chr2	4749579	4749649	trf	68
124chr1	15263027	15263097	trf	104
125chr5	57165089	57165114	trf	50
126chr4	33917224	33917392	trf	150" > exp
127$BT shuffle -seed 42 -i simrep.bed  \
128            -g ../../genomes/human.hg19.genome \
129| $BT intersect -a - -b excl.bed | head > obs
130check obs exp
131rm obs exp
132
133###############################################################
134# test an interval that is bigger than the max chrom length
135###############################################################
136echo -e "    shuffle.t6...\c"
137echo "Error, line 1: tried 1000 potential loci for entry, but could not avoid excluded regions.  Ignoring entry and moving on." > exp
138$BT shuffle -i <(echo -e "chr1\t0\t110") -g <(echo -e "chr1\t100") &> obs
139check obs exp
140rm obs exp
141[[ $FAILURES -eq 0 ]] || exit 1;
142