@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());
  }
示例#3
0
  /**
   * 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();
  }