CRAN release ‘Luminescence’ v0.9.19

- the lazy cat wants peace -

by RLum.Network (March 11, 2022)

Finally! 'Luminescence' was the last package that needed an update after the CRAN request had triggered an unscheduled number of releases in a short period. Thanks to the always-active CRAN team, 0.9.19 made it on CRAN yesterday night.

Technique babel

Then the last check prior to submission revealed some additional problems that may probably haunt us for some time in the future. For performance reasons, we had used if(class(object) == "something")) multiple times in nearly all functions, instead of other solutions:

  is = is("test", "character"), 
  inhertis = inherits("test", "character"), 
  class_sub = class("test")[1] == "character", 
  class = class("test") == "character")
## Unit: nanoseconds
##       expr  min     lq    mean median     uq   max neval cld
##         is 6611 6751.0 7101.54 6842.5 6984.0 26364   100   c
##   inhertis  650  690.0  767.04  732.0  777.5  3189   100  b 
##  class_sub  373  405.5  474.22  459.0  502.5  1610   100 ab 
##      class  234  254.5  319.43  269.0  300.0  4537   100 a

The newest R-devel checks now flagged this construction as problematic.

Well, admittedly, class(object) was ill-chosen in the first place because it was not justified to expect the output to be a vector of length 1. This means the solution was error-prone and sanitised by class(object)[1]. Unfortunately, a couple of wrong code (too many) remained and needed a replacement. Given the poor performance of is(), we opted for inherits().

This solution may probably lead to a marginal slower performance while sub-setting large objects; OK.

New functions

Besides these non-user-visible changes under the hood, the new release brings two new functions, adding to the skill set of 'Luminescence'.


This function allows you to extract circular regions-of-interest from image data. While other software solutions do image processing way fast and better, in the context of luminescence data analysis, this something for which you don’t want to swap software. While in the example below, the function uses a self-created matrix as an image input, array and RLum.Data.Image objects are other possibilities.

m <- matrix(runif(100,0,255), ncol = 10, nrow = 10)
roi <- matrix(c(2.,4,2,5,6,7,3,1,1), ncol = 3)
extract_ROI(object = m, roi = roi, plot = TRUE)

##  [RLum.Results-class]
##   originator: extract_ROI()
##   data: 3
##       .. $roi_signals : list
##   .. $roi_summary : matrix
##   .. $roi_coord : matrix
##   additional info elements:  1


It was always somewhat annoying that image and spectrum data could not be processed in R and then returned to an image file. write_R2TIFF() solves that problem.

Further news?

Small fixes, minor changes, nothing out of the ordinary. For a complete list of changes, please check our GitHub page.

Stay safe and enjoy 'Luminescence'

Sebastian on behalf of the R Luminescence Team