decomp: OSL decay curve decomposition

View source: R/decomp.R

decompR Documentation

OSL decay curve decomposition

Description

Decomposing a CW-OSL or LM-OSL decay curve to a given number of first-order exponential components using a combination of differential evolution and Levenberg-Marquardt algorithm suggested by Bluszcz and Adamiec (2006).

Usage

decomp(Sigdata, delay.off = c(0,0), ncomp = 2, 
       constant = TRUE, typ = "cw", control.args = list(), 
       weight = FALSE, plot = TRUE, log = "x", lwd = 2, 
       curve.no = NULL, SAR.Cycle = NULL, irr.dose = NULL, 
       outfile = NULL, transf = TRUE)

Arguments

Sigdata

matrix(required): a two-column matrix (i.e., stimulation time and photon count values)

delay.off

vector(with default): a two-elment vector indicating the "Delay" and "Off"
values of the decay curves, i.e., delay.off[1]=Delay,delay.off[2]=Off

ncomp

integer(with default): number of decomposed components

constant

logical(with default): logical value indicating if a constant component should be subtracted from the decay curve

typ

character(with default): type of a decay curve (i.e., typ="cw" or typ="lm")

control.args

list(with default): arguments used in the differential evolution algorithm, see details

weight

logical(with default): logical value indicating if the fit should be performed using a weighted procedure

plot

logical(with default): logical value indicating if the results should be plotted

log

character(with default): a character string which contains "x" if the x axis is to be logarithmic, "y" if the y axis is to be logarithmic and "xy" or "yx" if both axes are to be logarithmic

lwd

numeric(with default): width of curves (lines)

curve.no

numeric(optional): decay curve number

SAR.Cycle

numeric(optional): SAR cycle of the decay curve, Example: SAR.Cycle="R1"

irr.dose

numeric(optional): irradiation dose of the decay curve

outfile

character(optional): if specified, decomposed signal values will be written to a CSV file named "outfile" and saved to the current work directory

transf

logical(with default): do not use (for backward compatibility purpose)

Details

Function decomp decomposes an OSL decay curve to a specified number of components using a combination of differential evolution and Levenberg-Marquardt algorithm. Both CW-OSL and LM-OSL decay curves can be decomposed.

For a CW-OSL decay curve, the fitting model (Bluszcz and Adamiec, 2006) is:
I(t)=a1*b1*exp(-b1*t)+...+ak*bk*exp(-bk*t),
where k=1, 2, ..., 7, I(t) is the luminescence intensity as a function of time, a is the number of trapped electrons, and b is the detrapping rate. The constant component is c if constant=TRUE.

For a LM-OSL decay curve, the fitting model (Bulur, 2000) is:
I(t)=a1*b1*(t/P)*exp[-b1*t^2/(2*P)]+...+ak*bk*(t/P)*exp[-bk*t^2/(2*P)],
where k=1, 2, ..., 7, and I(t) is the luminescence intensity as a function of time, P is the total stimulation time, a is the number of trapped electrons, and b is the detrapping rate. The constant component is c*(t/P) if constant=TRUE.

Parameters are initialized using a differential evolution method suggested by Bluszcz and Adamiec (2006), then the Levenberg-Marquardt algorithm (minpack: Fortran 90 version by John Burkardt, freely available at https://people.sc.fsu.edu/~jburkardt/f_src/minpack/minpack.html) will be performed to optimize the parameters. If weight=TRUE, the photon counts will be assumed to follow a Possion distribution with a standard error equal to the square root of the number of photon counts, and the decay curve will be fitted using a weighted procedure. Setting weight=TRUE gives more weight to photon counts from slower decaying components.

Arguments in control.args that control the differential evolution algorithm include:
(1) factor: the number of population members, np=factor*ncomp, default factor=20;
(2) f: a weighting factor that lies between 0 and 1.2, default f=0.5;
(3) cr: a crossover constant that lies between 0 and 1, default cr=0.99;
(4) maxiter: maximum number of iterations, default maxiter=500;
(5) tol: tolerance for stopping the iteration, the procedure will be terminated if
all relative standard deviations of parameters are smaller than tol, defalut tol=0.1.

Value

Return an invisible list containing the following elements:

message

return 0 if fit succeeds, else 1

comp.sig

a matrix containing time, signal, and fitted signal values for each component

LMpars

optimized parameters for the decay curve

constant

estimated constant component, it returns 0 if constant=FALSE

value

minimized objective for the decay curve

FOM

figure of merit value for the decay curve in percent

Note

Arguments curve.no, SAR.Cycle, and irr.dose have nothing to do with decay curve fitting. They are used only for plotting purpose.

The model to be optimized should not be underdetermined. This means that the number of data points should exceed (or at least be equal to) the number of parameters. For a given model, this routine will return an error if any standard errors of parameters cannot be estimated by numerical difference-approximation. Function decompc in previous versions was bundled to function decomp.

We would like to thank Professor Andrzej Bluszcz who helps us a lot during the programming of this function. Dr Jeong-Heon Choi is thanked for providing published data sets to test this routine.

References

Bluszcz A, 1996. Exponential function fitting to TL growth data and similar applications. Geochronometria, 13: 135-141.

Bluszcz A, Adamiec G, 2006. Application of differential evolution to fitting OSL decay curves. Radiation Measurements, 41(7-8): 886-891.

Bulur E, 2000. A simple transformation for converting CW-OSL curves to LM-OSL curves. Radiation Measurements, 32(2): 141-145.

Differential evolution algorithm, https://en.wikipedia.org/wiki/Differential_evolution

Jain M, Murray AS, Boetter-Jensen L, 2003. Characterisation of blue-light stimulated luminescence components in different quartz samples: implications for dose measurement. Radiation Measurements, 37(4-5): 441-449.

More JJ, 1978. "The Levenberg-Marquardt algorithm: implementation and theory," in Lecture Notes in Mathematics: Numerical Analysis, Springer-Verlag: Berlin. 105-116.

Further reading

Adamiec G, 2005. OSL decay curves-relationship between single- and multiple-grain aliquots. Radiation Measurements, 39(1): 63-75.

Balian HG, Eddy NW, 1977. Figure-of-merit (FOM), an improved criterion over the normalized chi-squared test for assessing goodness-of-fit of gamma-ray spectral peaks. Nuclear Instruments and Methods, 145(2): 389-95.

Choi JH, Duller GAT, Wintle AG, 2006. Analysis of quartz LM-OSL curves. Ancient TL, 24(1): 9-20.

Li SH, Li B, 2006. Dose measurement using the fast component of LM-OSL signals from quartz. Radiation Measurements, 41(5): 534-541.

Peng J, Dong ZB, Han FQ, Han YH, Dai XL, 2014. Estimating the number of components in an OSL decay curve using the Bayesian Information Criterion. Geochronometria, 41(4): 334-341.

See Also

Signaldata; pickBINdata; fastED

Examples

 ### Example 1:
 data(Signaldata)
 decomp(Signaldata$lm,ncomp=3,typ="lm",
        control.args=list(maxiter=10))

 ### Example 2 (not run):
 # data(BIN)
 # obj_pickBIN <- pickBINdata(BIN, Position=2, Run=2, view=TRUE,
 #                            LType="OSL", force.matrix=TRUE)
 # decomp(obj_pickBIN$BINdata[[1]], ncomp=2, log="xy")

numOSL documentation built on Sept. 18, 2023, 9:07 a.m.