Changeset 7902


Ignore:
Timestamp:
02/24/12 20:26:45 (7 years ago)
Author:
aivar
Message:

SLIM Plugin: Tweak to agree with TRI2.

File:
1 edited

Legend:

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

    r7891 r7902  
    235235         
    236236        boolean[] free = m_free.clone(); 
    237         if (FitAlgorithm.SLIMCURVE_RLD.equals(m_fitAlgorithm)) { 
    238             // pure RLD (versus RLD followed by LMA) has no way to fix 
    239             // parameters 
    240             for (int i = 0; i < free.length; ++i) { 
     237        int numParamFree = 0; 
     238        for (int i = 0; i < free.length; ++i) { 
     239            if (free[i]) { 
     240                ++numParamFree; 
     241            } 
     242            // pure RLD (vs RLD followed by LMA) has no way to fix parameters 
     243            if (FitAlgorithm.SLIMCURVE_RLD.equals(m_fitAlgorithm)) { 
    241244                free[i] = true; 
    242245            } 
    243246        } 
    244          
     247        
    245248        if (s_libraryOnPath) { 
    246249            // JNA version 
     
    268271                    // set start and stop 
    269272                    int start = data.getTransFitStartIndex(); 
     273                    System.out.println("trans fit start index is " + start); 
    270274                    if (FitAlgorithm.SLIMCURVE_RLD_LMA.equals(m_fitAlgorithm)) { 
    271275                        start = data.getTransEstimateStartIndex(); 
     276                        System.out.println("trans estimate start index is " + start); 
    272277                    } 
    273278                    int stop = data.getTransEndIndex(); 
     279                     
     280                    int chiSquareAdjust = stop - start - numParamFree; 
    274281                     
    275282                    returnValue = s_library.RLD_fit( 
     
    287294                            data.getYFitted(), 
    288295                            chiSquare, 
    289                             data.getChiSquareTarget() 
     296                            data.getChiSquareTarget() * chiSquareAdjust 
    290297                            ); 
    291298                    // set outgoing parameters, unless they are fixed 
    292                     data.getParams()[0] = chiSquare.getValue(); 
     299                    data.getParams()[0] = chiSquare.getValue() / chiSquareAdjust; 
    293300                    if (free[0]) { 
    294301                        data.getParams()[1] = z.getValue(); 
     
    314321                    // set start and stop 
    315322                    int start = data.getTransFitStartIndex(); 
    316                     int stop = data.getTransEndIndex();    
    317                      
    318                     System.out.println("zInc " + m_xInc + " ndata " + data.getYCount() + " fit start " + start + " fit end " + stop); 
     323                    int stop = data.getTransEndIndex(); 
     324                     
     325                    int chiSquareAdjust = stop - start - numParamFree; 
     326                     
     327                    System.out.println("xInc " + m_xInc); 
     328                    System.out.println("yCount length " + data.getYCount().length + " yCount " + data.getYCount()[0] + " " + data.getYCount()[1] + " " + data.getYCount()[2] + " " + data.getYCount()[3] ); 
     329                    System.out.println("start " + start + " stop " + stop); 
     330                    System.out.println("m_instrumentResponse is " + m_instrumentResponse); 
     331                    System.out.println("nInstrumentResponse is " + nInstrumentResponse); 
    319332                    System.out.println("noise is " + noise); 
     333                    if (null == data.getSig()) { 
     334                        System.out.println("sig is null"); 
     335                    } 
     336                    else { 
     337                        System.out.println("length of sig is " + data.getSig().length); 
     338                    } 
     339                    System.out.println("params " + data.getParams()[0] + " " + data.getParams()[1] + " " + data.getParams()[2]); 
     340                    System.out.println("m_free " + m_free[0] + " " + m_free[1] + " " + m_free[2]); 
     341                    System.out.println("data.getParams().length - 1 is " + (data.getParams().length - 1)); 
     342 
     343                    System.out.println("chisquaretarget is " + data.getChiSquareTarget() * chiSquareAdjust + " delta " + data.getChiSquareDelta()); 
    320344                    returnValue = s_library.LMA_fit( 
    321345                            m_xInc, 
     
    332356                            data.getYFitted(), 
    333357                            chiSquare, 
    334                             40.5, // data.getChiSquareTarget(), 
    335                             0.0099999998 // data.getChiSquareDelta() 
     358                            data.getChiSquareTarget() * chiSquareAdjust, 
     359                            0.0099999998 //data.getChiSquareDelta() 
    336360                            ); 
     361                    data.getParams()[0] /= chiSquareAdjust; 
     362                    System.out.println("chiSqaure array is " + chiSquare.getValue() + " data version is " + data.getParams()[0]); 
    337363                    System.out.println("chisq " + data.getParams()[0] + " z " + data.getParams()[1] + " a " + data.getParams()[2] + " t " + data.getParams()[3]); 
    338364                } 
     
    372398                    } 
    373399                    int stop = data.getTransEndIndex(); 
     400                     
     401                    int chiSquareAdjust = stop - start - numParamFree; 
    374402                     
    375403                    returnValue = RLD_fit(m_xInc, 
     
    386414                            data.getYFitted(), 
    387415                            chiSquare, 
    388                             data.getChiSquareTarget() 
     416                            data.getChiSquareTarget() * chiSquareAdjust 
    389417                            ); 
    390418 
    391419                    // set outgoing parameters, unless they are fixed 
    392                     data.getParams()[0] = chiSquare[0]; 
     420                    data.getParams()[0] = chiSquare[0] / chiSquareAdjust; 
    393421                    if (free[0]) { 
    394422                        data.getParams()[1] = z[0]; 
     
    414442                    int start = data.getTransFitStartIndex(); 
    415443                    int stop = data.getTransEndIndex(); 
     444                     
     445                    int chiSquareAdjust = stop - start - numParamFree; 
    416446                     
    417447                    returnValue = LMA_fit( 
     
    429459                            data.getYFitted(), 
    430460                            chiSquare, 
    431                             data.getChiSquareTarget(), 
     461                            data.getChiSquareTarget() * chiSquareAdjust, 
    432462                            chiSquareDelta 
    433463                            ); 
     464                     
     465                    data.getParams()[0] /= chiSquareAdjust; 
    434466                } 
    435467            } 
Note: See TracChangeset for help on using the changeset viewer.