library(ncdf4)
library(gtools)
library(verification)
## Loading required package: fields
## Loading required package: spam
## Loading required package: grid
## Spam version 1.0-1 (2014-09-09) is loaded.
## Type 'help( Spam)' or 'demo( spam)' for a short introduction 
## and overview of this package.
## Help for individual functions is also obtained by adding the
## suffix '.spam' to the function name, e.g. 'help( chol.spam)'.
## 
## Attaching package: 'spam'
## 
## Następujące obiekty zostały zakryte z 'package:base':
## 
##     backsolve, forwardsolve
## 
## Loading required package: maps
## Loading required package: boot
## 
## Attaching package: 'boot'
## 
## Następujące obiekty zostały zakryte z 'package:gtools':
## 
##     inv.logit, logit
## 
## Loading required package: CircStats
## Loading required package: MASS
## Loading required package: dtw
## Loading required package: proxy
## 
## Attaching package: 'proxy'
## 
## Następujący obiekt został zakryty z 'package:spam':
## 
##     as.matrix
## 
## Następujące obiekty zostały zakryte z 'package:stats':
## 
##     as.dist, dist
## 
## Następujący obiekt został zakryty z 'package:base':
## 
##     as.matrix
## 
## Loaded dtw v1.17-1. See ?dtw for help, citation("dtw") for use in publication.
library(plyr)
## 
## Attaching package: 'plyr'
## 
## Następujący obiekt został zakryty z 'package:fields':
## 
##     ozone
library(plotrix)
## 
## Attaching package: 'plotrix'
## 
## Następujący obiekt został zakryty z 'package:fields':
## 
##     color.scale
library(hydroGOF)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## 
## Następujące obiekty zostały zakryte z 'package:base':
## 
##     as.Date, as.Date.numeric
library(ggplot2)
library(magrittr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## 
## Następujące obiekty zostały zakryte z 'package:plyr':
## 
##     arrange, count, desc, failwith, id, mutate, rename, summarise,
##     summarize
## 
## Następujący obiekt został zakryty z 'package:MASS':
## 
##     select
## 
## Następujące obiekty zostały zakryte z 'package:stats':
## 
##     filter, lag
## 
## Następujące obiekty zostały zakryte z 'package:base':
## 
##     intersect, setdiff, setequal, union
# wczesniejsze ustalenia koordynat
 geo_hopen <- c(25.04,76.30)
 geo_hornsund <- c(15.30,77.00)
 geo_bjornoya <- c(19.01,74.31)
# 

# bjornoya <- NULL
# hopen <- NULL
# hornsund <- NULL
# 
# katalogi <- dir("~/Pulpit/svalbard/156.17.59.39/wrf_svalbard/")
# domena <- "d03"
# 
# for (i in 1:length(katalogi)){
# setwd(paste0("~/Pulpit/svalbard/156.17.59.39/wrf_svalbard/",katalogi[i]))
# 
# plik=dir(pattern="d03_2008-06")
# 
# for (pliki in 1:30){
#   cat(paste(katalogi[i],domena),plik[pliki],"\n")
#   
#   nc<-nc_open(plik[pliki], write=F,readunlim=F,verbose=F) # otwieranie pliku
#   lon  =ncvar_get(nc,varid="XLONG") ; lon   <- lon[,,1]
#   lat  =ncvar_get(nc,varid="XLAT")  ; lat   <- lat[,,1]
#   # 
#   ind_hopen <- which( (abs(abs(lon-geo_hopen[1]) + (abs(lat-geo_hopen[2])))) ==  min(abs(abs(lon-geo_hopen[1]) + (abs(lat-geo_hopen[2])))),arr.ind=T) #109,63
#   ind_hornsund <- which( (abs(abs(lon-geo_hornsund[1]) + (abs(lat-geo_hornsund[2])))) ==  min(abs(abs(lon-geo_hornsund[1]) + (abs(lat-geo_hornsund[2])))),arr.ind=T) #58,74
#   ind_bjornoya <- which( (abs(abs(lon-geo_bjornoya[1]) + (abs(lat-geo_bjornoya[2])))) ==  min(abs(abs(lon-geo_bjornoya[1]) + (abs(lat-geo_bjornoya[2])))),arr.ind=T )# 80,15
#   
#   
#   U10  =ncvar_get(nc,varid="U10")   
#   V10  =ncvar_get(nc,varid="V10")   
#   PSFC  =ncvar_get(nc,varid="PSFC")   
#   T2  =ncvar_get(nc,varid="T2")   
#   WS  <- sqrt(U10^2 +V10^2)
#   
#   time  =ncvar_get(nc,varid="Times")   
#   time=strptime(time,format="%Y-%m-%d_%H:%M:%S", tz="GMT")
#   
#   bjornoya_tmp <- cbind.data.frame(time,WS[ind_bjornoya[1],ind_bjornoya[2],], T2[ind_bjornoya[1],ind_bjornoya[2],]-273.15,PSFC[ind_bjornoya[1],ind_bjornoya[2],]/100, katalogi[i], domena)
#   bjornoya_tmp[,2:4]  <- round(bjornoya_tmp[,2:4],1)
#   names(bjornoya_tmp)[2:6] <-     c("WS","T2","PSFC","katalog","domena")
#   
#   hornsund_tmp <- cbind.data.frame(time,WS[ind_hornsund[1],ind_hornsund[2],], T2[ind_hornsund[1],ind_hornsund[2],]-273.15,PSFC[ind_hornsund[1],ind_hornsund[2],]/100, katalogi[i], domena)
#   hornsund_tmp[,2:4]  <- round(hornsund_tmp[,2:4],1)
#   names(hornsund_tmp)[2:6] <-     c("WS","T2","PSFC","katalog","domena")
#   
#   hopen_tmp <- cbind.data.frame(time,WS[ind_hopen[1],ind_hopen[2],], T2[ind_hopen[1],ind_hopen[2],]-273.15,PSFC[ind_hopen[1],ind_hopen[2],]/100, katalogi[i], domena)
#   hopen_tmp[,2:4]  <- round(hopen_tmp[,2:4],1)
#   names(hopen_tmp)[2:6] <-     c("WS","T2","PSFC","katalog","domena")
#   
#   bjornoya <- rbind.data.frame(bjornoya,bjornoya_tmp)
#   hopen <- rbind.data.frame(hopen,hopen_tmp)
#   hornsund <- rbind.data.frame(hornsund,hornsund_tmp)
#   
#   nc_close(nc)
#   
# }
# 
# }
# 
#rm(list=(c("bjornoya_tmp","hopen_tmp","hornsund_tmp","pliki","U10","V10","PSFC","lon","lat", "T2","WS","time","nc","i")))

#save(hopen,hornsund,bjornoya,file = '/home/bartosz/Dokumenty/publikacje własne/2015/svalbard_springer/wrf.rdata')
load(file = '/home/bartosz/Dokumenty/publikacje własne/2015/svalbard_springer/wrf.rdata')


 wczyt_danych <- function(wyjscie, sciezka){
 tmp <- read.csv(sciezka,sep='\t',na.strings = "----")
 tmp$DATA <- as.character(tmp$DATA)
 time=strptime(tmp$DATA,format="%m/%d/%Y", tz="GMT")
 time <- time + tmp$HOUR*3600
 tmp$DATA <- time
 tmp$WS <- tmp$WS/3.6
 assign(wyjscie, tmp, envir = .GlobalEnv)
 }

 sciezka <- "/home/bartosz/Dropbox/Dokumenty/publikacje własne/2015/svalbard_springer/obs/bjornoya.tsv" 
 wczyt_danych("bjornoya_obs",sciezka)
 wczyt_danych("hornsund_obs","/home/bartosz/Dropbox/Dokumenty/publikacje własne/2015/svalbard_springer/obs/hornsund.tsv")
 wczyt_danych("hopen_obs","/home/bartosz/Dropbox/Dokumenty/publikacje własne/2015/svalbard_springer/obs/hopen.tsv")
 
 
 names(bjornoya_obs)[1] <- "time"
 names(hornsund_obs)[1] <- "time"
 names(hopen_obs)[1] <- "time"
 BJORN <- join(bjornoya_obs,bjornoya, by="time",type="inner")
 HORN <- join(hornsund_obs,hornsund, by="time",type="inner")
 HOPEN <- join(hopen_obs,hopen, by="time",type="inner")
 
 BJORN <- cbind.data.frame("BJORNOYA",BJORN)
 names(BJORN) <- c("stacja","time","hh","T2obs","DIRobs","WSobs","GUSTobs","SLPobs","SLP0obs","WS", "T2","PSFC","katalog","domena")
 BJORN <- (select(BJORN,-hh,-GUSTobs))
 
 HORN <- cbind.data.frame("HORN",HORN)
 names(HORN) <- c("stacja","time","hh","T2obs","DIRobs","WSobs","GUSTobs","SLPobs","SLP0obs","WS", "T2","PSFC","katalog","domena")
 HORN <- (select(HORN,-hh,-GUSTobs))
 HORN$SLP0obs <- HORN$SLP0obs -1.4
 
 HOPEN <- cbind.data.frame("HOPEN",HOPEN)
 names(HOPEN) <- c("stacja","time","hh","T2obs","DIRobs","WSobs","GUSTobs","SLPobs","SLP0obs","WS", "T2","PSFC","katalog","domena")
 HOPEN <- (select(HOPEN,-hh,-GUSTobs))
 
 DANE <- (rbind.data.frame(BJORN,HORN,HOPEN)) 
 DANE <- (filter(DANE, !grepl('shave_sim', katalog))) # usuwamy "niewypaly"
 DANE <- DANE %>% select(-DIRobs)
 
 
 DANE %>% filter(stacja=="BJORNOYA" & domena=="d03" ) %>% 
 filter(katalog=="sim1b") %>% 
 select(-time,-katalog,-domena,-stacja,-SLPobs) -> tmp 
 
 
 # tu fragment kodu z obliczeniem statystyk do tabeli w artykule
 
# rbind(round(c(cor(tmp[,6],tmp[,3],use = "pairwise.complete.obs"), me(tmp[,6],tmp[,3]), mae(tmp[,6],tmp[,3]), d(tmp[,6],tmp[,3])),3)) # SLP
# rbind(c(round(cor(tmp[,5],tmp[,1]),2), round(me(tmp[,5],tmp[,1]),2), round(mae(tmp[,5],tmp[,1]),2), round(d(tmp[,5],tmp[,1]),2))) #T2
#  rbind(c(round(cor(tmp[,4],tmp[,2]),2), round(me(tmp[,4],tmp[,2]),2), round(mae(tmp[,4],tmp[,2]),2), round(d(tmp[,4],tmp[,2]),2))) # WS
 
 ###
 
 
 
 # przykladowe ploty do sprawdzenia poprawnosci obliczen
 par(oma=c(0,0,0,0))
 par(mar=c(0,0,0,0))
 
 #plot(verify((subset(DANE,domena=="d03"&katalog=="sim1b")[,5]),(subset(DANE,domena=="d03"&katalog=="sim1b")[,9]), baseline = 20^20,  frcst.type = "cont", obs.type = "cont"))
 
 
 ## STARY KOD DLA CELOW WERYFIKACJI:
 
#  taylor.diagram((subset(HOPEN,domena=="d03"&katalog=="sim1b")[,5]),(subset(HOPEN,domena=="d03"&katalog=="sim1b")[,9]),col = "red",sd.arcs = T, main="HOPEN")
#  taylor.diagram((subset(HOPEN,domena=="d02"&katalog=="sim1b")[,5]),(subset(HOPEN,domena=="d02"&katalog=="sim1b")[,9]),col="orange",add=T)
#  taylor.diagram((subset(HOPEN,domena=="d01"&katalog=="sim1b")[,5]),(subset(HOPEN,domena=="d01"&katalog=="sim1b")[,9]),col="yellow",add=T)
#  
 
 
 
 library(ggplot2)
 tmp2 <- subset(HOPEN,domena=="d03"&katalog=="sim1b")
 ggplot(tmp2,aes(x=T2,y=T2obs)) + geom_point()

 library(magrittr)
 library(dplyr)
 
 subset(HORN,domena=="d03"&katalog=="sim3b") %>%  #    select(T2,T2.1) %>%     cor()
   qplot(T2, T2obs, data = ., geom = c("smooth","point")) %>%    print
## geom_smooth: method="auto" and size of largest group is <1000, so using loess. Use 'method = x' to change the smoothing method.