Class AlgorithmMultiExponentialFitting

java.lang.Object
java.lang.Thread
gov.nih.mipav.model.algorithms.AlgorithmBase
gov.nih.mipav.model.algorithms.AlgorithmMultiExponentialFitting
All Implemented Interfaces:
ActionListener, WindowListener, Runnable, EventListener

public class AlgorithmMultiExponentialFitting extends AlgorithmBase
  • Field Details

    • 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 invalid input: '&' 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 invalid input: '&' 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 invalid input: '&' 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 invalid input: '<'= 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 Details

    • 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 Details

    • 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()
    • runAlgorithm

      public void runAlgorithm()
      starts the algorithm.
      Specified by:
      runAlgorithm in class AlgorithmBase
    • 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)