Exemplo n.º 1
0
  /* (non-Javadoc)
   * @see edu.usc.epigenome.genomeLibs.MethylDb.CpgWalker.CpgWalker#processWindow(java.util.List)
   */
  @Override
  protected void processWindow(List<Cpg> inWindow) {
    checkWriter();
    super.processWindow(inWindow);

    int windMidpoint =
        (int)
            Math.round(
                ((double) (CpgWalker.windEnd(inWindow) + CpgWalker.windStart(inWindow))) / 2.0);
    double meth = this.methSummarizer.get(0).getValMean(true);
    int winds = CpgWalker.windStart(inWindow);
    int winde = CpgWalker.windEnd(inWindow);
    //		System.err.printf("Processing window CpgWalkerWigWriter: %s\tmeth=%.2f\n",
    // CpgWalker.windStr(inWindow), meth);

    // First wig writer
    wigWriter.printf("%d\t%d\n", windMidpoint, (int) Math.round(100.0 * meth));

    // Then bedgraph
    if (bedgraphWriter != null) {
      int midpointMidpoint =
          (int) Math.floor(((double) lastWindMidpoint + (double) windMidpoint) / 2.0);
      int spanStart = lastSpanEnd + 1;
      int spanEnd =
          (this.lastWindMidpoint > 0) ? midpointMidpoint : -1; // This isn't really correct

      // Don't do it if we're on the first one of the chromosome.
      if (this.lastSpanEnd > 0) {
        if (this.csvMode) {
          bedgraphWriter.printf(
              "%d,%d,%d,%d,%d\n",
              this.curChrNum, winds, winde, (int) Math.round(100.0 * lastMeth), inWindow.size());
        } else {
          bedgraphWriter.printf(
              "%s\t%d\t%d\t%d\n",
              this.curChr, spanStart, spanEnd, (int) Math.round(100.0 * lastMeth));
        }
      }
      //			System.err.printf("\t%s\t%d\t%d\t%d\t%d\n",this.curChr, winds, winde,
      // (int)Math.round(100.0*lastMeth), winde-winds);

      this.lastSpanEnd = spanEnd;
      this.lastWindMidpoint = windMidpoint;
      this.lastMeth = meth;
    }
  }