Changeset 7291


Ignore:
Timestamp:
12/01/10 19:59:33 (9 years ago)
Author:
aivar
Message:

Changed the parameter order.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/maven/projects/curve-fitter/src/main/java/loci/curvefitter/JaolhoCurveFitter.java

    r7162 r7291  
    3939 
    4040/** 
    41  * TODO 
     41 * Curve fitter that uses the Jaolho curve fitting package. 
    4242 * 
    43  * <dl><dt><b>Source code:</b></dt> 
    44  * <dd><a href="http://dev.loci.wisc.edu/trac/java/browser/trunk/projects/curve-fitter/src/main/java/loci/curvefitter/JaolhoCurveFitter.java">Trac</a>, 
    45  * <a href="http://dev.loci.wisc.edu/svn/java/trunk/projects/curve-fitter/src/main/java/loci/curvefitter/JaolhoCurveFitter.java">SVN</a></dd></dl> 
    46  * 
    47  * @author Aivar Grislis grislis at wisc.edu 
     43 * @author Aivar Grislis 
    4844 */ 
    4945public class JaolhoCurveFitter extends AbstractCurveFitter { 
     
    6864        } 
    6965 
    70         int numberExponentials = 0; 
    71         int numberParams = dataArray[0].getParams().length; 
    72         if (3 == numberParams) { 
    73             numberExponentials = 1; 
    74         } 
    75         else if (5 == numberParams) { 
    76             numberExponentials = 2; 
    77         } 
    78         else if (7 == numberParams) { 
    79             numberExponentials = 3; 
    80         } 
    81         if (0 == numberExponentials) { 
    82             System.out.println("invalid number of parameters: " + numberParams); 
     66        if (ICurveFitter.FitFunction.STRETCHED_EXPONENTIAL.equals(getFitFunction())) { 
     67            System.out.println("Stretched exponentials not supported in Jaolho at this time."); 
    8368            return 0; 
    8469        } 
    85          
    86         function = new ExpFunction(numberExponentials); 
    87         //lma = new LMA(function, lmaWeights, lmaData); 
     70        function = new ExpFunction(getNumberComponents()); 
    8871 
    8972        for (ICurveFitData data: dataArray) { 
     
    9376            } 
    9477 
    95             lma = new LMA(function, data.getParams(), lmaData); 
    96  
    97     // System.out.println("INCOMING param0 " + lma.parameters[0] + ", param1 " + lma.parameters[1] + ", param2 " + lma.parameters[2]); 
    98  
     78            double inParams[] = data.getParams(); 
     79            double params[] = new double[inParams.length - 1]; 
     80            switch (getNumberComponents()) { 
     81                case 1: 
     82                    params[0] = inParams[2]; // A1 
     83                    params[1] = inParams[3]; // T1 
     84                    params[2] = inParams[1]; // C 
     85                    break; 
     86                case 2: 
     87                    params[0] = inParams[2]; // A1 
     88                    params[1] = inParams[3]; // T1 
     89                    params[2] = inParams[4]; // A2 
     90                    params[3] = inParams[5]; // T2 
     91                    params[4] = inParams[1]; // C 
     92                    break; 
     93                case 3: 
     94                    params[0] = inParams[2]; // A1 
     95                    params[1] = inParams[3]; // T1 
     96                    params[2] = inParams[4]; // A2 
     97                    params[3] = inParams[5]; // T2 
     98                    params[4] = inParams[6]; // A3 
     99                    params[5] = inParams[7]; // T3 
     100                    params[6] = inParams[1]; // C 
     101                    break; 
     102            } 
     103            lma = new LMA(function, params, lmaData); 
    99104 
    100105            try { 
     
    108113                System.out.println("exception " + e); 
    109114            } 
    110  
    111             //if (lma.parameters[1] > 0.0f && lma.parameters[1] < 100.0f && lma.parameters[1] != 1.0f) { 
    112             //    System.out.println("chi2: " + lma.chi2 + ", param0: " + lma.parameters[0] + ", param1: " + lma.parameters[1] + ", param2: " + lma.parameters[2]); 
    113             //} 
    114  
    115             //if (false && success) { 
    116             //    System.out.println("iterations: " + lma.iterationCount); 
    117             //    System.out.println("chi2: " + lma.chi2 + ", param0: " + lma.parameters[0] + ", param1: " + lma.parameters[1] + ", param2: " + lma.parameters[2]); 
    118             //} 
    119  
    120115            for (int i = 0; i < length; ++i) { 
    121116                data.getYFitted()[start + i] = function.getY(lmaData[0][i], lma.parameters); 
    122117            } 
    123             for (int i = 0; i < data.getParams().length; ++i) { 
    124                 data.getParams()[i] = lma.parameters[i]; 
     118            double outParams[] = data.getParams(); 
     119            switch (getNumberComponents()) { 
     120                case 1: 
     121                    outParams[0] = lma.chi2; 
     122                    outParams[1] = params[2]; // C 
     123                    outParams[2] = params[0]; // A1 
     124                    outParams[3] = params[1]; // T1 
     125                    break; 
     126                case 2: 
     127                    outParams[0] = lma.chi2; 
     128                    outParams[1] = params[4]; // C 
     129                    outParams[2] = params[0]; // A1 
     130                    outParams[3] = params[1]; // T1 
     131                    outParams[4] = params[2]; // A2 
     132                    outParams[5] = params[3]; // T2 
     133                    break; 
     134                case 3: 
     135                    outParams[0] = lma.chi2; 
     136                    outParams[1] = params[6]; // C 
     137                    outParams[2] = params[0]; // A1 
     138                    outParams[3] = params[1]; // T1 
     139                    outParams[4] = params[2]; // A2 
     140                    outParams[5] = params[3]; // T2 
     141                    outParams[6] = params[4]; // A3 
     142                    outParams[7] = params[5]; // T3 
     143                    break; 
    125144            } 
    126             data.setChiSquare(lma.chi2); 
    127145        } 
    128         //System.out.println("goodPixels " + goodPixels + " badPixels " + badPixels); 
    129146        //TODO error return deserves more thought 
    130147        return 0; 
Note: See TracChangeset for help on using the changeset viewer.