Changeset 6939


Ignore:
Timestamp:
09/14/10 20:29:10 (9 years ago)
Author:
aivar
Message:

Handles m_free, which parameters are free vs. fixed.
Loads dynamic library only once, saved as static.
Dummies out sig[].

File:
1 edited

Legend:

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

    r6925 r6939  
    5151 */ 
    5252public class GrayNRCurveFitter extends AbstractCurveFitter { 
     53    static CLibrary s_library; 
    5354    int m_algType; 
    5455 
     
    135136    public int fitData(ICurveFitData[] dataArray, int start, int stop) { 
    136137        int returnValue = 0; 
    137         CLibrary lib = (CLibrary) Native.loadLibrary("GrayNRCode", CLibrary.class); 
     138        if (null == s_library) { 
     139            try { 
     140                // load once, on-demand 
     141                s_library = (CLibrary) Native.loadLibrary("GrayNRCode", CLibrary.class); 
     142            } 
     143            catch (UnsatisfiedLinkError e) { 
     144                System.out.println("unable to load dynamic library " + e.getMessage()); 
     145                return 0; 
     146            } 
     147        } 
    138148 
    139149        //TODO ARG 9/3/10 these issues still need to be addressed: 
     
    146156        DoubleByReference chiSquare = new DoubleByReference(); 
    147157        double chiSquareTarget = 1.0; //TODO s/b specified incoming 
     158         
     159        double sig[] = new double[stop+1]; 
     160        for (int i = 0; i < sig.length; ++i) { 
     161                sig[i] = 1.0; // basically ignoring sig for now 
     162        } 
    148163 
    149164        if (0 == m_algType) { //TODO crude; use enums 
     
    153168            DoubleByReference tau = new DoubleByReference(); 
    154169 
    155             double sig[] = new double[stop+1]; 
    156             for (int i = 0; i < sig.length; ++i) { 
    157                 sig[i] = 1.0; // basically ignoring sig 
    158             } 
    159  
    160170            for (ICurveFitData data: dataArray) { 
    161171                // grab incoming parameters 
     
    164174                z.setValue(data.getParams()[2]); 
    165175 
    166                 returnValue = lib.RLD_fit( 
     176                returnValue = s_library.RLD_fit( 
    167177                        m_xInc, 
    168178                        data.getYData(), //TODO data get data??? 
     
    171181                        null, // no instr 
    172182                        0,    // nInstr 
    173                         null, // no sig 
     183                        sig, 
    174184                        z, 
    175185                        a, 
    176186                        tau, 
    177                         null, //fitted, 
     187                        data.getYFitted(), 
    178188                        chiSquare, 
    179189                        chiSquareTarget 
     
    189199            // LMA fit 
    190200            for (ICurveFitData data: dataArray) { 
    191                 returnValue = lib.LMA_fit( 
     201                returnValue = s_library.LMA_fit( 
    192202                        m_xInc, 
    193203                        data.getYData(), 
     
    196206                        null, // no instr 
    197207                        0,    // nInstr 
    198                         null, // no sig 
     208                        sig, 
    199209                        data.getParams(), 
    200                         toIntArray(data.getFree()), 
     210                        toIntArray(m_free), 
    201211                        data.getParams().length, 
    202212                        data.getYFitted(), 
Note: See TracChangeset for help on using the changeset viewer.