The spectacles
package is making it easy (or at least
easier!) to handle spectroscopy data. It provides the user with
dedicated classes (namely Spectra
and
SpectraDataFrame
), so that most of the useful information
about the spectral dataset is available in one R object:
The stable version of spectacles
is on CRAN
(:tada:):
install.packages('spectacles')
You can also install the development version using the
devtools
package:
# Install devtools if you don't have it on your machine
# install.packages('devtools')
devtools::install_github("pierreroudier/spectacles")
It also provides easy ways to plot a collection of spectra:
ggplot2
or lattice
It also gives overloads to the most common operators such as
$
, [
, or [[
, so that any user
familiar with data.frame
object would fell right at
home.
The philosophy of the package is really just to make it easier to
work with quite complex data. There are a lot of tools already existing
in R to do spectral preprocessing (signal
, etc.). A few
additional tools have been added in spectacles
, such as the
ASD splice correction.
The idea is for the package to work quite well with the pipe
(%>%
) operator from the magrittr
package,
to create chains of pre-processing operators. The function
apply_spectra
makes it easy to work with any function whose
input is either a numeric
vector or a
matrix
:
# Example of splice correction, followed by
# a first derivative, followed by a SNV
my_spectra %>%
splice %>%
apply_spectra(diff, 1) %>%
apply_spectra(snv)
# Another example using prospectr
my_spectra %>%
splice %>%
apply_spectra(prospectr::continuumRemoval, wav = wl(.)) %>%
plot
Again, lots of existing methods available, so spectacles
is not re-implementing any of these. There’s various ways to use
spectacles
with the different methods available, but my
favoured option is to use it in conjonction with the caret
package, which gives a unique API to 160+ models in R:
fit <- train(
y = s$carbon,
x = spectra(s),
method = "pls"
)
spectroSummary(fit)
inspectr
?!?Yes, I once had a package called inspectr
on Github, and
spectacles
is very much the continuation of
inspectr
. The only reason why inspectr
changed
name is that someone pushed a package called inspectr
on
CRAN (despite inspectr
being quite visible on Github….
:-/). So, lesson learnt this time!