decomp: OSL decay curve decomposition

Description Usage Arguments Details Value Note References See Also Examples

View source: R/decomp.R


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).


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



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

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


integer(with default): number of decomposed components


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


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


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


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


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


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


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

numeric(optional): decay curve number


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


numeric(optional): irradiation dose of the decay curve


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


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


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:
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:
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 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.


Return an invisible list containing the following elements:


return 0 if fit succeeds, else 1


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


optimized parameters for the decay curve


estimated constant component, it returns 0 if constant=FALSE


minimized objective for the decay curve


figure of merit value for the decay curve in percent


Arguments, 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.


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,

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


 ### Example 1:

 ### 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")

Example output

numOSL documentation built on May 1, 2019, 8:45 p.m.