The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
serrsBayes
provides model-based quantification of
surface-enhanced resonance Raman spectroscopy (SERRS) using sequential
Monte Carlo (SMC) algorithms. The details of the Bayesian model and
informative priors are provided in the arXiv preprint, Moores et
al. (2016; v2 2018) “Bayesian
modelling and quantification of Raman spectroscopy.” Development of
this software was supported by the UK Engineering & Physical
Sciences Research Council (EPSRC) programme grant “In Situ
Nanoparticle Assemblies for Healthcare Diagnostics and Therapy”
(ref: EP/L014165/1).
Stable releases, including binary packages for Windows & Mac OS, are available from CRAN:
install.packages("serrsBayes")
The current development version can be installed from GitHub:
::install_github("mooresm/serrsBayes") devtools
To simulate a synthetic Raman spectrum with known parameters:
set.seed(1234)
library(serrsBayes)
<- seq(700,1400,by=2)
wavenumbers <- matrix(nrow=1, ncol=length(wavenumbers))
spectra <- c(840, 960, 1140, 1220, 1290)
peakLocations <- c(11500, 2500, 4000, 3000, 2500)
peakAmplitude <- c(10, 15, 20, 10, 12)
peakScale <- weightedLorentzian(peakLocations, peakScale, peakAmplitude, wavenumbers)
signature <- 1000*cos(wavenumbers/200) + 2*wavenumbers
baseline 1,] <- signature + baseline + rnorm(length(wavenumbers),0,200)
spectra[plot(wavenumbers, spectra[1,], type='l', xlab=expression(paste("Raman shift (cm"^{-1}, ")")), ylab="Intensity (a.u.)")
lines(wavenumbers, baseline, col=2, lty=4)
lines(wavenumbers, baseline + signature, col=4, lty=2, lwd=2)
Fit the model using SMC:
<- list(scale.mu=log(11.6) - (0.4^2)/2, scale.sd=0.4, bl.smooth=10^11, bl.knots=50,
lPriors beta.mu=5000, beta.sd=5000, noise.sd=200, noise.nu=4)
<- system.time(result <- fitSpectraSMC(wavenumbers, spectra, peakLocations, lPriors)) tm
Sample 200 particles from the posterior distribution:
print(tm)
#> user system elapsed
#> 257.355 3.859 286.824
<- sample.int(length(result$weights), 200, prob=result$weights)
samp.idx plot(wavenumbers, spectra[1,], type='l', xlab=expression(paste("Raman shift (cm"^{-1}, ")")), ylab="Intensity (a.u.)")
for (pt in samp.idx) {
<- result$basis %*% result$alpha[,1,pt]
bl.est lines(wavenumbers, bl.est, col="#C3000009")
lines(wavenumbers, bl.est + result$expFn[pt,], col="#0000C309")
}
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.