Changeset 1858


Ignore:
Timestamp:
11/28/06 16:30:46 (14 years ago)
Author:
curtis
Message:

Slim Plotter bugfixes and improvements:

  • Fix overflow bug in new progress bar computation.
  • Finish support for lifetime colorization option.
  • Fix bug in individual channel toggling.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/apps/slim/SlimPlotter.java

    r1854 r1858  
    7777  private double roiPercent; 
    7878  private float maxVal; 
     79 
     80  // fit parameters 
     81  private float[][] tau; 
    7982 
    8083  // GUI components for parameter dialog box 
     
    247250 
    248251    // pop up progress monitor 
    249     progress.setProgress(1); // estimate: 0.1% 
     252    setProgress(progress, 1); // estimate: 0.1% 
    250253    if (progress.isCanceled()) System.exit(0); 
    251254 
     
    260263      if (len > blockSize) len = blockSize; 
    261264      fin.readFully(data, off, len); 
    262       progress.setProgress(700 * 
    263         (off + blockSize) / data.length); // estimate: 0% -> 70% 
     265      setProgress(progress, (int) (700L * 
     266        (off + blockSize) / data.length)); // estimate: 0% -> 70% 
    264267      if (progress.isCanceled()) System.exit(0); 
    265268    } 
     
    290293    RealType vTypeRes = RealType.getRealType("value_res"); 
    291294    bcvFuncRes = new FunctionType(bc, vTypeRes); 
    292     progress.setProgress(710); // estimate: 71% 
     295    setProgress(progress, 710); // estimate: 71% 
    293296    if (progress.isCanceled()) System.exit(0); 
    294297 
     
    306309    iPlot.enableEvent(DisplayEvent.MOUSE_DRAGGED); 
    307310    iPlot.addDisplayListener(this); 
    308     progress.setProgress(720); // estimate: 72% 
     311    setProgress(progress, 720); // estimate: 72% 
    309312    if (progress.isCanceled()) System.exit(0); 
    310313 
     
    315318    DataReferenceImpl intensityRef = new DataReferenceImpl("intensity"); 
    316319    iPlot.addReference(intensityRef); 
    317     progress.setProgress(730); // estimate: 73% 
     320    setProgress(progress, 730); // estimate: 73% 
    318321    if (progress.isCanceled()) System.exit(0); 
    319322 
     
    350353      new ConstantMap(0.1, Display.Alpha) 
    351354    }); 
    352     progress.setProgress(740); // estimate: 74% 
     355    setProgress(progress, 740); // estimate: 74% 
    353356    if (progress.isCanceled()) System.exit(0); 
    354357 
     
    357360      iPlot.make_matrix(0, 0, 0, 0.85, 0, 0, 0)); 
    358361 
    359     progress.setProgress(750); // estimate: 75% 
     362    setProgress(progress, 750); // estimate: 75% 
    360363    if (progress.isCanceled()) System.exit(0); 
    361364 
     
    367370    zMapFit = new ScalarMap(vTypeFit, Display.ZAxis); 
    368371    zMapRes = new ScalarMap(vTypeRes, Display.ZAxis); 
    369     vMap = new ScalarMap(vType, Display.RGB); 
     372    vMap = new ScalarMap(vType2, Display.RGB); 
    370373    //vMapFit = new ScalarMap(vTypeFit, Display.RGB); 
    371374    vMapRes = new ScalarMap(vTypeRes, Display.RGB); 
     
    378381    //decayPlot.addMap(vMapFit); 
    379382    decayPlot.addMap(vMapRes); 
    380     progress.setProgress(760); // estimate: 76% 
     383    setProgress(progress, 760); // estimate: 76% 
    381384    if (progress.isCanceled()) System.exit(0); 
    382385 
     
    398401      resRend.toggle(false); 
    399402    } 
    400     progress.setProgress(770); // estimate: 77% 
     403    setProgress(progress, 770); // estimate: 77% 
    401404    if (progress.isCanceled()) System.exit(0); 
    402405 
     
    426429    pc.setAspectCartesian( 
    427430      new double[] {2, 1, 1}); 
    428     progress.setProgress(780); // estimate: 78% 
     431    setProgress(progress, 780); // estimate: 78% 
    429432    if (progress.isCanceled()) System.exit(0); 
    430433 
     
    455458          pix[c][0][width * h + w] = sum; 
    456459        } 
    457         progress.setProgress(780 + 140 * 
     460        setProgress(progress, 780 + 140 * 
    458461          (height * c + h + 1) / (channels * height)); // estimate: 78% -> 92% 
    459462        if (progress.isCanceled()) System.exit(0); 
     
    484487        } 
    485488        peaks[c] = ndx; 
    486         progress.setProgress(920 + 20 * 
     489        setProgress(progress, 920 + 20 * 
    487490          (c + 1) / channels); // estimate: 92% -> 94% 
    488491        if (progress.isCanceled()) System.exit(0); 
     
    507510            " (shifting by " + shift + ")"); 
    508511        } 
    509         progress.setProgress(940 + 20 * 
     512        setProgress(progress, 940 + 20 * 
    510513          (c + 1) / channels); // estimate: 94% -> 96% 
    511514        if (progress.isCanceled()) System.exit(0); 
     
    553556    intensityPane.add(iPlotPane, BorderLayout.CENTER); 
    554557 
    555     progress.setProgress(970); // estimate: 97% 
     558    setProgress(progress, 970); // estimate: 97% 
    556559    if (progress.isCanceled()) System.exit(0); 
    557560 
     
    579582    cc.setTable(ColorControl.initTableGreyWedge(new float[3][256])); 
    580583 
    581     progress.setProgress(980); // estimate: 98% 
     584    setProgress(progress, 980); // estimate: 98% 
    582585    if (progress.isCanceled()) System.exit(0); 
    583586 
     
    685688    exportData.addActionListener(this); 
    686689 
    687     progress.setProgress(990); // estimate: 99% 
     690    setProgress(progress, 990); // estimate: 99% 
    688691    if (progress.isCanceled()) System.exit(0); 
    689692 
     
    725728    masterPane.add(decayPane, BorderLayout.CENTER); 
    726729 
    727     progress.setProgress(999); // estimate: 99.9% 
     730    setProgress(progress, 999); // estimate: 99.9% 
    728731    if (progress.isCanceled()) System.exit(0); 
    729732 
     
    735738      (screen.height - size.height) / 2); 
    736739    masterWindow.setVisible(true); 
    737     progress.setProgress(1000); 
     740    setProgress(progress, 1000); 
    738741    progress.close(); 
    739742    plotData(true, true, true); 
     
    991994      progress.setMillisToDecideToPopup(50); 
    992995      int p = 0; 
    993       if (roiCount == 1) { 
    994         decayLabel.setText("Decay curve for " + "(" + roiX + ", " + roiY + ")"); 
    995       } 
    996       else { 
    997         decayLabel.setText("Decay curve for " + roiCount + 
    998           " pixels (" + roiPercent + "%)"); 
    999       } 
     996 
    1000997      boolean doLog = log.isSelected(); 
    1001998      boolean doDataLines = dataLines.isSelected(); 
     
    10271024          if (doLog) samps[ndx] = (float) Math.log(samps[ndx] + 1); 
    10281025          if (samps[ndx] > maxVal) maxVal = samps[ndx]; 
    1029           progress.setProgress(++p); 
     1026          setProgress(progress, ++p); 
    10301027          if (progress.isCanceled()) plotCanceled = true; 
    10311028          if (plotCanceled) break; 
     
    10371034      double[][] fitResults = null; 
    10381035      int numExp = ((Integer) numCurves.getValue()).intValue(); 
    1039       float[][] tau = new float[channels][numExp]; 
    1040       for (int c=0; c<channels; c++) Arrays.fill(tau[c], Float.NaN); 
    10411036      if (adjustPeaks && doRefit) { 
    10421037        // perform exponential curve fitting: y(x) = a * e^(-b*t) + c 
    10431038        progress.setNote("Fitting curves"); 
    10441039        fitResults = new double[channels][]; 
     1040        tau = new float[channels][numExp]; 
     1041        for (int c=0; c<channels; c++) Arrays.fill(tau[c], Float.NaN); 
    10451042        ExpFunction func = new ExpFunction(numExp); 
    10461043        float[] params = new float[3 * numExp]; 
     
    10931090          } 
    10941091          fitResults[c] = lma.parameters; 
    1095           progress.setProgress(++p); 
     1092          setProgress(progress, ++p); 
    10961093          cc++; 
    10971094        } 
    10981095      } 
     1096 
     1097      float tauMin = Float.NaN, tauMax = Float.NaN; 
     1098      if (tau != null) { 
     1099        tauMin = tauMax = tau[0][0]; 
     1100        for (int i=1; i<tau.length; i++) { 
     1101          if (tau[i][0] < tauMin) tauMin = tau[i][0]; 
     1102          if (tau[i][0] > tauMax) tauMax = tau[i][0]; 
     1103        } 
     1104      } 
     1105      StringBuffer sb = new StringBuffer(); 
     1106      sb.append("Decay curve for "); 
     1107      if (roiCount == 1) { 
     1108        sb.append("("); 
     1109        sb.append(roiX); 
     1110        sb.append(", "); 
     1111        sb.append(roiY); 
     1112        sb.append(")"); 
     1113      } 
     1114      else { 
     1115        sb.append(roiCount); 
     1116        sb.append(" pixels ("); 
     1117        sb.append(roiPercent); 
     1118        sb.append("%)"); 
     1119      } 
     1120      if (tauMin == tauMin && tauMax == tauMax) { 
     1121        sb.append("; "); 
     1122        sb.append(TAU); 
     1123        sb.append("=["); 
     1124        sb.append(tauMin); 
     1125        sb.append(", "); 
     1126        sb.append(tauMax); 
     1127        sb.append("]"); 
     1128      } 
     1129      decayLabel.setText(sb.toString()); 
    10991130 
    11001131      try { 
     
    11181149          if (!cVisible[c]) continue; 
    11191150          for (int t=0; t<timeBins; t++) { 
    1120             int ndx = timeBins * c + t; 
    1121             colors[ndx] = doTauColors ? tau[c][0] : samps[ndx]; 
     1151            int ndx = timeBins * cc + t; 
     1152            colors[ndx] = doTauColors ? 
     1153              (tau == null ? Float.NaN : tau[c][0]) : samps[ndx]; 
    11221154          } 
    11231155          cc++; 
     
    11651197      } 
    11661198      catch (Exception exc) { exc.printStackTrace(); } 
    1167       progress.setProgress(++p); 
     1199      setProgress(progress, ++p); 
    11681200      progress.close(); 
    11691201    } 
     
    13521384  } 
    13531385 
     1386  /** Updates progress monitor status; mainly for debugging. */ 
     1387  private static void setProgress(ProgressMonitor progress, int p) { 
     1388    progress.setProgress(p); 
     1389  } 
     1390 
    13541391  // -- Helper classes -- 
    13551392 
Note: See TracChangeset for help on using the changeset viewer.