Class AlgorithmMultiExponentialFitting

  • All Implemented Interfaces:
    java.awt.event.ActionListener, java.awt.event.WindowListener, java.lang.Runnable, java.util.EventListener

    public class AlgorithmMultiExponentialFitting
    extends AlgorithmBase
    • Field Detail

      • nintmx

        private int nintmx
        This is a port of the Fortran program discrete.for version 2B (December, 1990) written by Stephen Provencher, PhD. The README.txt file has: DISCLAIMER: This software and its documentation are free and come "as is" with absolutely no guarantee and no support. Applications: Analysis of multi-exponential decay data. Running in hundreds of laboratories on a wide variety of computers. Methods: Fully automatic: no starting estimates needed for the number of exponentials or for their parameters; Modified Gauss-Newton least squares, with intensive searches from many starting points to find the global optimum; Methods in the references below are used to get starting estimates and to speed up the analysis: References: I) S.W. Provencher: A Fourier Method for the Analysis of Exponential Decay Curves, Biophysical Journal, Vol. 16, pp. 27-41 (1976). II)S.W. Provencher: An eigenfunction expansion method for the analysis of exponential decay curves. J. Chem. Phys. 64, pp. 2772-2777. (1976). III)S.W. Provencher & R.H. Vogel: Information loss with transform methods in system identification: A new set of transforms with high information content. Math. Biosci. 50, pp. 251-262 (1980). IV)S.W. Provencher & R.H. Vogel: Regularization techniques for inverse problems in molecular biology in: Numerical Treatment of Inverse Problems in Differential and Integral Equations, eds. P. Deuflhard & E. Hairer (Birkhauser, Boston, 1983), pp. 304-319. This program is used for the automatic analysis of multicomponent exponential decay for up to 9 components. Download the Users Manual and other essential documentation from http://S-provencher.com. The data is represented by y[k] = sum from j = 0 to nlambda of alpha[j]*exp(-lambda[j] * t[k]), k = 1, 2, ..., n, with nlambda varied from 1 to nlammx with nlammx <= mlammx = 9. Provision can be make for an unknown baseline component alpha[0] with lambda[0] = 0. It is completely automatic in that only the raw data y[k] and t[k] are input; no potentially biased initial guesses at alpha[j], lambda[j], or even the number of terms nlambda are needed or even allowed. There is no need to normalize any of the input data like tstart, tend, t, y, or sqrtw. However, the number 1.0E20 has been used throughout the program to represent an infinitely large number and hence nothing should get larger than 1.0E20. Since some of the values are squared and summed over n, it is best to choose units so that all input values are between 1.0E-9 and 1.0E6 in absolute value. runAlgorithm calls routines weight, fanlyz, yanlyz which in turn call lstSqr, evar, varf, etheor, pivot, pivot1, anlerr, fisher, residu.
      • mlammx

        private int mlammx
      • convrg

        private double convrg
      • ngrid2

        private int[] ngrid2
      • minter

        private int minter
      • sigmap

        private double[] sigmap
      • precis

        private double precis
      • nlammx

        private int nlammx
      • iwt

        private int iwt
      • mtry

        private int mtry
      • regint

        private boolean regint
      • nobase

        private boolean nobase
      • nonneg

        private boolean nonneg
      • showDebug

        private boolean showDebug
      • pry

        private boolean pry
      • prprel

        private boolean prprel
      • prfinl

        private boolean prfinl
      • plotrs

        private boolean plotrs
      • repeat

        private boolean repeat
      • fatalProblem

        private boolean fatalProblem
      • n

        private int n
      • t

        private double[] t
      • nint

        private int nint
      • tstart

        private double[] tstart
      • tend

        private double[] tend
      • nt

        private int[] nt
      • y

        private double[] y
      • sqrtw

        private double[] sqrtw
      • ylyfit

        private double[] ylyfit
      • e

        private double[][] e
      • gse

        private double[][] gse
      • deltat

        private double[] deltat
      • evarCalled

        private int evarCalled
      • varfCalled

        private int varfCalled
      • trbase

        private double[] trbase
      • gf

        private double[][] gf
      • dgfl

        private double[][] dgfl
      • dgridf

        private double dgridf
      • gfstl

        private double gfstl
      • fhat

        private double[] fhat
      • varmin

        private double varmin
      • sumwty

        private double sumwty
      • sumwt

        private double sumwt
      • zero

        private double[] zero
      • dgride

        private double dgride
      • gestl

        private double gestl
      • var

        private double[] var
      • palpha

        private double[] palpha
      • plam

        private double[] plam
      • se

        private double[][] se
      • plmtry

        private double[] plmtry
      • deltap

        private double[] deltap
      • dfcapl

        private double[][] dfcapl
      • sfde

        private double[] sfde
      • adub

        private double[][] adub
      • ddse

        private double[][] ddse
      • dtoler

        private double[] dtoler
      • f

        private double[][] f
      • df

        private double[][] df
      • delta

        private double delta
      • fhatmx

        private double fhatmx
      • lamst

        private double[] lamst
      • lamf

        private double[][][] lamf
      • lamnmx

        private double[][] lamnmx
      • sigyy

        private double sigyy
      • enphi

        private double enphi
      • pcerr

        private double[] pcerr
      • vgrid2

        private double[] vgrid2
      • jgeadd

        private int jgeadd
      • nbinom

        private int[][] nbinom
      • nvgrid

        private int[] nvgrid
      • nperg2

        private int[] nperg2
      • mdima

        private int mdima
      • ibase

        private int ibase
      • iwtsgn

        private int iwtsgn
      • nf

        private int nf
      • iter

        private int iter
      • jlamp1

        private int jlamp1
      • nftry

        private int[] nftry
      • failed

        private boolean failed
      • wted

        private boolean wted
      • ffail

        private boolean[][] ffail
      • pivalp

        private boolean[] pivalp
      • params

        private double[] params
      • chiSquared

        private double chiSquared
      • status

        private int status
    • Constructor Detail

      • AlgorithmMultiExponentialFitting

        public AlgorithmMultiExponentialFitting​(int nlammx,
                                                int iwt,
                                                int mtry,
                                                boolean regint,
                                                boolean nobase,
                                                boolean nonneg,
                                                boolean showDebug,
                                                boolean pry,
                                                boolean prprel,
                                                boolean prfinl,
                                                boolean plotrs,
                                                boolean repeat,
                                                int n,
                                                double[] t,
                                                int nint,
                                                double[] tstart,
                                                double[] tend,
                                                int[] nt,
                                                double[] y,
                                                double[] sqrtw)
      • AlgorithmMultiExponentialFitting

        public AlgorithmMultiExponentialFitting()
    • Method Detail

      • selfTest

        public void selfTest()
      • finalize

        public void finalize()
        Prepares this class for destruction.
        Overrides:
        finalize in class AlgorithmBase
      • getParameters

        public double[] getParameters()
      • getChiSquared

        public double getChiSquared()
      • getStatus

        public int getStatus()
      • weight

        private void weight​(boolean finalVar)
      • lstsqr

        private void lstsqr​(double[] lamst,
                            int jlam,
                            boolean rawdat,
                            int n,
                            int nlin,
                            int routineCalled,
                            int itype,
                            boolean split,
                            boolean inter,
                            boolean prlsq)
      • pivot

        private void pivot​(double[][] adub,
                           int mdima,
                           int np,
                           boolean onlyin,
                           boolean invert,
                           boolean constr,
                           double pmin,
                           double pmax,
                           double[] p,
                           double[] dtoler,
                           double[] deltap,
                           boolean[] allpiv,
                           double[] qg,
                           boolean[] piv,
                           int jlam,
                           double[] qmax,
                           int[] ierror)
      • pivot1

        private void pivot1​(double[][] adub,
                            int mdima,
                            int npp,
                            int lpiv)
      • evar

        private void evar​(double[] q,
                          int jlam,
                          double[] var,
                          boolean invert,
                          boolean[] allpiv,
                          double[] ylydum,
                          int nlin,
                          double varg,
                          int ntry,
                          boolean inter,
                          int[] ierror)
      • varf

        private void varf​(double[] q,
                          int jlam,
                          double[] var,
                          boolean invert,
                          boolean[] allpiv,
                          double[] ylyfit,
                          int nlin,
                          double varg,
                          int ntry,
                          boolean intdum,
                          int[] ierror)
      • anlerr

        private void anlerr​(int jlam,
                            int nlin,
                            int itype,
                            boolean inter,
                            boolean prlsq)
      • etheor

        private void etheor​(double plambd,
                            boolean invert,
                            boolean wted,
                            double[] se,
                            double[] dse,
                            double[] ddse,
                            double[] sye,
                            boolean doe,
                            boolean doye)
      • expsma

        private double expsma​(double s)
      • fanlyz

        private void fanlyz()
      • yanlyz

        private void yanlyz()
      • fisher

        private double fisher​(double fs,
                              int nu1,
                              int nu2)
      • residu

        private void residu​(int jlam,
                            boolean plot,
                            double[] puncor,
                            double[][][] asave)