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