Changeset 4244


Ignore:
Timestamp:
07/23/08 16:11:35 (12 years ago)
Author:
nor
Message:

Continuing bug fixes to GACurveFitter and BurnInRenderer

Location:
trunk/loci/slim
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/slim/BurnInRenderer.java

    r4241 r4244  
    5858    maxProgress = 2 * maxDim * maxDim - 1; 
    5959    alive = false; 
    60     maxIterations = Integer.MAX_VALUE; 
    61     maxRCSE = 1.0d; 
     60    maxIterations = 1000; 
     61    maxRCSE = 0.0d; 
    6262    currentDim = 1; 
    6363    numExponentials = 1; 
     
    7878    while(subsampleLevel >= 0 && alive && !estimated) { 
    7979      currentCurves = curveData.getCurves(subsampleLevel); 
    80       while(currentY < currentDim && alive) { 
    81         while(currentX < currentDim && alive) { 
     80      while(currentY < currentDim || !alive) { 
     81        while(currentX < currentDim || !alive) { 
     82          System.out.println("ssl: " + subsampleLevel + " x: " + currentX + " y: " + currentY); 
     83          // HACKY CRAP: GET RID OF THIS IN FINAL VERSION OR SUFFER 
     84          int[] cdata = currentCurves[currentY][currentX].getData(); 
     85          int maxValue = 0; 
     86          int maxIndex = 0; 
     87          for(int i = 0; i < cdata.length; i++) { 
     88            if(cdata[i] > maxValue) { 
     89              maxValue = cdata[i]; 
     90              maxIndex = i; 
     91            } 
     92          } 
     93          currentCurves[currentY][currentX].setFirst(maxIndex); 
     94          System.out.println("Set first to " + maxIndex); 
     95          // END HACKY CRAP 
    8296          currentCurves[currentY][currentX].estimate(); 
    8397          double[][] curve = currentCurves[currentY][currentX].getCurve(); 
     
    8599          for(int i = 0; i < numExponentials; i++) { 
    86100            exponentials[i] = curve[i][1]; 
     101            System.out.println("b" + i + ": " + exponentials[i]); 
    87102          } 
    88103          Arrays.sort(exponentials); 
     104           
    89105          int pixelsize = maxDim / currentDim; 
    90106          for(int x = 0; x < pixelsize; x++) { 
    91107            for(int y = 0; y < pixelsize; y++) { 
    92108              for(int c = 0; c < numExponentials; c++) { 
    93                 image[numExponentials-c-1][((currentY * pixelsize + y) * maxDim) + 
    94                                            (currentX * pixelsize + x)] = exponentials[c]; 
     109                int indexa = numExponentials - c - 1; 
     110                int indexb = ((currentY * pixelsize + y) * maxDim) + (currentX * pixelsize + x); 
     111                image[indexa][indexb] = exponentials[c]; 
     112                //System.out.println("Setting image[" + indexa + "][" + indexb + "] to " + exponentials[c]); 
     113                //image[numExponentials-c-1][((currentY * pixelsize + y) * maxDim) + 
     114                //                           (currentX * pixelsize + x)] = exponentials[c]; 
    95115              } 
    96116            } 
     
    113133      } 
    114134    } 
    115     estimated = true; 
    116135    // initial pass - iterations 
    117     while(estimated && alive && !improving) { 
    118       for(; currentX < currentDim && alive && currentIterations < maxIterations; currentX++) { 
    119         for(; currentY < currentDim && alive && currentIterations < maxIterations; currentY++) { 
    120           currentIterations++; 
    121           currProgress++; 
    122           double currRCSE = currentCurves[currentY][currentX].getReducedChiSquaredError(); 
    123           currentCurves[currentY][currentX].iterate(); 
    124           if(currentCurves[currentY][currentX].getReducedChiSquaredError() < currRCSE) { 
    125             if(currentCurves[currentY][currentX].getReducedChiSquaredError() < maxRCSE) { 
    126               currentIterations = maxIterations; 
     136    while(alive && !improving) { 
     137      if(!estimated) { 
     138        System.out.println("Set estimated"); 
     139        estimated = true; 
     140        currentX = 0; 
     141        currentY = 0; 
     142      } 
     143      for(; currentX < maxDim || !alive; currentX++) { 
     144        for(; currentY < maxDim || !alive; currentY++) { 
     145          currentIterations = 0; 
     146          while(currentIterations < maxIterations) { 
     147            System.out.println("x: " + currentX + " y: " + currentY + " iter: " + currentIterations); 
     148            currentIterations++; 
     149            double currRCSE = currentCurves[currentY][currentX].getReducedChiSquaredError(); 
     150            currentCurves[currentY][currentX].iterate(); 
     151            if(currentCurves[currentY][currentX].getReducedChiSquaredError() < currRCSE) { 
     152              if(currentCurves[currentY][currentX].getReducedChiSquaredError() < maxRCSE) { 
     153                currentIterations = maxIterations; 
     154              } 
     155               
     156              double[][] curve = currentCurves[currentY][currentX].getCurve(); 
     157              double[] exponentials = new double[numExponentials]; 
     158              for(int i = 0; i < numExponentials; i++) { 
     159                exponentials[i] = curve[i][1]; 
     160              } 
     161              Arrays.sort(exponentials); 
     162              for(int c = 0; c < numExponentials; c++) { 
     163                image[numExponentials-c-1][currentY * maxDim + currentX] = exponentials[c]; 
     164              } 
    127165            } 
    128             double[][] curve = currentCurves[currentY][currentX].getCurve(); 
    129             double[] exponentials = new double[numExponentials]; 
    130             for(int i = 0; i < numExponentials; i++) { 
    131               exponentials[i] = curve[i][1]; 
    132             } 
    133             Arrays.sort(exponentials); 
    134             int pixelsize = maxDim / currentDim; 
    135             for(int x = 0; x < pixelsize; x++) { 
    136               for(int y = 0; y < pixelsize; y++) { 
    137                 for(int c = 0; c < numExponentials; c++) { 
    138                   image[numExponentials-c-1][((currentY * pixelsize + y) * maxDim) + 
    139                     (currentX * pixelsize + x)] = exponentials[c]; 
    140                 } 
    141               } 
    142             } 
    143           } 
    144         } 
    145       } 
     166          } 
     167        } 
     168      } 
     169      improving = true; 
    146170    } 
    147171    // continuing improvement 
     172    System.out.println("Got to continuing"); 
    148173    while(alive) { 
    149174      improving = true; 
  • trunk/loci/slim/GACurveFitter.java

    r4241 r4244  
    4848 
    4949  private static final boolean DEBUG = false; 
    50  
    5150  private static final int STALL_GENERATIONS = 5; 
    5251  private static final double STALLED_FACTOR = 2.0d; 
     
    226225  // Initializes the curve fitter with a starting curve estimate. 
    227226  public void estimate() { 
     227    /* 
     228    System.out.println("****** DATA ******"); 
     229    for(int i = 0; i < curveData.length; i++) { 
     230      System.out.println("i: " + i + "  data: " + curveData[i]); 
     231    } 
     232    try { Thread.sleep(1000); } catch(Exception e) {} 
     233    */ 
    228234    if (components >= 1) { 
    229235      // TODO: Estimate c, factor it in below. 
     
    280286      // Fix bug where the estimate occasionally produces negative 
    281287      // tau values. If this happens, we'll sort it out in iteration. 
     288      System.out.println("Exp: " + exp); 
    282289      if (curveEstimate[0][1] <= 0) curveEstimate[0][1] = 1000; 
    283290    } 
Note: See TracChangeset for help on using the changeset viewer.