@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 testSizeBeforeLoc() { GenomeLoc r1 = genomeLocParser.createGenomeLoc(contigOneName, 3, 5); GenomeLoc r2 = genomeLocParser.createGenomeLoc(contigOneName, 10, 12); GenomeLoc r3 = genomeLocParser.createGenomeLoc(contigOneName, 16, 18); mSortedSet.addAll(Arrays.asList(r1, r2, r3)); testSizeBeforeLocX(2, 0); testSizeBeforeLocX(3, 0); testSizeBeforeLocX(4, 1); testSizeBeforeLocX(5, 2); testSizeBeforeLocX(6, 3); testSizeBeforeLocX(10, 3); testSizeBeforeLocX(11, 4); testSizeBeforeLocX(12, 5); testSizeBeforeLocX(13, 6); testSizeBeforeLocX(15, 6); testSizeBeforeLocX(16, 6); testSizeBeforeLocX(17, 7); testSizeBeforeLocX(18, 8); testSizeBeforeLocX(19, 9); testSizeBeforeLocX(50, 9); testSizeBeforeLocX(50, (int) mSortedSet.coveredSize()); }
/** * Create a new ProgressMeter * * @param performanceLogFile an optional performance log file where a table of performance logs * will be written * @param processingUnitName the name of the unit type being processed, suitable for saying X * seconds per processingUnitName * @param processingIntervals the intervals being processed */ public ProgressMeter( final File performanceLogFile, final String processingUnitName, final GenomeLocSortedSet processingIntervals) { if (processingUnitName == null) throw new IllegalArgumentException("processingUnitName cannot be null"); if (processingIntervals == null) throw new IllegalArgumentException("Target intervals cannot be null"); this.processingUnitName = processingUnitName; this.regionsBeingProcessed = processingIntervals; // setup the performance logger output, if requested if (performanceLogFile != null) { try { this.performanceLog = new PrintStream(new FileOutputStream(performanceLogFile)); final List<String> pLogHeader = Arrays.asList( "elapsed.time", "units.processed", "processing.speed", "bp.processed", "bp.speed", "genome.fraction.complete", "est.total.runtime", "est.time.remaining"); performanceLog.println(Utils.join("\t", pLogHeader)); } catch (FileNotFoundException e) { throw new UserException.CouldNotCreateOutputFile(performanceLogFile, e); } } else { performanceLog = null; } // cached for performance reasons targetSizeInBP = processingIntervals.coveredSize(); // start up the timer progressMeterDaemon = new ProgressMeterDaemon(this); start(); }