@Test(expectedExceptions = IllegalArgumentException.class) public void testAddDuplicate() { assertTrue(mSortedSet.size() == 0); GenomeLoc g = genomeLocParser.createGenomeLoc(contigOneName, 0, 0); mSortedSet.add(g); assertTrue(mSortedSet.size() == 1); mSortedSet.add(g); }
@Test(expectedExceptions = IllegalArgumentException.class) public void addThrowsException() { assertTrue(mSortedSet.size() == 0); GenomeLoc g = genomeLocParser.createGenomeLoc(contigOneName, 1, 50); mSortedSet.add(g); GenomeLoc f = genomeLocParser.createGenomeLoc(contigOneName, 30, 80); mSortedSet.add(f); }
@Test public void testAdd() { GenomeLoc g = genomeLocParser.createGenomeLoc(contigOneName, 0, 0); assertTrue(mSortedSet.size() == 0); mSortedSet.add(g); assertTrue(mSortedSet.size() == 1); }
@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 overlap() { for (int i = 1; i < 6; i++) { final int start = i * 10; mSortedSet.add(genomeLocParser.createGenomeLoc(contigOneName, start, start + 1)); } // test matches in and around interval assertFalse(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 9, 9))); assertTrue(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 10, 10))); assertTrue(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 11, 11))); assertFalse(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 12, 12))); // test matches spanning intervals assertTrue(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 14, 20))); assertTrue(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 11, 15))); assertTrue(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 30, 40))); assertTrue(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 51, 53))); // test miss assertFalse(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 12, 19))); // test exact match after miss assertTrue(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 40, 41))); // test matches at beginning of intervals assertFalse(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 5, 6))); assertTrue(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 0, 10))); // test matches at end of intervals assertFalse(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 52, 53))); assertTrue(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 51, 53))); assertFalse(mSortedSet.overlaps(genomeLocParser.createGenomeLoc(contigOneName, 52, 53))); }
/** * create a list of genomic locations, given a reference sequence * * @param dict the sequence dictionary to create a collection from * @return the GenomeLocSet of all references sequences as GenomeLoc's */ public static GenomeLocSortedSet createSetFromSequenceDictionary(SAMSequenceDictionary dict) { GenomeLocParser parser = new GenomeLocParser(dict); GenomeLocSortedSet returnSortedSet = new GenomeLocSortedSet(parser); for (SAMSequenceRecord record : dict.getSequences()) { returnSortedSet.add( parser.createGenomeLoc(record.getSequenceName(), 1, record.getSequenceLength())); } return returnSortedSet; }
@Test public void addRegion() { assertTrue(mSortedSet.size() == 0); GenomeLoc g = genomeLocParser.createGenomeLoc(contigOneName, 1, 50); mSortedSet.add(g); GenomeLoc f = genomeLocParser.createGenomeLoc(contigOneName, 30, 80); mSortedSet.addRegion(f); assertTrue(mSortedSet.size() == 1); }
@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 addRegionsOutOfOrder() { final String contigTwoName = header.getSequenceDictionary().getSequence(2).getSequenceName(); assertTrue(mSortedSet.size() == 0); GenomeLoc g = genomeLocParser.createGenomeLoc(contigTwoName, 1, 50); mSortedSet.add(g); GenomeLoc f = genomeLocParser.createGenomeLoc(contigOneName, 30, 80); mSortedSet.addRegion(f); assertTrue(mSortedSet.size() == 2); assertTrue(mSortedSet.toList().get(0).getContig().equals(contigOneName)); assertTrue(mSortedSet.toList().get(1).getContig().equals(contigTwoName)); }
@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 mergingOverlappingAbove() { GenomeLoc e = genomeLocParser.createGenomeLoc(contigOneName, 0, 50); GenomeLoc g = genomeLocParser.createGenomeLoc(contigOneName, 49, 100); assertTrue(mSortedSet.size() == 0); mSortedSet.add(g); assertTrue(mSortedSet.size() == 1); mSortedSet.addRegion(e); assertTrue(mSortedSet.size() == 1); Iterator<GenomeLoc> iter = mSortedSet.iterator(); GenomeLoc loc = iter.next(); assertEquals(loc.getStart(), 0); assertEquals(loc.getStop(), 100); assertEquals(loc.getContigIndex(), 1); }
@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); }
public GenomeLocSortedSet(GenomeLocParser parser, Collection<GenomeLoc> l) { this(parser); for (GenomeLoc e : l) add(e); }
public GenomeLocSortedSet(GenomeLocParser parser, GenomeLoc e) { this(parser); add(e); }