Ignore:
Timestamp:
01/27/12 19:47:49 (8 years ago)
Author:
aivar
Message:

Continued refactoring. Fitted image working better now.

Location:
trunk/projects/slim-plugin/src/main/java/imagej/slim
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/projects/slim-plugin/src/main/java/imagej/slim/Test.java

    r7811 r7875  
    4747         
    4848        IGlobalFitParams globalFitParams = new GlobalFitParams(); 
    49         globalFitParams.setFitAlgorithm(FitAlgorithm.RLD_LMA); 
     49        globalFitParams.setFitAlgorithm(FitAlgorithm.SLIMCURVE_RLD_LMA); 
    5050        globalFitParams.setFitFunction(FitFunction.SINGLE_EXPONENTIAL); 
    5151        globalFitParams.setXInc(xInc); 
  • trunk/projects/slim-plugin/src/main/java/imagej/slim/fitting/FitInfo.java

    r7867 r7875  
    55package imagej.slim.fitting; 
    66 
     7import loci.curvefitter.ICurveFitter.FitAlgorithm; 
     8import loci.curvefitter.ICurveFitter.FitFunction; 
     9import loci.curvefitter.ICurveFitter.FitRegion; 
     10import loci.curvefitter.ICurveFitter.NoiseModel; 
     11 
    712/** 
    813 * 
     
    1015 */ 
    1116public class FitInfo { 
    12      
    13     public static enum FitRegion { 
    14         SUMMED, ROI, POINT, EACH 
    15     } 
    16  
    17     public static enum FitAlgorithm { 
    18        JAOLHO, SLIMCURVE_RLD, SLIMCURVE_LMA, SLIMCURVE_RLD_LMA 
    19     } 
    20  
    21     public static enum FitFunction { 
    22         SINGLE_EXPONENTIAL, DOUBLE_EXPONENTIAL, TRIPLE_EXPONENTIAL, STRETCHED_EXPONENTIAL 
    23     } 
    24  
    25     public static enum NoiseModel { 
    26         GAUSSIAN_FIT, POISSON_FIT, POISSON_DATA, MAXIMUM_LIKELIHOOD 
    27     } 
    28      
     17    private volatile boolean _cancel = false; 
    2918    private int _channel; 
    3019    private FitRegion _region; 
     
    3726    private int _startDecay; 
    3827    private int _stopDecay; 
     28    private double _xInc; 
    3929    private int _threshold; //TODO this s/b accounted for by IInputImage 
    4030    private double _chiSquareTarget; 
     
    6555 
    6656    /** 
     57     * Gets whether to cancel current fit. 
     58     *  
     59     * @return  
     60     */ 
     61    public boolean getCancel() { 
     62        return _cancel; 
     63    } 
     64 
     65    /** 
     66     * Sets whether to cancel current fit. 
     67     *  
     68     * @param cancel  
     69     */ 
     70    public void setCancel(boolean cancel) { 
     71        _cancel = cancel; 
     72    } 
     73 
     74    /** 
    6775     * Gets current channel 
    6876     *  
     
    242250    public void setStopDecay(int bin) { 
    243251        _stopDecay = bin; 
     252    } 
     253 
     254    /** 
     255     * Gets x increment for each bin. 
     256     *  
     257     * @return  
     258     */ 
     259    public double getXInc() { 
     260        return _xInc; 
     261    } 
     262 
     263    /** 
     264     * Gets prompt or instrument response function. 
     265     * @return  
     266     */ 
     267    public double[] getPrompt() { 
     268        return _prompt; 
     269    } 
     270     
     271    /** 
     272     * Sets prompt or instrument response function. 
     273     *  
     274     * @param prompt  
     275     */ 
     276    public void setPrompt(double[] prompt) { 
     277        _prompt = prompt; 
     278    } 
     279 
     280    /** 
     281     * Gets start of prompt. 
     282     *  
     283     * @return  
     284     */ 
     285    public int getStartPrompt() { 
     286        return _startPrompt; 
     287    } 
     288     
     289    /** 
     290     * Sets start of prompt. 
     291     *  
     292     * @param startPrompt  
     293     */ 
     294    public void setStartPrompt(int startPrompt) { 
     295        _startPrompt = startPrompt; 
     296    } 
     297     
     298    /** 
     299     * Gets end of prompt. 
     300     *  
     301     * @return  
     302     */ 
     303    public int getStopPrompt() { 
     304        return _stopPrompt; 
     305    } 
     306 
     307    /** 
     308     * Sets start of prompt. 
     309     *  
     310     * @param stopPrompt  
     311     */ 
     312    public void setStopPrompt(int stopPrompt) { 
     313        _stopPrompt = stopPrompt; 
     314    } 
     315 
     316    /** 
     317     * Sets x increment for each bin. 
     318     *  
     319     * @param xInc  
     320     */ 
     321    public void setXInc(double xInc) { 
     322        _xInc = xInc; 
    244323    } 
    245324 
     
    416495            case STRETCHED_EXPONENTIAL: 
    417496                components = 1; 
     497                break; 
    418498            case DOUBLE_EXPONENTIAL: 
    419499                components = 2; 
     500                break; 
    420501            case TRIPLE_EXPONENTIAL: 
    421502                components = 3; 
     503                break; 
    422504        } 
    423505        return components; 
  • trunk/projects/slim-plugin/src/main/java/imagej/slim/fitting/callable/FittingEngineCallable.java

    r7842 r7875  
    4545 
    4646/** 
    47  * This class brings together everything needed to fit one pixel. 
     47 * This class brings together everything needed to fit one pixel.  It is a  
     48 * Callable, meant to be called from multiple threads. 
    4849 * 
    4950 * @author Aivar Grislis 
     
    5455    private ILocalFitParams _localParams; 
    5556    private IFitResults _result; 
    56  
     57     
    5758    @Override 
    5859    public void setup(final ICurveFitter curveFitter, 
     
    7778        curveFitData.setYCount(_localParams.getY()); 
    7879        curveFitData.setSig(_localParams.getSig()); 
    79         curveFitData.setParams(_localParams.getParams()); 
    80         curveFitData.setYFitted(_localParams.getYFitted()); //TODO awkward and kludgey!  How is this a local parameter?  It actually winds up in results. 
     80        curveFitData.setParams(_localParams.getParams().clone()); // params is overwritten 
     81        curveFitData.setYFitted(_localParams.getYFitted()); 
    8182        ICurveFitData[] curveFitDataArray = new ICurveFitData[] { curveFitData }; 
    8283 
     
    8788        _result.setParams(curveFitData.getParams()); 
    8889        _result.setYFitted(curveFitData.getYFitted()); 
    89  
     90  
    9091        return _result; 
    91     } 
     92    }    
    9293} 
  • trunk/projects/slim-plugin/src/main/java/imagej/slim/fitting/images/AbstractBaseColorizedImage.java

    r7865 r7875  
    111111 
    112112        if (null != minMaxLUT) { 
    113             System.out.println("Internal redisplay " + minMaxLUT[0] + " " + minMaxLUT[1]); 
    114113            //TODO horrible kludge here!!!  But why on earth would these be zero? 
    115114            //TODO #2 wound up enabling this again, otherwise you don't get any images except current image 
     
    118117            } 
    119118        } 
    120         else System.out.println("min max null"); 
    121          
    122         System.out.println("RECALC " + numInvalid(_values)); 
    123119    } 
    124120 
     
    128124     */ 
    129125    public void redisplay() { 
    130         System.out.println("public redisplay"); 
    131126        double[] minMaxLUT = _histogramData.getMinMaxLUT(); 
    132127        redisplay(minMaxLUT); 
     
    139134        minMaxLUT = PaletteFix.adjustMinMax(minMaxLUT[0], minMaxLUT[1]); 
    140135        _image.setMinAndMax(minMaxLUT[0], minMaxLUT[1]); 
    141         System.out.println("SETTING MIN AND MAX LUT TO " + minMaxLUT[0] + " " + minMaxLUT[1]); 
    142136        _imagePlus.setProcessor(_image.duplicate()); 
    143137    } 
    144      
    145     private int numInvalid(double[][] values) { 
    146         int count = 0; 
    147         int num = 0; 
    148         for (int y = 0; y < values[0].length; ++y) { 
    149             for (int x = 0; x < values.length; ++x) { 
    150                 if (Double.isNaN(values[x][y])) { 
    151                     ++num; 
    152                 } 
    153                 ++count; 
    154             } 
    155         } 
    156         System.out.println("checked " + count + " pixels,  found invalid " + num); 
    157         return num; 
    158     }    
     138 
    159139     
    160140    /** 
  • trunk/projects/slim-plugin/src/main/java/imagej/slim/histogram/HistogramData.java

    r7865 r7875  
    200200        minLUT = maxLUT = 0.0; 
    201201        minView = maxView = 0.0; 
    202         if (_displayChannels || _combineChannels) { 
     202        if (1 < _channel.length && (_displayChannels || _combineChannels)) { 
    203203            minData = Double.MAX_VALUE; 
    204204            maxData = Double.MIN_VALUE; 
     
    243243 
    244244        if (null != _listener) { 
    245             System.out.println("tell listener " + _minView + " " + _maxView + "," + _minLUT + " " + _maxLUT); 
    246245            _listener.minMaxChanged(_minView, _maxView, _minLUT, _maxLUT); 
    247246        } 
     
    260259            bin[i] = 0; 
    261260        } 
    262         System.out.println("bin[3] is " + bin[3] + " bin[33] " + bin[33]); 
    263         System.out.println("_minView is " + _minView + " max " + _maxView); 
    264         System.out.println("_minLUT is " + _minLUT + " maxLUT " + _maxLUT); 
    265261         
    266262        if (_displayChannels) { 
  • trunk/projects/slim-plugin/src/main/java/imagej/slim/histogram/HistogramTool.java

    r7861 r7875  
    215215        public void minMaxChanged(double minView, double maxView, 
    216216                double minLUT, double maxLUT) { 
    217             System.out.println("CHANGED " + minView + " " + maxView + ", " + minLUT + " " + maxLUT); 
    218217            changed(minView, maxView, minLUT, maxLUT); 
    219218        } 
Note: See TracChangeset for help on using the changeset viewer.