library(alkahest)
data("XRD")
XRD <- signal_select(XRD, from = 20, to = 70)
ylim <- c(0, max(XRD$y))
1. Linear baseline
plot(XRD, type = "l", ylim = ylim, xlab = expression(2*theta), ylab = "Count")
abline(h = 0, lty = "dashed")
baseline <- baseline_linear(XRD, points = c(25, 34))
lines(baseline, col = "red")
corrected <- signal_drift(XRD, lag = baseline, subtract = TRUE)
lines(corrected, col = "blue")

2. Polynomial baseline
plot(XRD, type = "l", ylim = ylim, xlab = expression(2*theta), ylab = "Count")
abline(h = 0, lty = "dashed")
baseline <- baseline_polynomial(XRD, d = 4, tolerance = 0.02, stop = 1000)
lines(baseline, col = "red")
corrected <- signal_drift(XRD, lag = baseline, subtract = TRUE)
lines(corrected, col = "blue")

3. Asymmetric Least Squares Smoothing
plot(XRD, type = "l", ylim = ylim, xlab = "Energy (keV)", ylab = "Count")
abline(h = 0, lty = "dashed")
baseline <- baseline_asls(XRD, p = 0.005, lambda = 10^7)
lines(baseline, col = "red")
corrected <- signal_drift(XRD, lag = baseline, subtract = TRUE)
lines(corrected, col = "blue")

4. Rolling Ball baseline
plot(XRD, type = "l", ylim = ylim, xlab = expression(2*theta), ylab = "Count")
abline(h = 0, lty = "dashed")
baseline <- baseline_rollingball(XRD, m = 201, s = 151)
lines(baseline, col = "red")
corrected <- signal_drift(XRD, lag = baseline, subtract = TRUE)
lines(corrected, col = "blue")

5. Rubberband baseline
plot(XRD, type = "l", ylim = ylim, xlab = expression(2*theta), ylab = "Count")
abline(h = 0, lty = "dashed")
baseline <- baseline_rubberband(XRD)
lines(baseline, col = "red")
corrected <- signal_drift(XRD, lag = baseline, subtract = TRUE)
lines(corrected, col = "blue")

6. SNIP baseline
plot(XRD, type = "l", ylim = ylim, xlab = expression(2*theta), ylab = "Count")
abline(h = 0, lty = "dashed")
baseline <- baseline_snip(XRD, LLS = FALSE, decreasing = FALSE, n = 100)
lines(baseline, col = "red")
corrected <- signal_drift(XRD, lag = baseline, subtract = TRUE)
lines(corrected, col = "blue")

7. 4S Peak Filling
plot(XRD, type = "l", ylim = ylim, xlab = "Energy (keV)", ylab = "Count")
abline(h = 0, lty = "dashed")
baseline <- baseline_peakfilling(XRD, n = 10, m = 5, by = 10,
lambda = 1000, d = 3, sparse = TRUE)
lines(baseline, col = "red")
corrected <- signal_drift(XRD, lag = baseline, subtract = TRUE)
lines(corrected, col = "blue")
