diff --git a/src/utils/NewChromsweep/NewChromsweep.cpp b/src/utils/NewChromsweep/NewChromsweep.cpp index 8d8bc2b203174464e2d5e5c7994de63eaadea010..dffb67fb856fb18dc45cd402aa435b7962acb945 100644 --- a/src/utils/NewChromsweep/NewChromsweep.cpp +++ b/src/utils/NewChromsweep/NewChromsweep.cpp @@ -129,7 +129,7 @@ void NewChromSweep::scanCache(int dbIdx, RecordKeyVector &retList) { if (_currQueryRec->sameChrom(cacheRec) && !_currQueryRec->after(cacheRec)) { if (intersects(_currQueryRec, cacheRec)) { retList.push_back(cacheRec); - } else break; // cacheRec is after the query rec, stop scanning. + } else if (cacheRec->after(_currQueryRec)) break; // cacheRec is after the query rec, stop scanning. cacheIter = _caches[dbIdx].next(); } else { @@ -150,6 +150,7 @@ void NewChromSweep::clearCache(int dbIdx) } void NewChromSweep::masterScan(RecordKeyVector &retList) { + for (int i=0; i < _numDBs; i++) { if (dbFinished(i) || chromChange(i, retList, true)) { continue; diff --git a/test/intersect/bug167_strandSweep.bed b/test/intersect/bug167_strandSweep.bed new file mode 100644 index 0000000000000000000000000000000000000000..f37a119df559c233737a551322695da37d972657 --- /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 + diff --git a/test/intersect/test-intersect.sh b/test/intersect/test-intersect.sh index f01d8337825da4ae223d1600910eb7dc6dae0ac0..7af4d715f934e95c66c0c6e2c9d5e3d7ead987d8 100644 --- a/test/intersect/test-intersect.sh +++ b/test/intersect/test-intersect.sh @@ -502,7 +502,25 @@ $BT intersect -a a.bed -b b.bed -f 1.00001 2>&1 > /dev/null | cat - | head -2 | check exp obs rm exp obs +##################################################################bug167_strandSweep.bed +# Test that -s works with chromsweep +################################################################## +echo " intersect.t41...\c" +echo \ +"22" > exp +$BT intersect -a bug167_strandSweep.bed -b bug167_strandSweep.bed -sorted -s -wa -wb | wc -l > obs +check exp obs +rm exp obs +##################################################################bug167_strandSweep.bed +# Test that -S works with chromsweep +################################################################## +echo " intersect.t42...\c" +echo \ +"20" > exp +$BT intersect -a bug167_strandSweep.bed -b bug167_strandSweep.bed -sorted -S -wa -wb | wc -l > obs +check exp obs +rm exp obs rm one_block.bam two_blocks.bam three_blocks.bam