diff --git a/src/slopBed/slopBed.cpp b/src/slopBed/slopBed.cpp index af2554d0667c2fc12cc384b53a409923d1de78f3..6026cfca0dcabbb9f93d8befffe39b32c2b993e2 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 f9589fd8cf4d43aa4c6be507b804defdff89f5a9..4314c973c7982e86682af33774f4b454d876d3b7 100644 --- a/test/slop/test-slop.sh +++ b/test/slop/test-slop.sh @@ -167,4 +167,10 @@ 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 +chr1 90 210" > exp +echo -e "chr1\t160\t170\nchr1\t100\t200"| $BT slop -b 0.1 -pct -i - -g ../../genomes/human.hg19.genome > obs +check obs exp +rm obs exp