require(ggplot2)
require(plotly)
library(RColorBrewer)
library(plyr)
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/EspCraterSamples20230721"

1. Reading data

#inital list of files and times to sort them and write csv:
#f <- list.files(dirdat, patt=glob2rx("*.asd"))
#ft <- file.mtime(file.path(dirdat,f))
#df <- data.frame(file=f, time=ft)
#df <- df[order(df$time),]
#head(df)
#write.csv(df, file=file.path(dirdat,"labNoprobe20230717.csv"))
#"labNoprobe20230717.csv" edited in LibreOffice Calc
f <- read.csv(file.path(dirdat,"labNoprobe20230717.csv"), stringsAsFactors = FALSE)
f$ID <- paste(f$sample,f$point,f$replicate, sep="_")

2. Build data frame (long format)

#The following takes a long time, it is saved and read the rda
#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))
#}
#head(d.lf,3)
#tail(d.lf)
#d.lf <-  d.lf[ d.lf$sample !=0,]
#EspCratHandSamplesNoProbe.lf <- d.lf
#save(EspCratHandSamplesNoProbe.lf, file= "EspCratHandSamplesNoProbe.lf.rda")
load("EspCratHandSamplesNoProbe.lf.rda")
d.lf <- EspCratHandSamplesNoProbe.lf
head(d.lf,3)
#tail(d.lf)

3. Reflectance Spectra

#glabnoprobe <- ggplot(data=d.lf[d.lf$sample!="backg",],
#                      aes(label1=ID,label2=point, label3=replicate)) +
#  geom_line(aes(x=w, y=sc, color=sample, group=file), linewidth=0.3) +
#  xlab("Wavelength") + ylab("Reflectance") + 
#  theme(legend.position="none") +
#  ggtitle("Espai Crater: lab (optic fiber) Reflectance spectra")
#  #scale_color_brewer(palette = "Set1")

#d.lf is too large. We average replicates
a <- ddply(d.lf,c("sample", "point","w"), summarise, sc = mean(sc))
a$ID <- paste0(a$sample,"_",a$point)
d.lf <- a
glabnoprobe <- ggplot(data=d.lf[d.lf$sample!="backg",],
                      aes(label1=ID,label2=point)) +
  geom_line(aes(x=w, y=sc, color=sample), linewidth=0.3) +
  xlab("Wavelength") + ylab("Reflectance") + 
  theme(legend.position="none") +
  ggtitle("Espai Crater: lab (optic fiber) Reflectance spectra")

