require(ggplot2)
require(plotly)
library(RColorBrewer)
require(prospectr)
library(soilspec)
#NOTE: there is also asdreader::get_spectra() (see EspCrater_FS3_nb.Rmd)

# > getwd()
# [1] "/media/alobo/DecepNTFS2/HSI_Lab/Testllum_20230717/Rtestllum_20230717"

dirRSpect <- "/home/alobo/owncloudRSpect/RSpect"
dirdat <- "../EspCrater_HandSamples/FS3"

1. Reading data

f <- read.csv(file.path(dirdat,"FS3spectra.csv"), stringsAsFactors = FALSE)
f$ID <- paste(f$smple,f$point,f$replicate, sep="_")
f$file <- paste0(f$file,".asd")

2. Build data frame (long format)

d.lf <-  NULL
for (i in 1:nrow(f)) {
  r <- readASD(file.path(dirdat,f$file[i]), out_format = 'list')[[1]]$radiance
  rf <- readASD(file.path(dirdat,f$file[i]), out_format = 'list')[[1]]$reference
  s <- readASD(file.path(dirdat,f$file[i]), out_format = 'list')[[1]]$reflectance
  w <- readASD(file.path(dirdat,f$file[i]), out_format = 'list')[[1]]$wavelength
  sc <- spliceCorrection(s,wav=w, splice = c(1000, 1800))
  d.lf <- rbind(d.lf,data.frame(f[i,],w,r,rf,s,sc))
  #d <- cbind(d,)
}
head(d.lf,3)
EspCratHandSamplesProbe.lf <- d.lf

3. Reflectance Spectra

glabprobe <- ggplot(data=d.lf[d.lf$sample!="w",]) +
  geom_line(aes(x=w, y=sc, color=sample, group=file), linewidth=0.3) +
  xlab("Wavelength") + ylab("Reflectance") + 
  ggtitle("Espai Crater: lab (probe) Reflectance spectra")
  #scale_color_brewer(palette = "Set1")
#ggplotly(g2)
ggplotly(glabprobe + facet_wrap(~sample))
LS0tCnRpdGxlOiAiTGFiIFJlZmxlY3RhbmNlIHNwZWN0cmEgb2YgaGFuZCBzYW1wbGVzICh3aXRoIHByb2JlKSBmcm9tIFB1aWcgZGVsIFJvc2VyIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgdG9jOiBubwogICAgdG9jX2Zsb2F0OiBubwotLS0KCiogQWd1c3Rpbi5Mb2JvQGdlbzNiY24uY3NpYy5lcwoqIDIwMjMwNzE3CgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpyZXF1aXJlKGdncGxvdDIpCnJlcXVpcmUocGxvdGx5KQpsaWJyYXJ5KFJDb2xvckJyZXdlcikKcmVxdWlyZShwcm9zcGVjdHIpCmxpYnJhcnkoc29pbHNwZWMpCiNOT1RFOiB0aGVyZSBpcyBhbHNvIGFzZHJlYWRlcjo6Z2V0X3NwZWN0cmEoKSAoc2VlIEVzcENyYXRlcl9GUzNfbmIuUm1kKQoKIyA+IGdldHdkKCkKIyBbMV0gIi9tZWRpYS9hbG9iby9EZWNlcE5URlMyL0hTSV9MYWIvVGVzdGxsdW1fMjAyMzA3MTcvUnRlc3RsbHVtXzIwMjMwNzE3IgoKZGlyUlNwZWN0IDwtICIvaG9tZS9hbG9iby9vd25jbG91ZFJTcGVjdC9SU3BlY3QiCmRpcmRhdCA8LSAiLi4vRXNwQ3JhdGVyX0hhbmRTYW1wbGVzL0ZTMyIKCmBgYAoKIyMgMS4gUmVhZGluZyBkYXRhCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmYgPC0gcmVhZC5jc3YoZmlsZS5wYXRoKGRpcmRhdCwiRlMzc3BlY3RyYS5jc3YiKSwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQpmJElEIDwtIHBhc3RlKGYkc2FtcGxlLGYkcG9pbnQsZiRyZXBsaWNhdGUsIHNlcD0iXyIpCmYkZmlsZSA8LSBwYXN0ZTAoZiRmaWxlLCIuYXNkIikKYGBgCgojIyAyLiBCdWlsZCBkYXRhIGZyYW1lIChsb25nIGZvcm1hdCkKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KZC5sZiA8LSAgTlVMTApmb3IgKGkgaW4gMTpucm93KGYpKSB7CiAgciA8LSByZWFkQVNEKGZpbGUucGF0aChkaXJkYXQsZiRmaWxlW2ldKSwgb3V0X2Zvcm1hdCA9ICdsaXN0JylbWzFdXSRyYWRpYW5jZQogIHJmIDwtIHJlYWRBU0QoZmlsZS5wYXRoKGRpcmRhdCxmJGZpbGVbaV0pLCBvdXRfZm9ybWF0ID0gJ2xpc3QnKVtbMV1dJHJlZmVyZW5jZQogIHMgPC0gcmVhZEFTRChmaWxlLnBhdGgoZGlyZGF0LGYkZmlsZVtpXSksIG91dF9mb3JtYXQgPSAnbGlzdCcpW1sxXV0kcmVmbGVjdGFuY2UKICB3IDwtIHJlYWRBU0QoZmlsZS5wYXRoKGRpcmRhdCxmJGZpbGVbaV0pLCBvdXRfZm9ybWF0ID0gJ2xpc3QnKVtbMV1dJHdhdmVsZW5ndGgKICBzYyA8LSBzcGxpY2VDb3JyZWN0aW9uKHMsd2F2PXcsIHNwbGljZSA9IGMoMTAwMCwgMTgwMCkpCiAgZC5sZiA8LSByYmluZChkLmxmLGRhdGEuZnJhbWUoZltpLF0sdyxyLHJmLHMsc2MpKQogICNkIDwtIGNiaW5kKGQsKQp9CmhlYWQoZC5sZiwzKQpFc3BDcmF0SGFuZFNhbXBsZXNQcm9iZS5sZiA8LSBkLmxmCiNzYXZlKEVzcENyYXRIYW5kU2FtcGxlc1Byb2JlLmxmLCBmaWxlPSAiRXNwQ3JhdEhhbmRTYW1wbGVzUHJvYmUubGYucmRhIikKYGBgCgojIyAzLiBSZWZsZWN0YW5jZSBTcGVjdHJhCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGZpZy5oZWlnaHQ9NiwgZmlnLndpZHRoPTEwfQpnbGFicHJvYmUgPC0gZ2dwbG90KGRhdGE9ZC5sZltkLmxmJHNhbXBsZSE9InciLF0pICsKICBnZW9tX2xpbmUoYWVzKHg9dywgeT1zYywgY29sb3I9c2FtcGxlLCBncm91cD1maWxlKSwgbGluZXdpZHRoPTAuMykgKwogIHhsYWIoIldhdmVsZW5ndGgiKSArIHlsYWIoIlJlZmxlY3RhbmNlIikgKyAKICBnZ3RpdGxlKCJFc3BhaSBDcmF0ZXI6IGxhYiAocHJvYmUpIFJlZmxlY3RhbmNlIHNwZWN0cmEiKQogICNzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJTZXQxIikKI2dncGxvdGx5KGcyKQpnZ3Bsb3RseShnbGFicHJvYmUgKyBmYWNldF93cmFwKH5zYW1wbGUpKQpgYGAKCg==