# Load libraries ####
library(readr)
library(openair)
library(ggplot2)
# Quiet down warnings
oldw <- getOption("warn")
options(warn = -1)
# Paths and constants ####
# ODIN data folder
data_folder <- "~/data/ODIN_IDAHO/WSV.ODIN.April2018/"
# Load data ####

# Time Corrections
time.corrections <- read.delim(paste0(data_folder,"time_corrections.txt"),stringsAsFactors = FALSE)
time.corrections$Time <- as.POSIXct(time.corrections$Time,tz="PST")
i <- 1
# ODIN data
for (i in (1:length(time.corrections$Serialn))){
  serialn <- time.corrections$Serialn[i]
  odin.data <- read.delim(paste0(data_folder,serialn,".txt"))
  odin.data$date <- as.POSIXct(paste(odin.data$Day,odin.data$Time),tz='PST')
  odin.data$Day <- NULL
  odin.data$Time <- NULL
  odin.data <- odin.data[,c('date','PM1','PM2.5','PM10','Temperature','RH')]
  time_diff <- time.corrections$Time[i] - odin.data$date[1]
  odin.data$date <- odin.data$date + time_diff
  names(odin.data) <- c('date',
                        paste0('PM1.',serialn),
                        paste0('PM2.5.',serialn),
                        paste0('PM10.',serialn),
                        paste0('Temperature.',serialn),
                        paste0('RH.',serialn))
  if (i==1){
    odin <- odin.data
  } else {
    odin <- merge(odin, odin.data, by = 'date',all = TRUE)
  }
  
}

# Some plots ####
## PM1
timePlot(odin,pollutant = names(odin)[grep('^PM1[.]',names(odin))],group = TRUE,avg.time = '1 hour')

timeVariation(odin,pollutant = names(odin)[grep('^PM1[.]',names(odin))])

## PM2.5
timePlot(odin,pollutant = names(odin)[grep('^PM2.5[.]',names(odin))],group = TRUE,avg.time = '1 hour')

timeVariation(odin,pollutant = names(odin)[grep('^PM2.5[.]',names(odin))])

## PM10
timePlot(odin,pollutant = names(odin)[grep('^PM10[.]',names(odin))],group = TRUE,avg.time = '1 hour')

timeVariation(odin,pollutant = names(odin)[grep('^PM10[.]',names(odin))])

## Temperature
timePlot(odin,pollutant = names(odin)[grep('^Temperature[.]',names(odin))],group = TRUE,avg.time = '1 hour')

timeVariation(odin,pollutant = names(odin)[grep('^Temperature[.]',names(odin))])

## RH
timePlot(odin,pollutant = names(odin)[grep('^RH[.]',names(odin))],group = TRUE,avg.time = '1 hour')

timeVariation(odin,pollutant = names(odin)[grep('^RH[.]',names(odin))])

#re-enable warnings to continue the session
options(warn = oldw)