From 90892a6bfd05350470aecc4bab54ccd182496f0d Mon Sep 17 00:00:00 2001
From: Neil Kindlon <nek3d@d-128-109-67.bootp.Virginia.EDU>
Date: Mon, 26 Jan 2015 16:17:13 -0500
Subject: [PATCH] Added files

---
 test/closest/a2.bed                    |   1 +
 test/closest/b2.bed                    |   2 +
 test/closest/d4.bed                    |   2 +
 test/closest/kclosest/d1.bed           |   7 +
 test/closest/kclosest/d2.bed           |   9 +
 test/closest/kclosest/d3.bed           |  18 +
 test/closest/kclosest/q1.bed           |   1 +
 test/closest/kclosest/q2.bed           |   2 +
 test/closest/kclosest/test-kclosest.sh | 652 +++++++++++++++++++++++++
 test/intersect/bug167_strandSweep.bed  |  10 +
 10 files changed, 704 insertions(+)
 create mode 100644 test/closest/a2.bed
 create mode 100644 test/closest/b2.bed
 create mode 100644 test/closest/d4.bed
 create mode 100644 test/closest/kclosest/d1.bed
 create mode 100644 test/closest/kclosest/d2.bed
 create mode 100644 test/closest/kclosest/d3.bed
 create mode 100644 test/closest/kclosest/q1.bed
 create mode 100644 test/closest/kclosest/q2.bed
 create mode 100644 test/closest/kclosest/test-kclosest.sh
 create mode 100644 test/intersect/bug167_strandSweep.bed

