From ecb4afaac2ab42bc832d0a05d3e49be72edfff9e Mon Sep 17 00:00:00 2001
From: Brent Pedersen <bpederse@gmail.com>
Date: Thu, 24 Jul 2014 10:57:53 -0600
Subject: [PATCH] fix slop with -pct

---
 src/slopBed/slopBed.cpp | 8 ++++++--
 test/slop/test-slop.sh  | 7 ++++++-
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/slopBed/slopBed.cpp b/src/slopBed/slopBed.cpp
index af2554d0..6026cfca 100644
--- a/src/slopBed/slopBed.cpp
+++ b/src/slopBed/slopBed.cpp
@@ -41,6 +41,7 @@ BedSlop::~BedSlop(void) {
 void BedSlop::SlopBed() {
 
     BED bedEntry;     // used to store the current BED line from the BED file.
+    float l, r;
 
     _bed->Open();
     // report header first if asked.
@@ -53,9 +54,13 @@ void BedSlop::SlopBed() {
                 AddSlop(bedEntry);
             }
             else {
-                _leftSlop  = _leftSlop  * (float)bedEntry.size();
+	        l = _leftSlop;	
+                _leftSlop  = _leftSlop * (float)bedEntry.size();
+	        r = _rightSlop;	
                 _rightSlop = _rightSlop * (float)bedEntry.size();
                 AddSlop(bedEntry);
+	        _rightSlop = r;
+	        _leftSlop = l;
             }
             _bed->reportBedNewLine(bedEntry);
         }
@@ -86,7 +91,6 @@ void BedSlop::AddSlop(BED &bed) {
             bed.start = bed.start - (int)_leftSlop;
         else
             bed.start = 0;
-
         if ( ((CHRPOS)bed.end + (CHRPOS)_rightSlop) <= chromSize )
             bed.end = bed.end + (int)_rightSlop;
         else
diff --git a/test/slop/test-slop.sh b/test/slop/test-slop.sh
index f9589fd8..2de0a110 100644
--- a/test/slop/test-slop.sh
+++ b/test/slop/test-slop.sh
@@ -167,4 +167,9 @@ echo -e "chr1\t16778272\t16778572"| $BT slop -l 200 -r 200 -i - -g ../../genomes
 check obs exp
 rm obs exp
 
-
+echo "    slop.t15...\c"
+echo \
+"chr1	159	171" > exp
+echo -e "chr1\t160\t170"| $BT slop -b 0.1 -pct -i - -g ../../genomes/human.hg19.genome > obs
+check obs exp
+rm obs exp
-- 
GitLab