@Test public void substractComplexExample() { GenomeLoc e = genomeLocParser.createGenomeLoc(contigOneName, 1, 20); mSortedSet.add(e); GenomeLoc r1 = genomeLocParser.createGenomeLoc(contigOneName, 3, 5); GenomeLoc r2 = genomeLocParser.createGenomeLoc(contigOneName, 10, 12); GenomeLoc r3 = genomeLocParser.createGenomeLoc(contigOneName, 16, 18); GenomeLocSortedSet toExclude = new GenomeLocSortedSet(genomeLocParser, Arrays.asList(r1, r2, r3)); GenomeLocSortedSet remaining = mSortedSet.subtractRegions(toExclude); // logger.debug("Initial " + mSortedSet); // logger.debug("Exclude " + toExclude); // logger.debug("Remaining " + remaining); assertEquals(mSortedSet.coveredSize(), 20); assertEquals(toExclude.coveredSize(), 9); assertEquals(remaining.coveredSize(), 11); Iterator<GenomeLoc> it = remaining.iterator(); GenomeLoc p1 = it.next(); GenomeLoc p2 = it.next(); GenomeLoc p3 = it.next(); GenomeLoc p4 = it.next(); assertEquals(genomeLocParser.createGenomeLoc(contigOneName, 1, 2), p1); assertEquals(genomeLocParser.createGenomeLoc(contigOneName, 6, 9), p2); assertEquals(genomeLocParser.createGenomeLoc(contigOneName, 13, 15), p3); assertEquals(genomeLocParser.createGenomeLoc(contigOneName, 19, 20), p4); }
@Test public void deleteAllByRegion() { GenomeLoc e = genomeLocParser.createGenomeLoc(contigOneName, 1, 100); mSortedSet.add(e); for (int x = 1; x < 101; x++) { GenomeLoc del = genomeLocParser.createGenomeLoc(contigOneName, x, x); mSortedSet = mSortedSet.subtractRegions(new GenomeLocSortedSet(genomeLocParser, del)); } assertTrue(mSortedSet.isEmpty()); }
@Test public void deleteSomeByRegion() { GenomeLoc e = genomeLocParser.createGenomeLoc(contigOneName, 1, 100); mSortedSet.add(e); for (int x = 1; x < 50; x++) { GenomeLoc del = genomeLocParser.createGenomeLoc(contigOneName, x, x); mSortedSet = mSortedSet.subtractRegions(new GenomeLocSortedSet(genomeLocParser, 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(contigOneName, 10, 20); GenomeLoc g = genomeLocParser.createGenomeLoc(contigOneName, 70, 100); mSortedSet.add(g); mSortedSet.addRegion(e); assertTrue(mSortedSet.size() == 2); // now delete a region GenomeLoc d = genomeLocParser.createGenomeLoc(contigOneName, 15, 75); mSortedSet = mSortedSet.subtractRegions(new GenomeLocSortedSet(genomeLocParser, d)); Iterator<GenomeLoc> 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); }