Changeset 7874 for trunk/projects


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

Added 'noise' and 'chi_square_delta' parameters to SLIMCurve calls. Added 'chi_square_delta' to ICurveFitData. Tidied up ICurveFitData enums.

Location:
trunk/projects/curve-fitter/src/main/java/loci/curvefitter
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/projects/curve-fitter/src/main/java/loci/curvefitter/GrayCurveFitter.java

    r7810 r7874  
    9090        //TODO ARG August use initial X of 0. 
    9191 
    92         if (FitAlgorithm.RLD.equals(m_fitAlgorithm)) { 
     92        if (FitAlgorithm.SLIMCURVE_RLD.equals(m_fitAlgorithm)) { 
    9393            float xincr = (float) m_xInc; 
    9494            int fitStart = start; 
  • trunk/projects/curve-fitter/src/main/java/loci/curvefitter/GrayNRCurveFitter.java

    r7810 r7874  
    152152        } 
    153153 
    154         if (FitAlgorithm.RLD.equals(m_fitAlgorithm)) { 
     154        if (FitAlgorithm.SLIMCURVE_RLD.equals(m_fitAlgorithm)) { 
    155155            // RLD or triple integral fit 
    156156            DoubleByReference z = new DoubleByReference(); 
  • trunk/projects/curve-fitter/src/main/java/loci/curvefitter/ICurveFitData.java

    r7841 r7874  
    171171     * @param chiSquare targetted chi square 
    172172     */ 
    173     public void setChiSquareTarget(double chiSquareTarget);  
     173    public void setChiSquareTarget(double chiSquareTarget); 
     174 
     175    /** 
     176     * Sets chi square delta. 
     177     *  
     178     * @return  
     179     */ 
     180    public double getChiSquareDelta(); 
     181 
     182    /** 
     183     * Gets chi square delta. 
     184     *  
     185     * @param chiSquareDelta  
     186     */ 
     187    public void setChiSquareDelta(double chiSquareDelta); 
    174188 
    175189    /** 
  • trunk/projects/curve-fitter/src/main/java/loci/curvefitter/ICurveFitter.java

    r7841 r7874  
    4141 */ 
    4242public interface ICurveFitter { 
    43      
     43 
     44    /** 
     45     * Specifies fitting region. 
     46     */ 
     47    public static enum FitRegion { 
     48        SUMMED, ROI, POINT, EACH 
     49    } 
     50 
    4451    /** 
    4552     * Specifies fitting algorithm. 
     53     *  
    4654     */ 
    47     public enum FitAlgorithm { 
    48         RLD, LMA, RLD_LMA 
     55    public static enum FitAlgorithm { 
     56       JAOLHO, SLIMCURVE_RLD, SLIMCURVE_LMA, SLIMCURVE_RLD_LMA 
    4957    } 
     58    // was RLD, LMA, RLD_LMA 
    5059     
    5160    /** 
    5261     * Specifies curves that this fits. 
    5362     */ 
    54     public enum FitFunction { 
     63    public static enum FitFunction { 
    5564        SINGLE_EXPONENTIAL, DOUBLE_EXPONENTIAL, TRIPLE_EXPONENTIAL, STRETCHED_EXPONENTIAL 
    5665    } 
     
    5968     * Specifies noise model for fit. 
    6069     */ 
    61     public enum NoiseModel { 
    62         GAUSSIAN_FIT, POISSON_FIT, POISSON_DATA, MAXIMUM_LIKELIHOOD 
     70    public static enum NoiseModel { 
     71        CONST, GIVEN, POISSON_DATA, POISSON_FIT, GAUSSIAN_FIT, MAXIMUM_LIKELIHOOD 
    6372    } 
    6473 
  • trunk/projects/curve-fitter/src/main/java/loci/curvefitter/SLIMCurveFitter.java

    r7860 r7874  
    3535package loci.curvefitter; 
    3636 
    37 //TODO old style: 
     37//TODO used for JNA version 
    3838import com.sun.jna.Library; 
    3939import com.sun.jna.Native; 
     
    7474                           double instr[], 
    7575                           int nInstr, 
     76                           int noise, 
    7677                           double sig[], 
    7778                           DoubleByReference z, 
     
    9394                           double instr[], 
    9495                           int n_instr, 
     96                           int noise, 
    9597                           double sig[], 
    9698                           double param[], 
     
    99101                           double fitted[], 
    100102                           DoubleByReference chiSquare, 
    101                            double chiSquareTarget 
     103                           double chiSquareTarget, 
     104                           double chiSquareDelta 
    102105                           ); 
    103106    } 
     
    133136                           double instr[], 
    134137                           int nInstr, 
     138                           int noise, 
    135139                           double sig[], 
    136140                           double z[], 
     
    170174                           double instr[], 
    171175                           int n_instr, 
     176                           int noise, 
    172177                           double sig[], 
    173178                           double param[], 
     
    176181                           double fitted[], 
    177182                           double chiSquare[], 
    178                            double chiSquareTarget 
     183                           double chiSquareTarget, 
     184                           double chiSquareDelta 
    179185                           ); 
    180186 
     
    182188    public int fitData(ICurveFitData[] dataArray, int start, int stop) { 
    183189        int returnValue = 0; 
     190        int noise = getNoiseModel().ordinal(); 
     191        System.out.println("noise is " + noise); 
     192         
     193        //TODO temporary 
     194        double chiSquareDelta = 0.0; 
    184195 
    185196        // load the native library, if not already loaded 
     
    212223            } 
    213224        } 
    214         if (s_libraryLoaded) { 
    215             IJ.log("Library loaded"); 
    216         } 
    217         else { 
     225        if (!s_libraryLoaded) { 
    218226            IJ.log("Unable to do fit."); 
    219227            return 0; 
     
    226234        // portion to be fitted and specify an initial x. 
    227235        //TODO ARG August use initial X of 0. 
    228  
     236         
    229237        boolean[] free = m_free.clone(); 
    230         if (FitAlgorithm.RLD.equals(m_fitAlgorithm)) { 
     238        if (FitAlgorithm.SLIMCURVE_RLD.equals(m_fitAlgorithm)) { 
    231239            // pure RLD (versus RLD followed by LMA) has no way to fix 
    232240            // parameters 
     
    239247            // JNA version 
    240248            DoubleByReference chiSquare = new DoubleByReference(); 
    241             double chiSquareTarget = 1.0; //TODO s/b specified incoming 
    242249             
    243             if (FitAlgorithm.RLD.equals(m_fitAlgorithm) || FitAlgorithm.RLD_LMA.equals(m_fitAlgorithm)) { 
     250            if (FitAlgorithm.SLIMCURVE_RLD.equals(m_fitAlgorithm) || FitAlgorithm.SLIMCURVE_RLD_LMA.equals(m_fitAlgorithm)) { 
    244251                // RLD or triple integral fit 
    245252                DoubleByReference z = new DoubleByReference(); 
     
    252259                    tau.setValue(data.getParams()[3]); 
    253260                    z.setValue(  data.getParams()[1]); 
    254  
     261                     
    255262                    // get IRF curve, if any 
    256263                    double[] instrumentResponse = getInstrumentResponse(data.getPixels()); 
     
    259266                        nInstrumentResponse = instrumentResponse.length; 
    260267                    } 
    261  
     268                     
    262269                    returnValue = s_library.RLD_fit( 
    263270                            m_xInc, 
     
    267274                            instrumentResponse, 
    268275                            nInstrumentResponse, 
     276                            noise, 
    269277                            data.getSig(), 
    270278                            z, 
     
    273281                            data.getYFitted(), 
    274282                            chiSquare, 
    275                             chiSquareTarget 
     283                            data.getChiSquareTarget() 
    276284                            ); 
    277285                    // set outgoing parameters, unless they are fixed 
     
    289297            } 
    290298             
    291             if (FitAlgorithm.LMA.equals(m_fitAlgorithm) || FitAlgorithm.RLD_LMA.equals(m_fitAlgorithm)) { 
     299            if (FitAlgorithm.SLIMCURVE_LMA.equals(m_fitAlgorithm) || FitAlgorithm.SLIMCURVE_RLD_LMA.equals(m_fitAlgorithm)) { 
    292300                // LMA fit 
    293301                for (ICurveFitData data: dataArray) { 
     
    303311                            m_instrumentResponse, 
    304312                            nInstrumentResponse, 
     313                            noise, 
    305314                            data.getSig(), 
    306315                            data.getParams(), 
     
    309318                            data.getYFitted(), 
    310319                            chiSquare, 
    311                             chiSquareTarget 
     320                            data.getChiSquareTarget(), 
     321                            data.getChiSquareDelta() 
    312322                            ); 
    313323                } 
     
    319329            // use array to pass double by reference 
    320330            double[] chiSquare = new double[1]; 
    321             double chiSquareTarget = 1.0; //TODO s/b specified incoming 
    322331             
    323             if (FitAlgorithm.RLD.equals(m_fitAlgorithm) || FitAlgorithm.RLD_LMA.equals(m_fitAlgorithm)) { 
     332            if (FitAlgorithm.SLIMCURVE_RLD.equals(m_fitAlgorithm) || FitAlgorithm.SLIMCURVE_RLD_LMA.equals(m_fitAlgorithm)) { 
    324333                // RLD or triple integral fit 
    325334 
     
    348357                            instrumentResponse, 
    349358                            nInstrumentResponse, 
     359                            noise, 
    350360                            data.getSig(), 
    351361                            z, 
     
    354364                            data.getYFitted(), 
    355365                            chiSquare, 
    356                             chiSquareTarget 
     366                            data.getChiSquareTarget() 
    357367                            ); 
    358368 
     
    371381            } 
    372382 
    373             if (FitAlgorithm.LMA.equals(m_fitAlgorithm) || FitAlgorithm.RLD_LMA.equals(m_fitAlgorithm)) { 
     383            if (FitAlgorithm.SLIMCURVE_LMA.equals(m_fitAlgorithm) || FitAlgorithm.SLIMCURVE_RLD_LMA.equals(m_fitAlgorithm)) { 
    374384                // LMA fit 
    375385                for (ICurveFitData data: dataArray) { 
     
    385395                            m_instrumentResponse, 
    386396                            nInstrumentResponse, 
     397                            noise, 
    387398                            data.getSig(), 
    388399                            data.getParams(), 
     
    391402                            data.getYFitted(), 
    392403                            chiSquare, 
    393                             chiSquareTarget 
     404                            data.getChiSquareTarget(), 
     405                            chiSquareDelta 
    394406                            ); 
    395407                } 
Note: See TracChangeset for help on using the changeset viewer.