From effc83ef8ff4b7c92116cada6c965089d0fce15a Mon Sep 17 00:00:00 2001
From: Neil Kindlon <nek3d@d-128-109-67.bootp.Virginia.EDU>
Date: Mon, 22 Dec 2014 19:46:14 -0500
Subject: [PATCH] Fixed bug157: ties not prevented by -iu/-id

---
 src/utils/NewChromsweep/CloseSweep.cpp |  2 +-
 test/closest/bug157_a.bed              |  1 +
 test/closest/bug157_b.bed              |  2 ++
 test/closest/test-closest.sh           | 31 ++++++++++++++++++++++++++
 4 files changed, 35 insertions(+), 1 deletion(-)
 create mode 100644 test/closest/bug157_a.bed
 create mode 100644 test/closest/bug157_b.bed

diff --git a/src/utils/NewChromsweep/CloseSweep.cpp b/src/utils/NewChromsweep/CloseSweep.cpp
index 8b897252..e1bb957e 100644
--- a/src/utils/NewChromsweep/CloseSweep.cpp
+++ b/src/utils/NewChromsweep/CloseSweep.cpp
@@ -331,7 +331,7 @@ void CloseSweep::finalizeSelections(int dbIdx, RecordKeyVector &retList) {
 	}
 
 
-	if (downStreamDist == upStreamDist) {
+	if (abs(downStreamDist) == abs(upStreamDist)) {
 		if (tieMode == ContextClosest::FIRST_TIE) {
 			retList.push_back(upRecs[0]);
 			_finalDistances.push_back(upStreamDist);
diff --git a/test/closest/bug157_a.bed b/test/closest/bug157_a.bed
new file mode 100644
index 00000000..b01a1b8f
--- /dev/null
+++ b/test/closest/bug157_a.bed
@@ -0,0 +1 @@
+chr1	10	20	a1	1	-
diff --git a/test/closest/bug157_b.bed b/test/closest/bug157_b.bed
new file mode 100644
index 00000000..0d9ecf25
--- /dev/null
+++ b/test/closest/bug157_b.bed
@@ -0,0 +1,2 @@
+chr1	8	9	b1	1	+
+chr1	21	22	b2	1	-
diff --git a/test/closest/test-closest.sh b/test/closest/test-closest.sh
index 149054b7..56ce229b 100644
--- a/test/closest/test-closest.sh
+++ b/test/closest/test-closest.sh
@@ -599,6 +599,37 @@ $BT closest -a d.bed -b d_id.bed -D ref -id > obs
 check exp obs
 rm exp obs
 
+##########################################################
+# check ties, single db
+###########################################################
+echo "    closest.t52...\c"
+echo \
+"chr1	10	20	a1	1	-	chr1	8	9	b1	1	+
+chr1	10	20	a1	1	-	chr1	21	22	b2	1	-" > exp
+$BT closest -a bug157_a.bed -b bug157_b.bed > obs
+check exp obs
+rm exp obs
+
+
+##########################################################
+# check ties, single db, -iu
+###########################################################
+echo "    closest.t53...\c"
+echo \
+"chr1	10	20	a1	1	-	chr1	21	22	b2	1	-	2" > exp
+$BT closest -a bug157_a.bed -b bug157_b.bed -D ref -iu > obs
+check exp obs
+rm exp obs
+
+##########################################################
+# check ties, single db, -id
+###########################################################
+echo "    closest.t54...\c"
+echo \
+"chr1	10	20	a1	1	-	chr1	8	9	b1	1	+	-2" > exp
+$BT closest -a bug157_a.bed -b bug157_b.bed -D ref -id > obs 
+check exp obs
+rm exp obs
 
 cd sortAndNaming
 bash test-sort-and-naming.sh
-- 
GitLab