diff --git a/java/src/org/broadinstitute/sting/utils/GenomeLocSortedSet.java b/java/src/org/broadinstitute/sting/utils/GenomeLocSortedSet.java index 13446806e..d45e5e693 100755 --- a/java/src/org/broadinstitute/sting/utils/GenomeLocSortedSet.java +++ b/java/src/org/broadinstitute/sting/utils/GenomeLocSortedSet.java @@ -242,39 +242,6 @@ public class GenomeLocSortedSet extends AbstractSet { } } - /** - * remove an element from the set. Given a specific genome location, this function will - * remove all regions in the element set that overlap the specified region. - * - * @param e the genomic range to remove - * - * @return true if a removal action was performed, false if the collection was unchanged. - */ - public boolean removeRegion(GenomeLoc e) { - // todo -- delete me - if (e == null) { - return false; - } - - // sometimes we can't return right away, this holds the value for those cases - boolean returnValue = false; - - /** - * check if the specified element overlaps any current locations, subtract the removed - * region and reinsert what is left. - */ - for (GenomeLoc g : mArray) { - if (g.overlapsP(e)) { - returnValue = true; - - boolean finishEarly = removeOverlappingRegion(g, e); - if ( finishEarly ) - break; - } - } - - return returnValue; - } // public boolean removeRegions(GenomeLocSortedSet toRemove) { // int i = 0, j = 0; @@ -309,70 +276,6 @@ public class GenomeLocSortedSet extends AbstractSet { // } // - // todo -- delete me - private boolean removeOverlappingRegion(GenomeLoc g, GenomeLoc e) { - if (g.equals(e)) { - mArray.remove(mArray.indexOf(g)); - return true; - } else if (g.containsP(e)) { - /** - * we have to create two new region, one for the before part, one for the after - * The old region: - * |----------------- old region (g) -------------| - * |----- to delete (e) ------| - * - * product (two new regions): - * |------| + |--------| - * - */ - GenomeLoc before = GenomeLocParser.createGenomeLoc(g.getContigIndex(), g.getStart(), e.getStart() - 1); - GenomeLoc after = GenomeLocParser.createGenomeLoc(g.getContigIndex(), e.getStop() + 1, g.getStop()); - int index = mArray.indexOf(g); - if (after.getStop() - after.getStart() >= 0) { - mArray.add(index, after); - } - if (before.getStop() - before.getStart() >= 0) { - mArray.add(index, before); - } - mArray.remove(mArray.indexOf(g)); - return true; - } else if (e.containsP(g)) { - /** - * e completely contains g, delete g, but keep looking, there may be more regions - * i.e.: - * |--------------------- e --------------------| - * |--- g ---| |---- others ----| - */ - mArray.remove(mArray.indexOf(g)); - return false; - } else { - /** - * otherwise e overlaps some part of g - */ - GenomeLoc l; - - /** - * figure out which region occurs first on the genome. I.e., is it: - * |------------- g ----------| - * |------------- e ----------| - * - * or: - * |------------- g ----------| - * |------------ e -----------| - * - */ - - if (e.getStart() < g.getStart()) { - l = GenomeLocParser.createGenomeLoc(g.getContigIndex(), e.getStop() + 1, g.getStop()); - } else { - l = GenomeLocParser.createGenomeLoc(g.getContigIndex(), g.getStart(), e.getStart() - 1); - } - // replace g with the new region - mArray.set(mArray.indexOf(g), l); - return false; - } - } - /** * a simple removal of an interval contained in this list. The interval must be identical to one in the list (no partial locations or overlapping) * @param location the GenomeLoc to remove diff --git a/java/test/org/broadinstitute/sting/utils/GenomeLocSortedSetTest.java b/java/test/org/broadinstitute/sting/utils/GenomeLocSortedSetTest.java index 528a153c8..7b61c419a 100755 --- a/java/test/org/broadinstitute/sting/utils/GenomeLocSortedSetTest.java +++ b/java/test/org/broadinstitute/sting/utils/GenomeLocSortedSetTest.java @@ -120,99 +120,10 @@ public class GenomeLocSortedSetTest extends BaseTest { assertTrue(loc.getContigIndex() == 1); } - @Test - public void deleteSubRegion() { - GenomeLoc e = GenomeLocParser.createGenomeLoc(1, 0, 50); - GenomeLoc g = GenomeLocParser.createGenomeLoc(1, 49, 100); - mSortedSet.add(g); - mSortedSet.addRegion(e); - - // now delete a region - GenomeLoc d = GenomeLocParser.createGenomeLoc(1, 25, 75); - mSortedSet.removeRegion(d); - Iterator iter = mSortedSet.iterator(); - GenomeLoc loc = iter.next(); - assertTrue(loc.getStart() == 0); - assertTrue(loc.getStop() == 24); - assertTrue(loc.getContigIndex() == 1); - - loc = iter.next(); - assertTrue(loc.getStart() == 76); - assertTrue(loc.getStop() == 100); - assertTrue(loc.getContigIndex() == 1); - } - - @Test - public void deleteAllButTwoEndBases() { - GenomeLoc e = GenomeLocParser.createGenomeLoc(1, 1, 50); - mSortedSet.add(e); - - // now delete the region - GenomeLoc d = GenomeLocParser.createGenomeLoc(1, 2, 49); - mSortedSet.removeRegion(d); - Iterator iter = mSortedSet.iterator(); - - // we expect to find the two end bases only, this was added because we were - // dropping intervals that were of size one. - GenomeLoc loc = iter.next(); - assertTrue(loc.getStart() == 1); - assertTrue(loc.getStop() == 1); - assertTrue(loc.getContigIndex() == 1); - - loc = iter.next(); - assertTrue(loc.getStart() == 50); - assertTrue(loc.getStop() == 50); - assertTrue(loc.getContigIndex() == 1); - } - @Test - public void deleteAllByRegion() { - GenomeLoc e = GenomeLocParser.createGenomeLoc(1, 1, 100); - mSortedSet.add(e); - for (int x = 1; x < 101; x++) { - GenomeLoc del = GenomeLocParser.createGenomeLoc(1,x,x); - mSortedSet.removeRegion(del); - } - assertTrue(mSortedSet.isEmpty()); - } - @Test - public void deleteSomeByRegion() { - GenomeLoc e = GenomeLocParser.createGenomeLoc(1, 1, 100); - mSortedSet.add(e); - for (int x = 1; x < 50; x++) { - GenomeLoc del = GenomeLocParser.createGenomeLoc(1,x,x); - mSortedSet.removeRegion(del); - } - assertTrue(!mSortedSet.isEmpty()); - assertTrue(mSortedSet.size() == 1); - GenomeLoc loc = mSortedSet.iterator().next(); - assertTrue(loc.getStop() == 100); - assertTrue(loc.getStart() == 50); - } - - @Test - public void deleteSuperRegion() { - GenomeLoc e = GenomeLocParser.createGenomeLoc(1, 10, 20); - GenomeLoc g = GenomeLocParser.createGenomeLoc(1, 70, 100); - mSortedSet.add(g); - mSortedSet.addRegion(e); - assertTrue(mSortedSet.size() == 2); - // now delete a region - GenomeLoc d = GenomeLocParser.createGenomeLoc(1, 15, 75); - mSortedSet.removeRegion(d); - Iterator iter = mSortedSet.iterator(); - GenomeLoc loc = iter.next(); - assertTrue(loc.getStart() == 10); - assertTrue(loc.getStop() == 14); - assertTrue(loc.getContigIndex() == 1); - - loc = iter.next(); - assertTrue(loc.getStart() == 76); - assertTrue(loc.getStop() == 100); - assertTrue(loc.getContigIndex() == 1); - } + @Test public void fromSequenceDictionary() {