diff --git a/test/closest/a2.bed b/test/closest/a2.bed
new file mode 100644
index 00000000..b01a1b8f
--- /dev/null
+++ b/test/closest/a2.bed
@@ -0,0 +1 @@
+chr1	10	20	a1	1	-
diff --git a/test/closest/b2.bed b/test/closest/b2.bed
new file mode 100644
index 00000000..0d9ecf25
--- /dev/null
+++ b/test/closest/b2.bed
@@ -0,0 +1,2 @@
+chr1	8	9	b1	1	+
+chr1	21	22	b2	1	-
diff --git a/test/closest/d4.bed b/test/closest/d4.bed
new file mode 100644
index 00000000..61a44b97
--- /dev/null
+++ b/test/closest/d4.bed
@@ -0,0 +1,2 @@
+chr1	40	60
+chr1	120	140
diff --git a/test/closest/kclosest/d1.bed b/test/closest/kclosest/d1.bed
new file mode 100644
index 00000000..cbb99e1f
--- /dev/null
+++ b/test/closest/kclosest/d1.bed
@@ -0,0 +1,7 @@
+chr1	10	15
+chr1	25	28
+chr1	30	40
+chr1	35	40
+chr1	38	40
+chr1	50	60
+chr1	70	80
diff --git a/test/closest/kclosest/d2.bed b/test/closest/kclosest/d2.bed
new file mode 100644
index 00000000..a62fd7fd
--- /dev/null
+++ b/test/closest/kclosest/d2.bed
@@ -0,0 +1,9 @@
+chr1	95	105	2.1	20	+
+chr1	98	108	2.2	20	+
+chr1	105	115	2.3	20	+
+chr1	120	130	2.4	20	+
+chr1	140	160	2.5	20	+
+chr1	140	155	2.6	20	+
+chr1	140	150	2.7	20	+
+chr1	170	180	2.8	20	+
+chr1	190	200	2.9	20	+
diff --git a/test/closest/kclosest/d3.bed b/test/closest/kclosest/d3.bed
new file mode 100644
index 00000000..5a333f19
--- /dev/null
+++ b/test/closest/kclosest/d3.bed
@@ -0,0 +1,18 @@
+chr1	10	20	3.1	20	-
+chr1	30	40	3.2	20	+
+chr1	45	60	3.3	20	-
+chr1	50	60	3.4	20	-
+chr1	55	60	3.5	20	-
+chr1	70	80	3.6	20	+
+chr1	75	80	3.65	20	+
+chr1	90	105	3.7	20	+
+chr1	95	110	3.8	20	-
+chr1	110	115	3.9	20	+
+chr1	120	130	3.10	20	-
+chr1	130	140	3.11	20	+
+chr1	135	140	3.115	20	+
+chr1	150	165	3.12	20	-
+chr1	150	160	3.13	20	-
+chr1	150	155	3.14	20	-
+chr1	170	180	3.15	20	+
+chr1	190	200	3.16	20	-
diff --git a/test/closest/kclosest/q1.bed b/test/closest/kclosest/q1.bed
new file mode 100644
index 00000000..18253cbc
--- /dev/null
+++ b/test/closest/kclosest/q1.bed
@@ -0,0 +1 @@
+chr1	100	110
diff --git a/test/closest/kclosest/q2.bed b/test/closest/kclosest/q2.bed
new file mode 100644
index 00000000..a7b4f063
--- /dev/null
+++ b/test/closest/kclosest/q2.bed
@@ -0,0 +1,2 @@
+chr1	100	110	q2.1	20	+
+chr1	105	110	q2.2	20	-
diff --git a/test/closest/kclosest/test-kclosest.sh b/test/closest/kclosest/test-kclosest.sh
new file mode 100644
index 00000000..5fa3e1ce
--- /dev/null
+++ b/test/closest/kclosest/test-kclosest.sh
@@ -0,0 +1,652 @@
+echo -e \
+"\n###########################################################
+#  
+#  K CLOSEST HITS TESTS
+#
+###########################################################\n"
+
+BT=${BT-../../../bin/bedtools}
+
+check()
+{
+	if diff $1 $2; then
+    	echo ok
+		return 1
+	else
+    	echo fail
+		return 0
+	fi
+}
+
+###########################################################
+# Test that hits are correctly picked for various values
+# of k and tie modes.
+###########################################################
+echo "    kclosest.t1...\c"
+echo \
+"chr1	100	110	chr1	70	80
+chr1	100	110	chr1	50	60
+chr1	100	110	chr1	30	40
+chr1	100	110	chr1	35	40
+chr1	100	110	chr1	38	40" > exp
+$BT closest -a q1.bed -b d1.bed -k 3 > obs
+check obs exp
+rm obs exp
+
+
+echo "    kclosest.t2...\c"
+echo \
+"chr1	100	110	chr1	70	80
+chr1	100	110	chr1	50	60
+chr1	100	110	chr1	30	40
+chr1	100	110	chr1	35	40
+chr1	100	110	chr1	38	40" > exp
+$BT closest -a q1.bed -b d1.bed -k 5 > obs
+check obs exp
+rm obs exp
+
+
+echo "    kclosest.t3...\c"
+echo \
+"chr1	100	110	chr1	70	80
+chr1	100	110	chr1	50	60
+chr1	100	110	chr1	30	40
+chr1	100	110	chr1	35	40
+chr1	100	110	chr1	38	40
+chr1	100	110	chr1	25	28" > exp
+$BT closest -a q1.bed -b d1.bed -k 6 > obs
+check obs exp
+rm obs exp
+
+
+echo "    kclosest.t4...\c"
+echo \
+"chr1	100	110	chr1	70	80
+chr1	100	110	chr1	50	60
+chr1	100	110	chr1	30	40
+chr1	100	110	chr1	35	40
+chr1	100	110	chr1	38	40
+chr1	100	110	chr1	25	28
+chr1	100	110	chr1	10	15" > exp
+$BT closest -a q1.bed -b d1.bed -k 7 > obs
+check obs exp
+rm obs exp
+
+
+echo "    kclosest.t5...\c"
+echo \
+"chr1	100	110	chr1	70	80
+chr1	100	110	chr1	50	60
+chr1	100	110	chr1	30	40
+chr1	100	110	chr1	25	28" > exp
+$BT closest -a q1.bed -b d1.bed -k 4 -t first > obs
+check obs exp
+rm obs exp
+
+
+echo "    kclosest.t6...\c"
+echo \
+"chr1	100	110	chr1	70	80
+chr1	100	110	chr1	50	60
+chr1	100	110	chr1	38	40
+chr1	100	110	chr1	25	28" > exp
+$BT closest -a q1.bed -b d1.bed -k 4 -t last > obs
+check obs exp
+rm obs exp
+
+
+echo "    kclosest.t7...\c"
+echo \
+"chr1	100	110	chr1	95	105	2.1	20	+
+chr1	100	110	chr1	98	108	2.2	20	+
+chr1	100	110	chr1	105	115	2.3	20	+
+chr1	100	110	chr1	120	130	2.4	20	+" > exp
+$BT closest -a q1.bed -b d2.bed -k 4 > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t8...\c"
+echo \
+"chr1	100	110	chr1	95	105	2.1	20	+
+chr1	100	110	chr1	120	130	2.4	20	+
+chr1	100	110	chr1	140	160	2.5	20	+
+chr1	100	110	chr1	170	180	2.8	20	+" > exp
+$BT closest -a q1.bed -b d2.bed -k 4 -t first > obs
+check obs exp
+rm obs exp
+
+
+echo "    kclosest.t9...\c"
+echo \
+"chr1	100	110	chr1	120	130	2.4	20	+
+chr1	100	110	chr1	140	160	2.5	20	+
+chr1	100	110	chr1	170	180	2.8	20	+
+chr1	100	110	chr1	190	200	2.9	20	+" > exp
+$BT closest -a q1.bed -b d2.bed -k 4 -t first -io > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t10...\c"
+echo \
+"chr1	100	110	chr1	95	105	2.1	20	+
+chr1	100	110	chr1	98	108	2.2	20	+
+chr1	100	110	chr1	105	115	2.3	20	+
+chr1	100	110	chr1	120	130	2.4	20	+
+chr1	100	110	chr1	140	160	2.5	20	+
+chr1	100	110	chr1	140	155	2.6	20	+
+chr1	100	110	chr1	140	150	2.7	20	+" > exp
+$BT closest -a q1.bed -b d2.bed -k 7  > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t11...\c"
+echo \
+"chr1	100	110	chr1	95	105	2.1	20	+
+chr1	100	110	chr1	120	130	2.4	20	+
+chr1	100	110	chr1	140	160	2.5	20	+
+chr1	100	110	chr1	170	180	2.8	20	+
+chr1	100	110	chr1	190	200	2.9	20	+" > exp
+$BT closest -a q1.bed -b d2.bed -k 7 -t first > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t12...\c"
+echo \
+"chr1	100	110	chr1	105	115	2.3	20	+
+chr1	100	110	chr1	120	130	2.4	20	+
+chr1	100	110	chr1	140	150	2.7	20	+
+chr1	100	110	chr1	170	180	2.8	20	+
+chr1	100	110	chr1	190	200	2.9	20	+" > exp
+$BT closest -a q1.bed -b d2.bed -k 7 -t last > obs
+check obs exp
+rm obs exp
+
+
+echo "    kclosest.t13...\c"
+echo \
+"chr1	100	110	chr1	95	105	2.1	20	+	0
+chr1	100	110	chr1	98	108	2.2	20	+	0
+chr1	100	110	chr1	105	115	2.3	20	+	0" > exp
+$BT closest -a q1.bed -b d2.bed -k 7 -id -D ref > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t14...\c"
+echo \
+"chr1	100	110	chr1	95	105	2.1	20	+	0" > exp
+$BT closest -a q1.bed -b d2.bed -k 7 -id -D ref -t first > obs
+check obs exp
+rm obs exp
+
+
+###########################################################
+# Check strandedness with -iu, -io, -id, and -D ref,
+# a, and b.
+###########################################################
+echo "    kclosest.t15...\c"
+echo \
+"chr1	100	110	chr1	90	105	3.7	20	+	0
+chr1	100	110	chr1	95	110	3.8	20	-	0
+chr1	100	110	chr1	110	115	3.9	20	+	1
+chr1	100	110	chr1	120	130	3.10	20	-	11
+chr1	100	110	chr1	130	140	3.11	20	+	21
+chr1	100	110	chr1	135	140	3.115	20	+	26
+chr1	100	110	chr1	150	165	3.12	20	-	41
+chr1	100	110	chr1	150	160	3.13	20	-	41
+chr1	100	110	chr1	150	155	3.14	20	-	41
+chr1	100	110	chr1	170	180	3.15	20	+	61
+chr1	100	110	chr1	190	200	3.16	20	-	81" > exp
+$BT closest -a q1.bed -b d3.bed -k 15 -D ref -iu > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t16...\c"
+echo \
+"chr1	100	110	chr1	110	115	3.9	20	+	1
+chr1	100	110	chr1	120	130	3.10	20	-	11
+chr1	100	110	chr1	70	80	3.6	20	+	-21
+chr1	100	110	chr1	75	80	3.65	20	+	-21
+chr1	100	110	chr1	130	140	3.11	20	+	21
+chr1	100	110	chr1	135	140	3.115	20	+	26
+chr1	100	110	chr1	45	60	3.3	20	-	-41
+chr1	100	110	chr1	50	60	3.4	20	-	-41
+chr1	100	110	chr1	55	60	3.5	20	-	-41
+chr1	100	110	chr1	150	165	3.12	20	-	41
+chr1	100	110	chr1	150	160	3.13	20	-	41
+chr1	100	110	chr1	150	155	3.14	20	-	41
+chr1	100	110	chr1	30	40	3.2	20	+	-61
+chr1	100	110	chr1	170	180	3.15	20	+	61
+chr1	100	110	chr1	10	20	3.1	20	-	-81
+chr1	100	110	chr1	190	200	3.16	20	-	81" > exp
+$BT closest -a q1.bed -b d3.bed -k 15 -D ref -io > obs
+check obs exp
+rm obs exp
+
+
+echo "    kclosest.t17...\c"
+echo \
+"chr1	100	110	chr1	90	105	3.7	20	+	0
+chr1	100	110	chr1	95	110	3.8	20	-	0
+chr1	100	110	chr1	70	80	3.6	20	+	-21
+chr1	100	110	chr1	75	80	3.65	20	+	-21
+chr1	100	110	chr1	45	60	3.3	20	-	-41
+chr1	100	110	chr1	50	60	3.4	20	-	-41
+chr1	100	110	chr1	55	60	3.5	20	-	-41
+chr1	100	110	chr1	30	40	3.2	20	+	-61
+chr1	100	110	chr1	10	20	3.1	20	-	-81" > exp
+$BT closest -a q1.bed -b d3.bed -k 15 -D ref -id > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t18...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	90	105	3.7	20	+	0
+chr1	100	110	q2.1	20	+	chr1	95	110	3.8	20	-	0
+chr1	100	110	q2.1	20	+	chr1	110	115	3.9	20	+	1
+chr1	100	110	q2.1	20	+	chr1	120	130	3.10	20	-	11
+chr1	100	110	q2.1	20	+	chr1	130	140	3.11	20	+	21
+chr1	100	110	q2.1	20	+	chr1	135	140	3.115	20	+	26
+chr1	100	110	q2.1	20	+	chr1	150	165	3.12	20	-	41
+chr1	100	110	q2.1	20	+	chr1	150	160	3.13	20	-	41
+chr1	100	110	q2.1	20	+	chr1	150	155	3.14	20	-	41
+chr1	100	110	q2.1	20	+	chr1	170	180	3.15	20	+	61
+chr1	100	110	q2.1	20	+	chr1	190	200	3.16	20	-	81
+chr1	105	110	q2.2	20	-	chr1	95	110	3.8	20	-	0
+chr1	105	110	q2.2	20	-	chr1	90	105	3.7	20	+	1
+chr1	105	110	q2.2	20	-	chr1	70	80	3.6	20	+	26
+chr1	105	110	q2.2	20	-	chr1	75	80	3.65	20	+	26
+chr1	105	110	q2.2	20	-	chr1	45	60	3.3	20	-	46
+chr1	105	110	q2.2	20	-	chr1	50	60	3.4	20	-	46
+chr1	105	110	q2.2	20	-	chr1	55	60	3.5	20	-	46
+chr1	105	110	q2.2	20	-	chr1	30	40	3.2	20	+	66
+chr1	105	110	q2.2	20	-	chr1	10	20	3.1	20	-	86" > exp
+$BT closest -a q2.bed -b d3.bed -k 15 -D a -iu > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t19...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	90	105	3.7	20	+	0
+chr1	100	110	q2.1	20	+	chr1	95	110	3.8	20	-	0
+chr1	100	110	q2.1	20	+	chr1	70	80	3.6	20	+	-21
+chr1	100	110	q2.1	20	+	chr1	75	80	3.65	20	+	-21
+chr1	100	110	q2.1	20	+	chr1	45	60	3.3	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	50	60	3.4	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	55	60	3.5	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	30	40	3.2	20	+	-61
+chr1	100	110	q2.1	20	+	chr1	10	20	3.1	20	-	-81
+chr1	105	110	q2.2	20	-	chr1	95	110	3.8	20	-	0
+chr1	105	110	q2.2	20	-	chr1	110	115	3.9	20	+	-1
+chr1	105	110	q2.2	20	-	chr1	120	130	3.10	20	-	-11
+chr1	105	110	q2.2	20	-	chr1	130	140	3.11	20	+	-21
+chr1	105	110	q2.2	20	-	chr1	135	140	3.115	20	+	-26
+chr1	105	110	q2.2	20	-	chr1	150	165	3.12	20	-	-41
+chr1	105	110	q2.2	20	-	chr1	150	160	3.13	20	-	-41
+chr1	105	110	q2.2	20	-	chr1	150	155	3.14	20	-	-41
+chr1	105	110	q2.2	20	-	chr1	170	180	3.15	20	+	-61
+chr1	105	110	q2.2	20	-	chr1	190	200	3.16	20	-	-81" > exp
+$BT closest -a q2.bed -b d3.bed -k 15 -D a -id > obs
+check obs exp
+rm obs exp
+
+
+echo "    kclosest.t20...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	90	105	3.7	20	+	0
+chr1	100	110	q2.1	20	+	chr1	95	110	3.8	20	-	0
+chr1	100	110	q2.1	20	+	chr1	120	130	3.10	20	-	11
+chr1	100	110	q2.1	20	+	chr1	70	80	3.6	20	+	21
+chr1	100	110	q2.1	20	+	chr1	75	80	3.65	20	+	21
+chr1	100	110	q2.1	20	+	chr1	150	165	3.12	20	-	41
+chr1	100	110	q2.1	20	+	chr1	150	160	3.13	20	-	41
+chr1	100	110	q2.1	20	+	chr1	150	155	3.14	20	-	41
+chr1	100	110	q2.1	20	+	chr1	30	40	3.2	20	+	61
+chr1	100	110	q2.1	20	+	chr1	190	200	3.16	20	-	81
+chr1	105	110	q2.2	20	-	chr1	95	110	3.8	20	-	0
+chr1	105	110	q2.2	20	-	chr1	90	105	3.7	20	+	1
+chr1	105	110	q2.2	20	-	chr1	120	130	3.10	20	-	11
+chr1	105	110	q2.2	20	-	chr1	70	80	3.6	20	+	26
+chr1	105	110	q2.2	20	-	chr1	75	80	3.65	20	+	26
+chr1	105	110	q2.2	20	-	chr1	150	165	3.12	20	-	41
+chr1	105	110	q2.2	20	-	chr1	150	160	3.13	20	-	41
+chr1	105	110	q2.2	20	-	chr1	150	155	3.14	20	-	41
+chr1	105	110	q2.2	20	-	chr1	30	40	3.2	20	+	66
+chr1	105	110	q2.2	20	-	chr1	190	200	3.16	20	-	81" > exp
+$BT closest -a q2.bed -b d3.bed -k 15 -D b -iu > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t21...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	90	105	3.7	20	+	0
+chr1	100	110	q2.1	20	+	chr1	95	110	3.8	20	-	0
+chr1	100	110	q2.1	20	+	chr1	110	115	3.9	20	+	-1
+chr1	100	110	q2.1	20	+	chr1	130	140	3.11	20	+	-21
+chr1	100	110	q2.1	20	+	chr1	135	140	3.115	20	+	-26
+chr1	100	110	q2.1	20	+	chr1	45	60	3.3	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	50	60	3.4	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	55	60	3.5	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	170	180	3.15	20	+	-61
+chr1	100	110	q2.1	20	+	chr1	10	20	3.1	20	-	-81
+chr1	105	110	q2.2	20	-	chr1	95	110	3.8	20	-	0
+chr1	105	110	q2.2	20	-	chr1	110	115	3.9	20	+	-1
+chr1	105	110	q2.2	20	-	chr1	130	140	3.11	20	+	-21
+chr1	105	110	q2.2	20	-	chr1	135	140	3.115	20	+	-26
+chr1	105	110	q2.2	20	-	chr1	45	60	3.3	20	-	-46
+chr1	105	110	q2.2	20	-	chr1	50	60	3.4	20	-	-46
+chr1	105	110	q2.2	20	-	chr1	55	60	3.5	20	-	-46
+chr1	105	110	q2.2	20	-	chr1	170	180	3.15	20	+	-61
+chr1	105	110	q2.2	20	-	chr1	10	20	3.1	20	-	-86" > exp
+$BT closest -a q2.bed -b d3.bed -k 15 -D b -id > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t22...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	90	105	3.7	20	+	0
+chr1	100	110	q2.1	20	+	chr1	110	115	3.9	20	+	1
+chr1	100	110	q2.1	20	+	chr1	130	140	3.11	20	+	21
+chr1	100	110	q2.1	20	+	chr1	135	140	3.115	20	+	26
+chr1	100	110	q2.1	20	+	chr1	170	180	3.15	20	+	61
+chr1	105	110	q2.2	20	-	chr1	95	110	3.8	20	-	0
+chr1	105	110	q2.2	20	-	chr1	45	60	3.3	20	-	46
+chr1	105	110	q2.2	20	-	chr1	50	60	3.4	20	-	46
+chr1	105	110	q2.2	20	-	chr1	55	60	3.5	20	-	46
+chr1	105	110	q2.2	20	-	chr1	10	20	3.1	20	-	86" > exp
+$BT closest -a q2.bed -b d3.bed -k 15 -D a -s -iu > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t23...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	90	105	3.7	20	+	0
+chr1	100	110	q2.1	20	+	chr1	70	80	3.6	20	+	-21
+chr1	100	110	q2.1	20	+	chr1	75	80	3.65	20	+	-21
+chr1	100	110	q2.1	20	+	chr1	30	40	3.2	20	+	-61
+chr1	105	110	q2.2	20	-	chr1	95	110	3.8	20	-	0
+chr1	105	110	q2.2	20	-	chr1	120	130	3.10	20	-	-11
+chr1	105	110	q2.2	20	-	chr1	150	165	3.12	20	-	-41
+chr1	105	110	q2.2	20	-	chr1	150	160	3.13	20	-	-41
+chr1	105	110	q2.2	20	-	chr1	150	155	3.14	20	-	-41
+chr1	105	110	q2.2	20	-	chr1	190	200	3.16	20	-	-81" > exp
+$BT closest -a q2.bed -b d3.bed -k 15 -D a -s -id > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t24...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	90	105	3.7	20	+	0
+chr1	100	110	q2.1	20	+	chr1	70	80	3.6	20	+	21
+chr1	100	110	q2.1	20	+	chr1	75	80	3.65	20	+	21
+chr1	100	110	q2.1	20	+	chr1	30	40	3.2	20	+	61
+chr1	105	110	q2.2	20	-	chr1	95	110	3.8	20	-	0
+chr1	105	110	q2.2	20	-	chr1	120	130	3.10	20	-	11
+chr1	105	110	q2.2	20	-	chr1	150	165	3.12	20	-	41
+chr1	105	110	q2.2	20	-	chr1	150	160	3.13	20	-	41
+chr1	105	110	q2.2	20	-	chr1	150	155	3.14	20	-	41
+chr1	105	110	q2.2	20	-	chr1	190	200	3.16	20	-	81" > exp
+$BT closest -a q2.bed -b d3.bed -k 15 -D b -s -iu > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t25...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	90	105	3.7	20	+	0
+chr1	100	110	q2.1	20	+	chr1	110	115	3.9	20	+	-1
+chr1	100	110	q2.1	20	+	chr1	130	140	3.11	20	+	-21
+chr1	100	110	q2.1	20	+	chr1	135	140	3.115	20	+	-26
+chr1	100	110	q2.1	20	+	chr1	170	180	3.15	20	+	-61
+chr1	105	110	q2.2	20	-	chr1	95	110	3.8	20	-	0
+chr1	105	110	q2.2	20	-	chr1	45	60	3.3	20	-	-46
+chr1	105	110	q2.2	20	-	chr1	50	60	3.4	20	-	-46
+chr1	105	110	q2.2	20	-	chr1	55	60	3.5	20	-	-46
+chr1	105	110	q2.2	20	-	chr1	10	20	3.1	20	-	-86" > exp
+$BT closest -a q2.bed -b d3.bed -k 15 -D b -s -id > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t26...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	95	110	3.8	20	-	0
+chr1	100	110	q2.1	20	+	chr1	120	130	3.10	20	-	11
+chr1	100	110	q2.1	20	+	chr1	150	165	3.12	20	-	41
+chr1	100	110	q2.1	20	+	chr1	150	160	3.13	20	-	41
+chr1	100	110	q2.1	20	+	chr1	150	155	3.14	20	-	41
+chr1	100	110	q2.1	20	+	chr1	190	200	3.16	20	-	81
+chr1	105	110	q2.2	20	-	chr1	90	105	3.7	20	+	1
+chr1	105	110	q2.2	20	-	chr1	70	80	3.6	20	+	26
+chr1	105	110	q2.2	20	-	chr1	75	80	3.65	20	+	26
+chr1	105	110	q2.2	20	-	chr1	30	40	3.2	20	+	66" > exp
+$BT closest -a q2.bed -b d3.bed -k 15 -D a -S -iu > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t27...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	95	110	3.8	20	-	0
+chr1	100	110	q2.1	20	+	chr1	45	60	3.3	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	50	60	3.4	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	55	60	3.5	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	10	20	3.1	20	-	-81
+chr1	105	110	q2.2	20	-	chr1	110	115	3.9	20	+	-1
+chr1	105	110	q2.2	20	-	chr1	130	140	3.11	20	+	-21
+chr1	105	110	q2.2	20	-	chr1	135	140	3.115	20	+	-26
+chr1	105	110	q2.2	20	-	chr1	170	180	3.15	20	+	-61" > exp
+$BT closest -a q2.bed -b d3.bed -k 15 -D a -S -id > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t28...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	95	110	3.8	20	-	0
+chr1	100	110	q2.1	20	+	chr1	120	130	3.10	20	-	11
+chr1	100	110	q2.1	20	+	chr1	150	165	3.12	20	-	41
+chr1	100	110	q2.1	20	+	chr1	150	160	3.13	20	-	41
+chr1	100	110	q2.1	20	+	chr1	150	155	3.14	20	-	41
+chr1	100	110	q2.1	20	+	chr1	190	200	3.16	20	-	81
+chr1	105	110	q2.2	20	-	chr1	90	105	3.7	20	+	1
+chr1	105	110	q2.2	20	-	chr1	70	80	3.6	20	+	26
+chr1	105	110	q2.2	20	-	chr1	75	80	3.65	20	+	26
+chr1	105	110	q2.2	20	-	chr1	30	40	3.2	20	+	66" > exp
+$BT closest -a q2.bed -b d3.bed -k 15 -D b -S -iu > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t29...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	95	110	3.8	20	-	0
+chr1	100	110	q2.1	20	+	chr1	45	60	3.3	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	50	60	3.4	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	55	60	3.5	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	10	20	3.1	20	-	-81
+chr1	105	110	q2.2	20	-	chr1	110	115	3.9	20	+	-1
+chr1	105	110	q2.2	20	-	chr1	130	140	3.11	20	+	-21
+chr1	105	110	q2.2	20	-	chr1	135	140	3.115	20	+	-26
+chr1	105	110	q2.2	20	-	chr1	170	180	3.15	20	+	-61" > exp
+$BT closest -a q2.bed -b d3.bed -k 15 -D b -S -id > obs
+check obs exp
+rm obs exp
+
+###########################################################
+# Test multiple databases and mdb = all mode
+###########################################################
+
+
+echo "    kclosest.t30...\c"
+echo \
+"chr1	100	110	q2.1	20	+	1	chr1	98	108	2.2	20	+	0
+chr1	100	110	q2.1	20	+	1	chr1	105	115	2.3	20	+	0
+chr1	100	110	q2.1	20	+	1	chr1	95	105	2.1	20	+	0
+chr1	100	110	q2.1	20	+	2	chr1	95	110	3.8	20	-	0
+chr1	100	110	q2.1	20	+	2	chr1	90	105	3.7	20	+	0
+chr1	100	110	q2.1	20	+	2	chr1	110	115	3.9	20	+	1
+chr1	100	110	q2.1	20	+	1	chr1	120	130	2.4	20	+	11
+chr1	100	110	q2.1	20	+	2	chr1	120	130	3.10	20	-	11
+chr1	100	110	q2.1	20	+	2	chr1	70	80	3.6	20	+	-21
+chr1	100	110	q2.1	20	+	2	chr1	75	80	3.65	20	+	-21
+chr1	105	110	q2.2	20	-	1	chr1	105	115	2.3	20	+	0
+chr1	105	110	q2.2	20	-	1	chr1	98	108	2.2	20	+	0
+chr1	105	110	q2.2	20	-	2	chr1	95	110	3.8	20	-	0
+chr1	105	110	q2.2	20	-	2	chr1	90	105	3.7	20	+	-1
+chr1	105	110	q2.2	20	-	1	chr1	95	105	2.1	20	+	-1
+chr1	105	110	q2.2	20	-	2	chr1	110	115	3.9	20	+	1
+chr1	105	110	q2.2	20	-	1	chr1	120	130	2.4	20	+	11
+chr1	105	110	q2.2	20	-	2	chr1	120	130	3.10	20	-	11
+chr1	105	110	q2.2	20	-	2	chr1	130	140	3.11	20	+	21
+chr1	105	110	q2.2	20	-	2	chr1	70	80	3.6	20	+	-26
+chr1	105	110	q2.2	20	-	2	chr1	75	80	3.65	20	+	-26" > exp
+$BT closest -a q2.bed -b d2.bed d3.bed -mdb all -k 10  -D ref -t all > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t31...\c"
+echo \
+"chr1	100	110	q2.1	20	+	1	chr1	95	105	2.1	20	+	0
+chr1	100	110	q2.1	20	+	2	chr1	110	115	3.9	20	+	1
+chr1	100	110	q2.1	20	+	1	chr1	120	130	2.4	20	+	11
+chr1	100	110	q2.1	20	+	2	chr1	70	80	3.6	20	+	-21
+chr1	100	110	q2.1	20	+	2	chr1	135	140	3.115	20	+	26
+chr1	100	110	q2.1	20	+	1	chr1	140	160	2.5	20	+	31
+chr1	100	110	q2.1	20	+	2	chr1	45	60	3.3	20	-	-41
+chr1	100	110	q2.1	20	+	2	chr1	30	40	3.2	20	+	-61
+chr1	100	110	q2.1	20	+	2	chr1	10	20	3.1	20	-	-81
+chr1	105	110	q2.2	20	-	1	chr1	98	108	2.2	20	+	0
+chr1	105	110	q2.2	20	-	1	chr1	95	105	2.1	20	+	-1
+chr1	105	110	q2.2	20	-	1	chr1	120	130	2.4	20	+	11
+chr1	105	110	q2.2	20	-	2	chr1	130	140	3.11	20	+	21
+chr1	105	110	q2.2	20	-	2	chr1	70	80	3.6	20	+	-26
+chr1	105	110	q2.2	20	-	1	chr1	140	160	2.5	20	+	31
+chr1	105	110	q2.2	20	-	2	chr1	150	165	3.12	20	-	41
+chr1	105	110	q2.2	20	-	2	chr1	45	60	3.3	20	-	-46
+chr1	105	110	q2.2	20	-	1	chr1	170	180	2.8	20	+	61
+chr1	105	110	q2.2	20	-	2	chr1	30	40	3.2	20	+	-66" > exp
+$BT closest -a q2.bed -b d2.bed d3.bed -mdb all -k 10  -D ref -t first > obs
+check obs exp
+rm obs exp
+
+
+echo "    kclosest.t32...\c"
+echo \
+"chr1	100	110	q2.1	20	+	2	chr1	95	110	3.8	20	-	0
+chr1	100	110	q2.1	20	+	2	chr1	110	115	3.9	20	+	1
+chr1	100	110	q2.1	20	+	2	chr1	120	130	3.10	20	-	11
+chr1	100	110	q2.1	20	+	2	chr1	130	140	3.11	20	+	21
+chr1	100	110	q2.1	20	+	2	chr1	135	140	3.115	20	+	26
+chr1	100	110	q2.1	20	+	1	chr1	140	150	2.7	20	+	31
+chr1	100	110	q2.1	20	+	2	chr1	150	155	3.14	20	-	41
+chr1	100	110	q2.1	20	+	2	chr1	170	180	3.15	20	+	61
+chr1	100	110	q2.1	20	+	2	chr1	190	200	3.16	20	-	81
+chr1	105	110	q2.2	20	-	2	chr1	95	110	3.8	20	-	0
+chr1	105	110	q2.2	20	-	2	chr1	110	115	3.9	20	+	1
+chr1	105	110	q2.2	20	-	2	chr1	120	130	3.10	20	-	11
+chr1	105	110	q2.2	20	-	2	chr1	130	140	3.11	20	+	21
+chr1	105	110	q2.2	20	-	2	chr1	135	140	3.115	20	+	26
+chr1	105	110	q2.2	20	-	1	chr1	140	150	2.7	20	+	31
+chr1	105	110	q2.2	20	-	2	chr1	150	155	3.14	20	-	41
+chr1	105	110	q2.2	20	-	2	chr1	55	60	3.5	20	-	-46
+chr1	105	110	q2.2	20	-	2	chr1	170	180	3.15	20	+	61
+chr1	105	110	q2.2	20	-	2	chr1	30	40	3.2	20	+	-66" > exp
+$BT closest -a q2.bed -b d2.bed d3.bed -mdb all -k 10  -D ref -t last > obs
+check obs exp
+rm obs exp
+
+###########################################################
+# Test new -fu and -fd features
+###########################################################
+
+echo "    kclosest.t33...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	70	80	3.6	20	+	-21
+chr1	100	110	q2.1	20	+	chr1	45	60	3.3	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	30	40	3.2	20	+	-61
+chr1	100	110	q2.1	20	+	chr1	10	20	3.1	20	-	-81
+chr1	100	110	q2.1	20	+	chr1	90	105	3.7	20	+	0
+chr1	105	110	q2.2	20	-	chr1	90	105	3.7	20	+	-1
+chr1	105	110	q2.2	20	-	chr1	70	80	3.6	20	+	-26
+chr1	105	110	q2.2	20	-	chr1	45	60	3.3	20	-	-46
+chr1	105	110	q2.2	20	-	chr1	30	40	3.2	20	+	-66
+chr1	105	110	q2.2	20	-	chr1	10	20	3.1	20	-	-86" > exp
+$BT closest -a q2.bed -b d3.bed -k 5  -D ref -t first -fu > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t34...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	110	115	3.9	20	+	1
+chr1	100	110	q2.1	20	+	chr1	120	130	3.10	20	-	11
+chr1	100	110	q2.1	20	+	chr1	130	140	3.11	20	+	21
+chr1	100	110	q2.1	20	+	chr1	135	140	3.115	20	+	26
+chr1	100	110	q2.1	20	+	chr1	150	165	3.12	20	-	41
+chr1	105	110	q2.2	20	-	chr1	110	115	3.9	20	+	1
+chr1	105	110	q2.2	20	-	chr1	120	130	3.10	20	-	11
+chr1	105	110	q2.2	20	-	chr1	130	140	3.11	20	+	21
+chr1	105	110	q2.2	20	-	chr1	135	140	3.115	20	+	26
+chr1	105	110	q2.2	20	-	chr1	150	165	3.12	20	-	41" > exp
+$BT closest -a q2.bed -b d3.bed -k 5  -D ref -t first -fd > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t35...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	70	80	3.6	20	+	-21
+chr1	100	110	q2.1	20	+	chr1	45	60	3.3	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	30	40	3.2	20	+	-61
+chr1	100	110	q2.1	20	+	chr1	10	20	3.1	20	-	-81
+chr1	100	110	q2.1	20	+	chr1	90	105	3.7	20	+	0
+chr1	105	110	q2.2	20	-	chr1	110	115	3.9	20	+	-1
+chr1	105	110	q2.2	20	-	chr1	120	130	3.10	20	-	-11
+chr1	105	110	q2.2	20	-	chr1	130	140	3.11	20	+	-21
+chr1	105	110	q2.2	20	-	chr1	135	140	3.115	20	+	-26
+chr1	105	110	q2.2	20	-	chr1	150	165	3.12	20	-	-41" > exp
+$BT closest -a q2.bed -b d3.bed -k 5  -D a -t first -fu > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t36...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	110	115	3.9	20	+	1
+chr1	100	110	q2.1	20	+	chr1	120	130	3.10	20	-	11
+chr1	100	110	q2.1	20	+	chr1	130	140	3.11	20	+	21
+chr1	100	110	q2.1	20	+	chr1	135	140	3.115	20	+	26
+chr1	100	110	q2.1	20	+	chr1	150	165	3.12	20	-	41
+chr1	105	110	q2.2	20	-	chr1	90	105	3.7	20	+	1
+chr1	105	110	q2.2	20	-	chr1	70	80	3.6	20	+	26
+chr1	105	110	q2.2	20	-	chr1	45	60	3.3	20	-	46
+chr1	105	110	q2.2	20	-	chr1	30	40	3.2	20	+	66
+chr1	105	110	q2.2	20	-	chr1	10	20	3.1	20	-	86" > exp
+$BT closest -a q2.bed -b d3.bed -k 5  -D a -t first -fd > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t37...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	110	115	3.9	20	+	-1
+chr1	100	110	q2.1	20	+	chr1	130	140	3.11	20	+	-21
+chr1	100	110	q2.1	20	+	chr1	135	140	3.115	20	+	-26
+chr1	100	110	q2.1	20	+	chr1	45	60	3.3	20	-	-41
+chr1	100	110	q2.1	20	+	chr1	170	180	3.15	20	+	-61
+chr1	105	110	q2.2	20	-	chr1	110	115	3.9	20	+	-1
+chr1	105	110	q2.2	20	-	chr1	130	140	3.11	20	+	-21
+chr1	105	110	q2.2	20	-	chr1	135	140	3.115	20	+	-26
+chr1	105	110	q2.2	20	-	chr1	45	60	3.3	20	-	-46
+chr1	105	110	q2.2	20	-	chr1	170	180	3.15	20	+	-61" > exp
+$BT closest -a q2.bed -b d3.bed -k 5  -D b -t first -fu > obs
+check obs exp
+rm obs exp
+
+echo "    kclosest.t38...\c"
+echo \
+"chr1	100	110	q2.1	20	+	chr1	120	130	3.10	20	-	11
+chr1	100	110	q2.1	20	+	chr1	70	80	3.6	20	+	21
+chr1	100	110	q2.1	20	+	chr1	150	165	3.12	20	-	41
+chr1	100	110	q2.1	20	+	chr1	30	40	3.2	20	+	61
+chr1	100	110	q2.1	20	+	chr1	190	200	3.16	20	-	81
+chr1	105	110	q2.2	20	-	chr1	90	105	3.7	20	+	1
+chr1	105	110	q2.2	20	-	chr1	120	130	3.10	20	-	11
+chr1	105	110	q2.2	20	-	chr1	70	80	3.6	20	+	26
+chr1	105	110	q2.2	20	-	chr1	150	165	3.12	20	-	41
+chr1	105	110	q2.2	20	-	chr1	30	40	3.2	20	+	66" > exp
+$BT closest -a q2.bed -b d3.bed -k 5  -D b -t first -fd > obs
+check obs exp
+rm obs exp
+
diff --git a/test/intersect/bug167_strandSweep.bed b/test/intersect/bug167_strandSweep.bed
new file mode 100644
index 00000000..f37a119d
--- /dev/null
+++ b/test/intersect/bug167_strandSweep.bed
@@ -0,0 +1,10 @@
+chr1	9550913	9551859	b.C.1	0	-
+chr1	9550913	9621173	b	1	-
+chr1	9551859	9553903	b.I.1	0	-
+chr1	9553903	9553952	b.C.2	0	-
+chr1	9553952	9609630	b.I.2	0	-
+chr1	9602747	9603392	f.I.1	0	+
+chr1	9603392	9603555	f.C.2	0	+
+chr1	9603392	9603555	g.C.3	0	+
+chr1	9603555	9609916	f.I.2	0	+
+chr1	9603555	9609916	g.I.3	0	+
-- 
GitLab