welcome to the resemble Project

View the Project on GitHub l-ramirez-lopez/resemble


Regression and similarity evaluation for memory-based learning in spectral chemometrics ©

Leonardo Ramirez-Lopez & Antoine Stevens

Last update: 26.06.2019 :::: 10:05 GMT+2

The current (released) version of the resemble package can be downloaded and installed directly from the CRAN repository. Pretty simple, you just have to type in your R console:

If you do not have the following packages installed, in some cases it is better to isntall them first


NOTE: Apart from these packages we stronly recommend to download and install Rtools (directly from here or from CRAN https://cran.r-project.org/bin/windows/Rtools/). This is important for obtaining the proper C++ toolchain that you might need for using resemble.

Then, install resemble:

In this website you can also get the last development version of the resemble package. You can download the binary (.zip) file or the source file (.tar.gz) by selecting the corresponding option in the left panel. Remeber you should have R>=3.2.2. Supose you downloaded the binary file to 'C:/MyFolder/', then you should be able to install the package as follows:

install.packages('C:/MyFolder/resemble-1.2.2.zip', repos = NULL)


install.packages('C:/MyFolder/resemble-1.2.2.tar.gz', type = 'source', repos = NULL)

You can also install the resemble package directly from github using devtools (with a proper installed version of Rtools):


After installing resemble you should be also able to run the following lines:





Xu <- NIRsoil$spc[!as.logical(NIRsoil$train),]
Yu <- NIRsoil$CEC[!as.logical(NIRsoil$train)]
Yr <- NIRsoil$CEC[as.logical(NIRsoil$train)]
Xr <- NIRsoil$spc[as.logical(NIRsoil$train),]

Xu <- Xu[!is.na(Yu),]
Xr <- Xr[!is.na(Yr),]

Yu <- Yu[!is.na(Yu)]
Yr <- Yr[!is.na(Yr)]

# Example of the mbl function
# A mbl approach (the spectrum-based learner) as implemented in Ramirez-Lopez et al. (2013)
# An exmaple where Yu is supposed to be unknown, but the Xu (spectral variables) are known
ctrl1 <- mblControl(sm = 'pc', pcSelection = list('opc', 40),
                    valMethod = 'NNv', center = TRUE)

sbl.u <- mbl(Yr = Yr, Xr = Xr, Yu = NULL, Xu = Xu,
             mblCtrl = ctrl1,
             dissUsage = 'predictors',
             k = seq(40, 150, by = 10),
             method = 'gpr')


resemble implements a function dedicated to non-linear modelling of complex visible and infrared spectral data based on memory-based learning (MBL, a.k.a instance-based learning or local modelling in the chemometrics literature). The package also includes functions for: computing and evaluate spectral similarity/dissimilarity matrices; projecting the spectra onto low dimensional orthogonal variables; removing irrelevant spectra from a reference set; etc.

The functions for computing and evaluate spectral similarity/dissimilarity matrices can be summarized as follows:

fDiss: Euclidean and Mahalanobis distances as well as the cosine dissimilarity (a.k.a spectral angle mapper)
corDiss: correlation and moving window correlation dissimilarity
sid: spectral information divergence between spectra or between the probability distributions of spectra
orthoDiss: principal components and partial least squares dissimilarity (including several options)
simEval: evaluates a given similarity/dissimilarity matrix based on the concept of side information

The functions for projecting the spectra onto low dimensional orthogonal variables are:

pcProjection: projects the spectra onto a principal component space
plsProjection: projects the spectra onto a partial least squares component space (a.k.a projection to latent structures)
orthoProjection: reproduces either the pcProjection or the plsProjection functions

The projection functions also offer different options for optimizing/selecting the number of components involved in the projection.

The functions modelling the spectra using memory-based learning are:

mblControl: controls some modelling aspects of the mbl function
mbl: models the spectra by memory-based learning

Some additional miscellaneous functions are:

print.mbl:prints a summary of the results obtained by the mbl function
plot.mbl: plots a summary of the results obtained by the mbl function
print.localOrthoDiss: prints local distance matrices generated with the orthoDiss function

In order to expand a little bit more the explanation on the mbl function, let's define first the basic input datasets:

In order to predict each value in Yu, the mbl function takes each sample in Xu and searches in Xr for its k-nearest neighbours (most spectrally similar samples). Then a (local) model is calibrated with these (reference) neighbours and it immediately predicts the correspondent value in Yu from Xu. In the function, the k-nearest neighbour search is performed by computing spectral similarity/dissimilarity matrices between samples. The mbl function offers the following regression options for calibrating the (local) models:

'gpr': Gaussian process with linear kernel
'pls': Partial least squares
'wapls1': Weighted average partial least squares 1
'wapls2': Weighted average partial least squares 2 (no longer supported)



Other R'elated stuff

Bug report and development version

If you detect bugs, or if you have a question or request you can just send an e-mail to Leo who is the package maintainer (ramirez.lopez@gmail.com) or create an issue on github. We would be happy to hear from you!