ggplotly(glabnoprobe + facet_wrap(~sample))
NA
ggplotly(glabnoprobe + facet_wrap(~sample, scales="free_y"))
LS0tCnRpdGxlOiAiTGFiIFJlZmxlY3RhbmNlIHNwZWN0cmEgb2YgaGFuZCBzYW1wbGVzIChvcHRpYyBmaWJlcikgZnJvbSBQdWlnIGRlbCBSb3NlciIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIHRvYzogbm8KICAgIHRvY19mbG9hdDogbm8KLS0tCgoqIEFndXN0aW4uTG9ib0BnZW8zYmNuLmNzaWMuZXMKKiAyMDIzMDcyNgoqIDIwMjMwNzIxIExhYiBzcGVjdHJhIGFjcXVpcmVkIHdpdGggVmFsZW50aW4KICAqIEZTMywgb3B0aWMgZmliZXIgKyA4wrogZm9yZWxlbnMgYW5kIEFTRCBQUk9MQU1QIGlsbHVtaW5hdG9yCgoKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KcmVxdWlyZShnZ3Bsb3QyKQpyZXF1aXJlKHBsb3RseSkKbGlicmFyeShSQ29sb3JCcmV3ZXIpCmxpYnJhcnkocGx5cikKcmVxdWlyZShwcm9zcGVjdHIpCiNsaWJyYXJ5KHNvaWxzcGVjKQojTk9URTogdGhlcmUgaXMgYWxzbyBhc2RyZWFkZXI6OmdldF9zcGVjdHJhKCkgKHNlZSBFc3BDcmF0ZXJfRlMzX25iLlJtZCkKCiMgPiBnZXR3ZCgpCiMgWzFdICIvbWVkaWEvYWxvYm8vRGVjZXBOVEZTMi9IU0lfTGFiL1Rlc3RsbHVtXzIwMjMwNzE3L1J0ZXN0bGx1bV8yMDIzMDcxNyIKCmRpclJTcGVjdCA8LSAiL2hvbWUvYWxvYm8vb3duY2xvdWRSU3BlY3QvUlNwZWN0IgpkaXJkYXQgPC0gIi4uL0VzcENyYXRlcl9IYW5kU2FtcGxlcy9GUzMvRXNwQ3JhdGVyU2FtcGxlczIwMjMwNzIxIgoKYGBgCgojIyAxLiBSZWFkaW5nIGRhdGEKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KI2luaXRhbCBsaXN0IG9mIGZpbGVzIGFuZCB0aW1lcyB0byBzb3J0IHRoZW0gYW5kIHdyaXRlIGNzdjoKI2YgPC0gbGlzdC5maWxlcyhkaXJkYXQsIHBhdHQ9Z2xvYjJyeCgiKi5hc2QiKSkKI2Z0IDwtIGZpbGUubXRpbWUoZmlsZS5wYXRoKGRpcmRhdCxmKSkKI2RmIDwtIGRhdGEuZnJhbWUoZmlsZT1mLCB0aW1lPWZ0KQojZGYgPC0gZGZbb3JkZXIoZGYkdGltZSksXQojaGVhZChkZikKI3dyaXRlLmNzdihkZiwgZmlsZT1maWxlLnBhdGgoZGlyZGF0LCJsYWJOb3Byb2JlMjAyMzA3MTcuY3N2IikpCiMibGFiTm9wcm9iZTIwMjMwNzE3LmNzdiIgZWRpdGVkIGluIExpYnJlT2ZmaWNlIENhbGMKYGBgCgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpmIDwtIHJlYWQuY3N2KGZpbGUucGF0aChkaXJkYXQsImxhYk5vcHJvYmUyMDIzMDcxNy5jc3YiKSwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQpmJElEIDwtIHBhc3RlKGYkc2FtcGxlLGYkcG9pbnQsZiRyZXBsaWNhdGUsIHNlcD0iXyIpCmBgYAoKIyMgMi4gQnVpbGQgZGF0YSBmcmFtZSAobG9uZyBmb3JtYXQpCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiNUaGUgZm9sbG93aW5nIHRha2VzIGEgbG9uZyB0aW1lLCBpdCBpcyBzYXZlZCBhbmQgcmVhZCB0aGUgcmRhCiNkLmxmIDwtICBOVUxMCiNmb3IgKGkgaW4gMTpucm93KGYpKSB7CiMgIHIgPC0gcmVhZEFTRChmaWxlLnBhdGgoZGlyZGF0LGYkZmlsZVtpXSksIG91dF9mb3JtYXQgPSAnbGlzdCcpW1sxXV0kcmFkaWFuY2UKIyAgcmYgPC0gcmVhZEFTRChmaWxlLnBhdGgoZGlyZGF0LGYkZmlsZVtpXSksIG91dF9mb3JtYXQgPSAnbGlzdCcpW1sxXV0kcmVmZXJlbmNlCiMgIHMgPC0gcmVhZEFTRChmaWxlLnBhdGgoZGlyZGF0LGYkZmlsZVtpXSksIG91dF9mb3JtYXQgPSAnbGlzdCcpW1sxXV0kcmVmbGVjdGFuY2UKIyAgdyA8LSByZWFkQVNEKGZpbGUucGF0aChkaXJkYXQsZiRmaWxlW2ldKSwgb3V0X2Zvcm1hdCA9ICdsaXN0JylbWzFdXSR3YXZlbGVuZ3RoCiMgIHNjIDwtIHNwbGljZUNvcnJlY3Rpb24ocyx3YXY9dywgc3BsaWNlID0gYygxMDAwLCAxODAwKSkKIyAgZC5sZiA8LSByYmluZChkLmxmLGRhdGEuZnJhbWUoZltpLF0sdyxyLHJmLHMsc2MpKQojfQojaGVhZChkLmxmLDMpCiN0YWlsKGQubGYpCiNkLmxmIDwtICBkLmxmWyBkLmxmJHNhbXBsZSAhPTAsXQojRXNwQ3JhdEhhbmRTYW1wbGVzTm9Qcm9iZS5sZiA8LSBkLmxmCiNzYXZlKEVzcENyYXRIYW5kU2FtcGxlc05vUHJvYmUubGYsIGZpbGU9ICJFc3BDcmF0SGFuZFNhbXBsZXNOb1Byb2JlLmxmLnJkYSIpCmxvYWQoIkVzcENyYXRIYW5kU2FtcGxlc05vUHJvYmUubGYucmRhIikKZC5sZiA8LSBFc3BDcmF0SGFuZFNhbXBsZXNOb1Byb2JlLmxmCmhlYWQoZC5sZiwzKQojdGFpbChkLmxmKQpgYGAKCgojIyAzLiBSZWZsZWN0YW5jZSBTcGVjdHJhCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTEyfQojZ2xhYm5vcHJvYmUgPC0gZ2dwbG90KGRhdGE9ZC5sZltkLmxmJHNhbXBsZSE9ImJhY2tnIixdLAojICAgICAgICAgICAgICAgICAgICAgIGFlcyhsYWJlbDE9SUQsbGFiZWwyPXBvaW50LCBsYWJlbDM9cmVwbGljYXRlKSkgKwojICBnZW9tX2xpbmUoYWVzKHg9dywgeT1zYywgY29sb3I9c2FtcGxlLCBncm91cD1maWxlKSwgbGluZXdpZHRoPTAuMykgKwojICB4bGFiKCJXYXZlbGVuZ3RoIikgKyB5bGFiKCJSZWZsZWN0YW5jZSIpICsgCiMgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0ibm9uZSIpICsKIyAgZ2d0aXRsZSgiRXNwYWkgQ3JhdGVyOiBsYWIgKG9wdGljIGZpYmVyKSBSZWZsZWN0YW5jZSBzcGVjdHJhIikKIyAgI3NjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiKQoKI2QubGYgaXMgdG9vIGxhcmdlLiBXZSBhdmVyYWdlIHJlcGxpY2F0ZXMKYSA8LSBkZHBseShkLmxmLGMoInNhbXBsZSIsICJwb2ludCIsInciKSwgc3VtbWFyaXNlLCBzYyA9IG1lYW4oc2MpKQphJElEIDwtIHBhc3RlMChhJHNhbXBsZSwiXyIsYSRwb2ludCkKZC5sZiA8LSBhCmdsYWJub3Byb2JlIDwtIGdncGxvdChkYXRhPWQubGZbZC5sZiRzYW1wbGUhPSJiYWNrZyIsXSwKICAgICAgICAgICAgICAgICAgICAgIGFlcyhsYWJlbDE9SUQsbGFiZWwyPXBvaW50KSkgKwogIGdlb21fbGluZShhZXMoeD13LCB5PXNjLCBjb2xvcj1zYW1wbGUpLCBsaW5ld2lkdGg9MC4zKSArCiAgeGxhYigiV2F2ZWxlbmd0aCIpICsgeWxhYigiUmVmbGVjdGFuY2UiKSArIAogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0ibm9uZSIpICsKICBnZ3RpdGxlKCJFc3BhaSBDcmF0ZXI6IGxhYiAob3B0aWMgZmliZXIpIFJlZmxlY3RhbmNlIHNwZWN0cmEiKQoKZ2dwbG90bHkoZ2xhYm5vcHJvYmUgKyBmYWNldF93cmFwKH5zYW1wbGUpKQoKYGBgCgoKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9MTJ9CmdncGxvdGx5KGdsYWJub3Byb2JlICsgZmFjZXRfd3JhcCh+c2FtcGxlLCBzY2FsZXM9ImZyZWVfeSIpKQpgYGAKCg==