Changelog
Source:NEWS.md
Changes in version 1.1.0 (2025-06-11)
CRAN release: 2025-06-11
New functions
remove_SignalBackground()
: A user-friendly method to subtract background signals from various curves inRLum.Analysis
objects without resorting tolapply()
loops. Depending on the record type, the function identifies pairs of curves; for instance, if in a sequence, aTL
curve is immediately followed by anotherTL
curve, the second curve is recognised as the background signal, subtracted usingmerge_RLum()
and subsequently removed from the object (if desired). Alternatively, a set of potential background curves can be specified.remove_RLum()
: This function further completes the set of methods that can handle and modifyRLum-class
objects. It operates onRLum.Analysis
objects or alist
of such objects to remove unwanted records from datasets. Although the function callsget_RLum()
and relies on its functionality, the new implementation facilitates a more logical workflow and analysis pipeline..as.latex.table()
: ConvertsRLum.Results
objects where suitable toLaTeX
ready tables, for instance, objects produced byuse_DRAC()
. The function has been present in the package as an internal function for many years; now it is exported and better linked to make it discoverable.
New datasets
-
RF70Curves
is a new dataset consisting of two IR-RF curves measured with the RF70 protocol. This new dataset provides a more realistic example foranalyse_IRSAR.RF()
.
Breaking changes
Function
get_Quote()
is no longer exported, but remains available as an internal function. This is unlikely to affect any user of the package, as the function was only meant to report a random quote at startup (#644).In the functions
fit_DoseResponseCurve()
andplot_GrowthCurve()
, thefit.method
optionLambertW
was replaced by the more correct termOTOR
.Argument
cex.global
has been removed fromplot_DoseResponseCurve()
(and consequently also fromplot_GrowthCurve()
), and if set it will be silently ignored. Users can set thecex
graphical parameter via...
in its place (#831).The
fit.method
andfit.advanced
arguments of functionfit_LMCurve()
have been removed. The default fitting method has been changed fromport
toLM
, and support for theport
algorithm has been removed. From now on, argumentfit.method
is silently ignored, unlessfit.method = 'port'
is used, in which case a deprecation warning is thrown (#793).The fundamental physical constants used in the package (such as Boltzmann constant, Planck constant, etc.) have been uniformed to those reported in the NIST Reference on Constants, Units and Uncertainty. This may affect the numerical results of the following functions:
calc_FastRatio()
,calc_Huntley2006()
,calc_SourceDoseRate()
,calc_ThermalLifetime()
,convert_Activity2Concentration()
,convert_Wavelength2Energy()
,fit_CWCurve()
,fit_LMCurve()
,fit_SurfaceExposure()
,fit_ThermalQuenching()
(#693).
Bugfixes and changes
analyse_baSAR()
- The function crashed if only one aliquot was kept (#834).
analyse_FadingMeasurement()
The function crashed if the number of
Lx
andTx
curves was not equal whenstructure = c("Lx", "Tx")
, which is the default. The check that the number of points within each pair of curves has also been improved, and the function now produces more helpful error messages (#616).The function tests are now less rigorous for different
Lx
andTx
sizes. While they should match, numerical rounding issues in the data returned by the measurement devices could previously result in rejection of records, although this had no actual meaning for the data analysis.
analyse_IRSAR.RF()
The legend and subtitle texts now scale better at non-default cex settings (#803).
The printing of progress bars and messages to the terminal can now be controlled via the
...
argumentverbose
. Previously this could only be done via thetxtProgressBar
argument (which is still supported), but the new option makes the interface consistent with most other functions (#805).The
mtext
andcex
options are respected ifmethod = "None"
(#807).The residual plot correctly respects the logarithmic transformation of the x-axis when
log = "x"
orlog = "xy"
are specified (#814, #825).The function now deals correctly also with input objects containing multiple curves (#816).
The residual indicator rectangle, which is drawn when
method
is eitherSLIDE
orVSLIDE
, is also drawn whenlog = "x"
(#821).The plotting of the density is silently disabled if
n.MC = NULL
, which avoids a spurious warning (#823).
analyse_pIRIRSequence()
- The function now respects the
cex
graphical argument, and its plot output has been subtly improved thanks to various fixes that have occurred especially inplot_DoseResponseCurve()
(#831).
analyse_portableOSL()
The function now returns an error if
mode
is something other than"profile"
or"surface"
.The
mode
argument was not respected when operating over a list of objects (#673).The function crashed when using
mode = "surface"
if the plotting limits were too tight and left only one point (#675).The check on the validity of the
signal.integral
argument has been improved, and now it occurs only once, so at most one warning is raised if the argument is set to a value exceeding the valid range (#678, #680).The function returns a clearer message when no x-coordinates were measured and
mode = "surface"
was used (#682).The
cex
andtype
graphical parameters can now configured via the...
argument (#684).The expected sequence pattern of the input object is validated more thoroughly to avoid crashes in case of misspecification (#687).
The graphical
...
argumentcontour
never produced a meaningful contour plot due to an internal error (#686). Along, argumentscontour_nlevels
andcontour_col
are now supported through...
to better control the number and colour of contour lines.
analyse_SAR.CWOSL()
Add support for
fit.method = 'OTORX'
following the changes infit_DoseResponseCurve()
; this change includes the new argumentdose.points.test
that is only of use in combination with theOTORX
fit.Add new graphical output if the measurements were single grain measurements, in such case a disc with the position and grain number marked in shown. This plot replaces the IRSL curve check plot, but only for single grain data (#797).
The rejection criteria plot was rewritten and now provides an easier to grasp visual feedback (#797, #798).
The
IRSL
/Single Grain
panel swapped place with the rejection criteria panel; the plot numbers remained unchanged to avoid regression.More code optimisation for better readability (#802)
analyse_SAR.TL()
- A check on the
sequence.structure
argument ensures that a “SIGNAL” entry has been specified (#779).
calc_AliquotSize()
The new argument
sample_carrier.diameter
allows to specify a value for the diameter of the sample carrier, which up to now was hardcoded to the very common 9.8 mm size (#623).Several graphical parameters can now configured via
...
arguments, so that the plot appearance can be fully customized (#671).
calc_AverageDose()
- A bug in the implementation prevented the default plot settings from being modified via
...
as advertised. Now custom settings are respected (#658).
calc_FiniteMixture()
The function doesn’t crash anymore if the
n.components
argument specifies non-consecutive values (#691).The function sometimes failed to plot some of the densities when the number of components was set to a value of 8 or more (#704).
The density plots would not always be coloured completely, but especially for high values of
sigmab
there would be an unfilled area at the base of the densities (#706).If the very first iteration over the components during plotting was skipped, then the function crashed as a quantity computed only in that iteration was not available. This happened for very specific combinations of
sigmab
andn.components
(#708).Another crash occurred when height of the largest density curve could not be estimated due to the presence of too many
NA
values in the intermediate computations (#710).The check for significance of each component added to the model has been corrected to be more statistically rigorous (#703).
Blank gaps appearing to the sides of the proportion of components plot for high number of components have been removed (#713), as well as extra slices appearing due to rounding errors (#715).
The plot can be better configured via the new
plot.criteria
argument to control whether the statistical criteria curves should be drawn. Moreover, support for the...
options has been added:cex
to control the overall scaling,main.densities
,main.proportions
andmain.criteria
to set the subplot titles (#717).Plots are now generated even when results contain
NA
values, as they in general don’t affect the plot. However, when that happens we report it in the plot subtitle (#718).
calc_Huntley2006()
Support was added for multicore computations via the
cores
argument, and for the nls-fitting control optionsmaxiter
andtrace
.The fitting of the simulated curve with the GOK model has been made more robust: when an initial fit of the model fails, the fit is attempted again with 10 different values for
D0
and the best fit is used. This should reduce the number of occasions in which the error message “Could not fit simulated model curve, check suitability of model and parameters” is reported (#660).The function crashed if all simulated Lx/Tx values were identical and approximately zero, which could happen if the
rhop
argument was set to a large enough value (#725).An error message has been improved so that it doesn’t suggest setting the ‘fit.bounds = FALSE’ argument if it has already been set (#729).
The computation of the x-axis limits has been improved to avoid having too much unused horizontal space, especially for
mode = "extrapolation"
(#731).The scaling of the plot can now be controlled via the
cex
argument (#735).The plot margins are set more precisely and avoid the summary text to be cut off (#737).
calc_MinDose()
- The function now warns if the number of bootstrap replicates is too low to perform the loess fitting (#721).
calc_OSLLxTxRatio()
The function returned a warning for wrong integral settings for the
Tx
curve even if noTx
curve was provided.The function does not check any more of different object types for
Lx.data
andTx.data
but validate objects for allowed types (this should have no user-visible effects).
convert_Concentration2DoseRate()
- The function validates its input values more thoroughly (#613).
extract_IrradiationTimes()
The function tries a little bit harder to extract the correct duration of TL steps, rendering the data output hopefully a little bit more intelligible (#651).
The function gained a new argument called
return_same_as_input
, with default value ofFALSE
. If set toTRUE
, the input object (usually anRLum.Analysis
object or alist
of them) is returned with updated info elements forIRR_TIME
andTIMESINCEIRR
. This makes theRLum.Analysis
object compatible with functions that explicitly search for those two objects, such as those in the'OSLdecomposition'
package (#752).
fit_DoseResponseCurve()
The function now allocates less memory for storing intermediate values (#610).
Add initial support for
OTORX
fitting following Lawless and Timar-Gabor
- (#677). The code implementation follows the Python reference by jll2 with an addition for an allowed offset parameter
a
set iffit.force_through_origin = FALSE
. This also enables to supportmode = "extrapolation"
(thanks to John Lawless for his input).
The code of the function was optimised in several places to improve code readability and reduce redundant calls.
The models for
EXP
,EXP+LIN
,EXP+EXP
andGOK
are now available in C++. This cut the required computation times in half in benchmark scenarios. More importantly, this performance scales with the number of Monte Carlo runs.
fit_EmissionSpectra()
- Fix crash when attempting to plot a frame with non-positive counts (#761).
fit_LMCurve()
If the user asks logarithmic scaling in the y-axis, using either
log = "y"
orlog = "xy"
, this is now ignored when plotting residuals and component contributions (#755).The plot has been slightly reworked to reduce the cases of “margin too large” errors and to work better at high settings of
cex
(#757).Missing values in the input data are now silently removed (#759, #763).
The plotting of residuals, component contributions and legend can now be disabled, and the legend position can be controlled (#785).
The error computed when using option
fit.calcError = TRUE
is now returned correctly, instead of being left toNA
(#789).Argument
bg.subtraction
also accepts the option"none"
to disable background subtraction even ifvalues.bg
is provided (#795).
fit_SurfaceExposure()
- It is now possible to specify different values for the light attenuation coefficient
mu
when a list of input data is provided (#667).
fit_ThermalQuenching()
The
trace
option, which can be specified via themethod_control
argument, is now respected.The model now get internally reformulated into a mathematically equivalent expression that is easier to fit. This should reduce the number of occasions when the function fails to find a valid solution and improve the uncertainty estimation (#696).
get_RLum()
- The argument
subset
can now be provided as a character that represents a logical expression. Before, it always required a logical expression, but this may lead to odd effects due to the early evaluation happening in R and might not be wanted. Providingsubset
as a character is now a viable workaround in those situations.
merge_RLum.Data.Curve()
- The function does no longer stops for differing channel resolutions, but it does issue a warning. The user is responsible for the consequences.
plot_DetPlot()
- The logic for multicore support was incorrect, which resulted in always starting a parallel cluster even when
multicore = FALSE
(#742).
plot_DoseResponseCurve()
The response curve always tries to the get the 0 point in the mode
interpolation
andalternate
(#677).Minor graphical polish to limit overplotting and also plot a density curve for the
L_n/T_n
signal.If
mode = "alternate"
, the message that the equivalent dose could not be fitted is no longer shown.Argument
cex.global
has been removed and will be silently ignored (#831).
plot_DRCSummary()
- Add support for
fit.method = 'OTORX'
following the change infit_DoseResponseCurve()
(#677).
plot_DRTResults()
The summary and legend texts now scale better at non-default cex settings (#765).
Argument
given.dose
is better validated against misspecifications, and setting it to 0 is equivalent to leaving it at its defaultNULL
value, which corresponds to avoiding data normalization (#767, #799).The function crashed when multiple inputs were used with
boxplot = TRUE
and all preheat values were identical (#769).Plot title, summary text and legend are now better positioned (#773, #774, #781).
A bug in the way colours and symbols are assigned to plot points has been fixed (#777).
The horizontal axis doesn’t include anymore a spurious extra tick that didn’t correspond to any aliquot (#783).
plot_GrowthCurve()
Add support for
fit.method = 'OTORX'
following the change infit_DoseResponseCurve()
(#677).Argument
cex.global
has been removed and will be silently ignored (#831).
plot_Histogram()
The function now doesn’t produce warnings when the input consists of a single-column data frame, as it assumes that the De error is 10^-9 (#744).
The right margin is now smaller when errors are not plotted, as there is no need to leave space for the standard error axis (#748).
The summary text now scales better at non-default cex settings (#750).
plot_RLum.Data.Curve()
We added comprehensive support for base R plotting arguments utilised by
plot.default()
andpar()
. This enhancement ensures that all available arguments are fully supported (#646).The function gained a new logical argument named
auto_scale
. When set in conjunction with eitherxlim
orylim
, this argument automatically adjusts the plot range to align with the corresponding settings forxlim
orylim
. For instance, if a user intends to plot OSL curves but initially selects thexlim
rangec(10:30)
to examine the background, the initial count values may be excessively large, resulting in limited visibility. With the introduction of theauto_scale
option, theylim
values are automatically adjusted to compensate for this scenario. Theauto_scale
argument is also accessible throughplot_RLum.Analysis()
andplot_RLum()
(#646).
plot_RLum.Data.Spectrum()
The channel-wise background subtraction was essentially broken if a background spectrum with the same setting was provided. The function always calculated the arithmetic mean. This was fixed, and the manual updated accordingly.
If a background spectrum was provided, the behaviour of the plot output was sometimes hard to understand without knowledge of the underlying code. This behaviour was improved and now
ylim
will also affect the background spectrum ifbg.channels = NULL
(the default).The function could crash if column names were missing and the 1bg.spectrum` argument was used (#726).
read_TIFF2R()
The argument
file
can now be provided as alist
or a character vector.The function gained a new logical argument called
merge2stack
that can be used iffile
is either alist
or a character vector of length > 1. If set toTRUE
, images are combined into one image stack.
read_XSYG2R()
A redundant computation has been removed, and the function is now marginally faster on files when the detector is not a spectrometer (#753).
Prepare import for an updated version of LexStudio2 (>=v2.31.1) where the horizontal hardware binning finally works after >10 years, but the changes introduce a lot of
NaN
values that would cause a crash of the function.Minor code refactoring for a small speed boost if spectrometer measurements are imported.
scale_GammaDose()
- Argument
plot_singlePanels
now works as documented, that is it produces all plots in a single page when set toFALSE
(default), and one plot per page when set toTRUE
(#698).
sort_RLum()
The sorting mechanism for
RLum.Analysis
objects has been enhanced. It now enables sorting based on multiple parameters, including sorting all availableinfo_elements
in a prioritised manner (#606, #620).Sorting now works on a list of
RLum.Analysis
objects. If the list contains elements of a different type, they are passed through unchanged. The output is again a list (#620).
structure_RLum()
- The function now returns a less messy data frame because it encapsulates
.pid
andinfo
as lists within the data frame. The function is primarily used internally to facilitate a rapid exploration ofRLum.Analysis
object structures. However, the change may potentially break existing code in extremely rare circumstances.
template_DRAC()
- The function now throws messages instead of warnings for wanted coercions; however, it will be hard on failed coercions that would cause
use_DRAC()
to fail.
use_DRAC()
The function now checks for DRAC specific URL parts if a custom URL is provided; this avoids long searches for unspecific errors.
Due to the internal masking of submitted values, the initial row order got mixed up; regression from #438. The order is maintained and the row index corrected; in other words, the masking should now be again invisible to the user.
verify_SingleGrainData()
- The function crashed if an object originating from
read_XSYG2R()
contained positions in itsinfo
field (#740).
Changes in version 1.0.1 (2025-03-07)
CRAN release: 2025-03-07
Bugfixes
analyse_baSAR()
- The number of aliquots used was only partially reported if no aliquots were removed, resulting in an incomplete message in the output to the terminal.
analyse_FadingMeasurement()
The function now checks that an input object generated from an XSYG file contains irradiation steps and returns an error if none are available, instead of producing an unhelpful output (#588).
A regression in
plot_RLum.Analysis()
caused part of the plot of the luminescence curves to be garbled (#589).The function crashed on a file generated by
read_XSYG2R()
if the number of curves available after removal of the irradiation step was not enough for the the fading measurement to be analysed (#603).
analyse_pIRIRSequence()
- The check on the minimum device plot size used to fail if only one dimension was below our minimum threshold, and when it was incorrectly triggered by the floating point values computed by
grDevices::dev.size()
, which sometimes could be spuriously just below threshold. We also changed the minimum device size from 18 to 16 inches (#593).
calc_CosmicDoseRate()
- The function crashed if the number of depths provided exceeded that of the densities and the latter contained more than one value (#595).
calc_FadingCorr()
The function sporadically returned an implausibly large error estimate if any of the Monte Carlo simulations produced an outlier solution (#597).
The function now allocates only as much memory as required if the user specifies a value for
n.MC
other than"auto"
, which brings a small speed-up if fewer than 10 million samples are requested.Input arguments are now more thoroughly checked to avoid warnings or unhelpful messages (#599).
calc_FastRatio()
- The function crashed if the input was an RLum.Analysis object (#586).
plot_AbanicoPlot()
- The
xlim
,ylim
andzlim
parameters are now better validated to avoid possible crashes if misspecified (#581).
plot_RLum.Analysis()
- The function reset incorrectly the graphical parameters for the case
plot_singlePanels = TRUE
. This caused a regression in the plot output fromanalyse_FadingMeasurement()
(#589).
Changes in version 1.0.0 (2025-02-21)
CRAN release: 2025-02-21
New functions
apply_Crosstalk()
,calc_MoransI()
,plot_SingleGrainDisc()
andplot_MoranScatterplot()
were contributed by Anna-Maartje de Boer and Luc Steinbuch (#560). An introductory example on how to use these functions is available by executingvignette("crosstalk")
.calc_EED_Model()
models incomplete and heterogeneous bleaching of mobile grains after Guibert et al. (2017). Along with the function, the newExampleData.MortarData
data set was added.fit_DoseResponseCurve()
andplot_DoseResponseCurve()
are two new functions derived fromplot_GrowthCurve()
: the first only performs the fitting of a dose-response curve, while the second plots it. This brings greater flexibility and increased speed, as plotting is now independent of fitting (#141).melt_RLum()
: Creates a new flatdata.frame
that can be used for instance in combination with'ggplot2'
. It works only onRLum.Data.Curve-class
andRLum.Analysis-class
objects and lists of such objects.merge_RLum.Data.Spectrum()
: This new function allows to merge two or moreRLum.Data.Spectrum
objects in different ways (#368).add_metadata()
,rename_metadata()
,replace_metadata()
: These function allow to manipulate the metadata ofRisoe.BINfileData
,RLum.Analysis
andRLum.Data
objects (#480, fixed in #514, #524, #525, #527, #534, #545).sort_RLum()
: Allows to sort the records ofRLum.Analysis
andRisoe.BINfileData
objects according to a given slot or info element (#528).view()
: Provides a shortcut to theutils::View()
spreadsheet-like data viewer tailored to the objects in the package (#489).
Breaking changes
We have dropped our dependency on the
readxl
package: functionsanalyse_baSAR()
anduse_DRAC()
now do not accept XLS files anymore but CSV files instead (#237). CSV files can be easily generated from XLS files by Excel or similar applications, or by reading them withreadxl::read_excel()
and saving them withwrite.csv()
.The
plot.single
option, which was available for several functions, sometimes under a slightly different name, has now been renamed toplot_singlePanels
for overall consistency and clarity. Functionscale_GammaDose()
used that option but gave it the opposite meaning: now also this function conforms to the rest of the package. The use of the older names is now deprecated and will produce a warning (#351).The
NumberIterations.MC
option ofplot_GrowthCurve()
has now been renamed ton.MC
for consistency with other functions. Potentially affected are alsoanalyse_Al2O3C_ITC()
,analyse_baSAR()
,analyse_SAR.CWOSL()
,analyse_SAR.TL()
,calc_Huntley2006()
,calc_Lamothe2003()
, as they may pass that optionplot_GrowthCurve()
via their...
argument. The use of the older name is now deprecated and will produce a warning (#546).
Renamed functions and deprecations
Function
Analyse_SAR.OSLdata()
is now officially deprecated,analyse_SAR.CWOSL()
should be used instead (#216).Functions
CW2pHMi()
,CW2pLM()
,CW2pLMi()
andCW2pPMi()
have been renamed toconvert_CW2pHMi()
,convert_CW2pLM()
,convert_CW2pLMi()
andconvert_CW2pPMi()
, respectively. The use of the older names is now deprecated and will produce a warning (#499).Function
Second2Gray()
has been renamed toconvert_Second2Gray()
(#498).Function
PSL2Risoe.BINfileData()
has been renamed toconvert_PSL2Risoe.BINfileData()
(#555).
New dependencies
- We have added package
’vdiffr’
as dependency insuggests
. The package enables us to automatically verify the consistency of plot outputs generated by package functions against reference figures captured earlier. Although this new dependency does not have any user-visible impact, it is required when building’Luminescence’
from source. The primary advantage lies in the developer’s domain, as it ensures that modifications to functions do not inadvertently alter plot outputs.
Bugfixes
analyse_Al2O3C_CrossTalk()
- The function doesn’t crash anymore if option
recordType
is specified and none of the records in the data set is of that type (#487).
analyse_baSAR()
- Argument
XLS_file
has been replaced byCSV_file
and, as mentioned above, the function now only accepts CSV files as input (#237). - Add support for
recordType
passed toget_RLum
in the additional arguments. - Option
plot.single
has been renamed toplot_singlePanels
(#351). - The function crashed if the number of MCMC iterations was set equal to the thinning interval; on the other hand, we saw errors reported from JAGS if the number of MCMC iterations was not at least double the thinning interval. To address this, we slightly retouched our automatic setting of the thinning interval (which was problematic only if the number of MCMC iterations was extremely low); on the other hand, if a user sets a thinning interval that is too high, we now reset it to a lower value and raise a warning (#407).
- The function crashed if a
Risoe.BINFileData
object was provided and the argumentirradiation_times
was set; fixed. - The function was supposed to remove non-OSL curves from the dataset, but it almost never did; fixed.
- The function is more robust against input that may have been subset inconsistently (#517).
- The function doesn’t crash but reports more helpful messages in case the user overrides the default set of monitored variables using
variable.names
within themethod_control
argument (#521).
analyse_SAR.CWOSL()
- The function crashed for a list input that led to
NULL
for various reasons (e.g., unsuitable set of curves). Here the self-call attempted to extract information from the results that did not exist in the first place instead of returningNULL
; fixed. - The produced
RLum.Results
object now also contains a column for the grain (#553).
analyse_FadingMeasurement()
- The function now checks for the version of the BIN-file that originated the
RLum.Analysis
object given as input, and reports a message if a version older than 5 was used (#281). - The function doesn’t crash anymore on some
RLum.Analysis
input files (#283). - Option
plot.single
has been renamed toplot_singlePanels
(#351). - The function doesn’t crash anymore if no record is left after removal of records with negative time since irradiation (#454).
- The function has been made more robust in the calculation of rho’ (#558).
analyse_IRSAR.RF()
- The performance of this function has been improved for the “SLIDE” and “VSLIDE” methods, thanks both to tweaks in the C++ implementation of the sliding algorithm and in how that is managed on the R side. In particular, the default number of sliding windows tested in the algorithm has been reduced from 10 to 3: this value is no longer hardcoded, but can be tuned through the new
num_slide_windows
setting (part of themethod.control
option), thus allowing to find a balance between computation time and quality of fit (#372). - The function is more robust against
sequence_structure
misspecifications (#393). - Some data preparation steps where not correctly applied for
method = "VSLIDE"
(#396). - Option
method.control
has been renamed tomethod_control
for consistency with all other functions in the package (#411).
apply_CosmicRayRamoval()
- Support has been added for the internal function
smooth_RLum
that can be passed as new argument formethod
.
calc_AverageDose()
- The function crashed if the data contained non-positive values: now these are removed before proceeding (#532).
calc_CentralDose()
- Argument
na.rm
is now deprecated: the function will now always remove missing values, as otherwise the presence of anyNA
would propagate and produce unusable results (allNA
s) or buggy behaviour (#302). - The function stops the fixed-point iteration for the computation of the profile log-likelihood as soon as
sigma < 1e-16
, as allowingsigma
to become zero leads to infinities and buggy behaviour (#304).
calc_FastRatio()
- A number of crashes related to input validation have been fixed (#471).
calc_FiniteMixture()
- Arguments
dose.scale
andpdf.scale
were not used and have been removed (#566).
calc_gSGC()
- The function crashed if the data contained negative errors: to avoid this, we now take the absolute values of errors (#479).
calc_Huntley2006()
- Some crashes in case of model misspecification have been solved (#538).
- Some details in the implementation of the function have been optimized, and now it is much faster than before. As part of this, we have changed the default setting of the
rprime
vector that is used in the calculation of the natural dose response and the field saturation, so that more points are concentrated in the bulk of the distribution: this previously depended incorrectly on the number of Monte Carlo iterations requested, so this change brings an additional speed boost. The default setting can be overridden via therprime
argument (#258). - Fitting the “GOK” model on the unfaded data failed when the “EXP” model we use to find a good starting point failed: in such cases, we try again using the simulated fit (#549; thanks to @SalOehl for reporting and providing data to reproduce the error).
- The natural/simulated curve was not plotted in the negative quadrant for
mode = "extrapolation"
, which made it harder to see where it extrapolated to (#551; thanks to @SalOehl for reporting).
calc_Lamothe2003()
- We addressed a long-standing issue regarding the calculation of the
Ln/Tn
error after fading correction, which led to smaller than expected errors (#96).
convert_RLum2Risoe.BINFileData()
- The function could crash with a
incompatible types (from raw to character)
error under particular circumstances; fixed. - The function would fail in edge cases where different objects are mixed so that certain fields for
METADATA
are already available but in the wrong format; fixed.
extract_IrradiationTimes()
- In some circumstances the function failed to update an existing BIN/BINX file due to an incorrect way of subsetting an intermediate data frame of results (#445).
- The function crashed if the info element
startDate
was missing in the irradiation curve; fixed.
fit_CWCurve()
- The function crashed if the computation of the confidence intervals done in
confint()
failed. This has now been fixed, and in cases of failures we report the error message received fromconfint()
(#509). - Argument
output.terminal
has been renamed toverbose
for consistency with other functions. - The function has gained the new
method_control
argument, which can be used to control the saving of the component contribution matrix in the RLum.Results object it returns. This is now disabled by default: to restore the previous behaviour, addmethod_control = list(export.comp.contrib.matrix = TRUE)
to the function call (#573). - In case of plot failure the function now is able to recover gracefully and produce an output object (#574).
fit_EmissionSpectra()
- The function can now return a data frame with the values of all curves plotted, so that it’s much easier to produce alternative plots, by setting option
export.plot.data = TRUE
within themethod_control
argument (#569).
fit_LMCurve()
- The function has gained the new
method_control
argument, which can be used to control the saving of the component contribution matrix in the RLum.Results object it returns. This is now disabled by default: to restore the previous behaviour, addmethod_control = list(export.comp.contrib.matrix = TRUE)
to the function call (#573). - In case of plot failure the function now is able to recover gracefully and produce an output object (#574; thanks to @LumTKO for reporting).
get_RLum()
- If the
subset
option was used on info elements of anRLum.Analysis
object, it would return wrong results if the info element was not present in all records; fixed.
import_Data()
- The function automatically determines the available import functions and ensures that formats supported by the package are tested and used.
- A minor change in the code enables the support of
character
vectors of length > 1 as input (e.g., different file names). Furthermore, the function received more testing against a mixture of input formats. Therefore you can provide many different files formats and the function will try to import them all in one go.
plot_AbanicoPlot()
- If negative values were provided, the function sometimes produced wrong plots for
z.log = TRUE
(the default); fixed. - Support for
tcl
andtck
arguments via...
was removed as they were never used internally.
plot_DRTResults()
- The function crashed if option
na.rm
was used alongside thepreheat
option but the data set contained no missing values (#474).
plot_GrowthCurve()
- The function is now implemented as a wrapper around
fit_DoseResponseCurve()
andplot_DoseResponseCurve()
. There should be no visible user-facing changes (#319). - Support new
...
arguments for plotting (implementation inplot_DoseResponseCurve()
) forlegend
(turn on/off legend) andreg_points_pch
for fine grained control over the point shape. - Add
density_polygon
,density_polygon_col
,density_rug
,box
as...
arguments to plot and add respective plot options - The function crashed for single grain data that sometimes caused a lot of
NaN
values during log conversions required for estimating the start parameters. The result was the errorobject 'b.MC' not found
(#374; fixed) - For the non-linear choices of
fit.method
("EXP+LIN"
,"EXP+EXP"
,"GOK"
and"LambertW"
), the function could get stuck in an endless loop when the number of parameters was larger than or equal to the number of data points. This is now checked, and in those cases the method is changed to"LIN"
(#381). - We replaced
nls()
withminpack.lm::nlsLM()
as it’s more robust and can find a fit in cases wherenls()
would fail. Please keep in mind that it does not mean that fit results in those cases make any sense, it just helps to avoid uncontained events in the R session (addresses #381). - Option
output.plotExtended.single
has been renamed toplot_singlePanels
(#351). - The function now supports a list of data frames as input, in which case it calls itself on each element of the list and produces a list of
RLum.Results
as output (#405). - The function reported negative dose values in the MC runs plot when using
fit.method = "QDR"
andmode = "extrapolation"
(#504). - Argument
NumberIterations.MC
has been renamed ton.MC
(#546).
plot_RLum.Analysis()
- Option
plot.single
has been renamed toplot_singlePanels
(#351).
plot_RLum.Data.Curve()
- Argument
norm
is now better validated so that specifying an incorrect value returns an error instead of silently skipping curve normalisation (#250).
read_BIN2R()
- The function is now much faster: we have recorded an overall improvement of over 60% on a 46M file, with potentially bigger time savings for larger files (#298).
- Argument
n.records
is now better supported for BIN files v3 and v4 and doesn’t lead to a crash when used in conjunction with thefastForward
option (#343). - Argument
zero_data.rm
was not correctly propagated if the input object was provided as a list (#342). - The
METADATA
fields that are not actually read from the BINX file in case of a ROI record are now set toNA
rather than being assigned the value from the previous record (#336). - The
.RESERVED
slot is now kept in sync with the rest of the object when records are dropped from the input BIN/BINX file (#337). - The function doesn’t crash anymore when reading a file that contains a record with an unrecognised version after other records with a valid version have been read (#352).
- The function doesn’t crash anymore when reading a file that contains a ROI record while using
fastForward = TRUE
(#356).
read_HeliosOSL2R()
- If the function encounters problems in the provided list of files, it shows a more relaxed handling; throws an error but continues reading.
read_XSYG2R()
- The new
n_records
argument now enables to control the number of records to import, which can be useful in case the file is faulty. - The function failed to import files when a directory name was provided; this was a regression introduced in v0.9.25 and it has now been fixed.
- The function truncated the terminal output under certain circumstances; fixed.
scale_GammaDose()
- Option
plot_single
has been renamed toplot_singlePanels
and was changed so thatplot_singlePanels = TRUE
will produce one plot per panel, for consistency with other functions (#351).
template_DRAC()
- The function gained a new argument
file_input
that enables the creating of a DRAC template based on an existing DRAC CSV file. This way, already available DRAC files can be conveniently modified without having to calluse_DRAC()
first. - The template contained a couple of minor mistakes that got fixed along with a more strict enforcement of the class of each field, which is now set as an attribute; the change should have no user-visible effect.
- The function now supports the conversion factors by Cresswell et al. (2018) (
Cresswelletal2018
). Please ensure that the server supports that option.
trim_RLum.Data()
- The function has been made more robust against misspecifications of its
trim_range
argument that could lead to crashes (#460).
use_DRAC()
- Support for DRAC v1.1 XLS/XLSX files has been dropped, users should use CSV files according to the DRAC v1.2 CSV template.
- The function gained support for three new
...
arguments:version_ignore
to ignore the DRAC version check,user
andpassword
to access password protected websites. - The identifiers submitted to the DRAC server are now better randomized to to guarantee more confidentiality of the data transmitted (#435).
verify_SingleGrainData()
-
Potentially breaking old code!: if
cleanup = TRUE
the result was not consistent and produced a mixture ofRLum.Results
andRLum.Analysis
/Risoe.BINFileData
objects in particular when run over a list, this was not what stated in the manual. Now the function indeed cleans up the object, hence if a list ofRLum.Analysis
objects is provided, the result is a cleaned list of that object. If the clean-up ends up removing everything, the result isNULL
. - The function doesn’t crash anymore when applied to an empty list (#365).
- Silence the very talkative terminal output even if nothing was removed from a record for
cleanup = TRUE
. - The function now provides better terminal feedback if the selection results in an empty record.
- Add a new logical argument
use_fft
that will apply an additional Fast Discrete Fourier Transform (FFT) verification on the data if wanted.
write_R2BIN()
- The function now supports the
verbose
argument, which can be used to suppress output to the terminal (#442).