load("/Users/gerhard/msc-thesis-data/concept.rdata")

rs <- numeric(nrow(time.evolution))
for(i in 1:nrow(time.evolution)){
  rs[i] <- sum(time.evolution[i,])
}

zeros <- which(rs==0)

pid <- ifelse(pid=="electron",1,0)
pid <- as.numeric(unlist(pid))

pid <- pid[-zeros]
p <- p[-zeros]
dedX <- dedX[-zeros]
time.evolution <- time.evolution[-zeros,]
pads[zeros] <- NULL

p.le.t.2 <- which(p<=2)

pid <- pid[p.le.t.2]
dont.keep <- 1:length(pads)
dont.keep <- dont.keep[-p.le.t.2]

pads[dont.keep] <- NULL

dedX <- dedX[p.le.t.2]
p <- p[p.le.t.2]
pid <- pid[p.le.t.2]
time.evolution <- time.evolution[p.le.t.2,]

rm(rs,zeros,i,dont.keep)

rolled.out.pads <- sapply(pads,rbind)
rolled.out.pads <- t(rolled.out.pads)

if(dim(pads[[1]])[1]==17 && dim(pads[[1]])[2]==24){
  17*24==ncol(rolled.out.pads)&&nrow(rolled.out.pads)==length(pads)
}
## [1] TRUE
rolled.out.pca <- prcomp(rolled.out.pads)
dimnames(rolled.out.pads) <- NULL
require(pander)
## Loading required package: pander
pander(head(rolled.out.pca$rotation[,1:6]))
PC1 PC2 PC3 PC4 PC5 PC6
9.107e-05 -0.0007042 0.002044 -0.0002213 0.0006307 -0.0006643
9.784e-05 -0.001001 0.002679 -0.0001765 0.0007875 -0.001012
0.0002565 -0.0009057 0.002736 -0.0002299 0.001617 -0.001285
0.0008672 -0.001709 0.006119 -1.639e-05 0.003548 -0.002757
0.00579 -0.0006067 0.01902 0.00356 0.017 -0.009926
0.02947 0.007603 0.05127 0.01347 0.04457 -0.03087
save(pads,file="/Users/gerhard/msc-thesis-data/pads")
save(rolled.out.pads,file="/Users/gerhard/msc-thesis-data/rolled.out.pads")
save(rolled.out.pca,file="/Users/gerhard/msc-thesis-data/rolled.out.pca")
save(time.evolution,file="/Users/gerhard/msc-thesis-data/time.evolution")
save(dedX,file="/Users/gerhard/msc-thesis-data/dedX")
save(p,file="/Users/gerhard/msc-thesis-data/p")
save(pid,file="/Users/gerhard/msc-thesis-data/pid")
rm(p.le.t.2)
#//TODO: load...
biplot(rolled.out.pca, scale = 0)
std.dev <- rolled.out.pca$sdev
var <- std.dev^2
prop.var.ex <- var/sum(var)
plot(cumsum(prop.var.ex), xlab = "Principal Component",
              ylab = "Cumulative Proportion of Variance Explained",
              type = "b")
abline(v=min(which(cumsum(prop.var.ex)>=0.9)),col="blue")
text("90%",x=min(which(cumsum(prop.var.ex)>=0.9)+20),y=0.2,col="blue")
text(as.character(min(which(cumsum(prop.var.ex)>=0.9))),x=min(which(cumsum(prop.var.ex)>=0.9)+15),y=0.3,col="blue")
abline(v=min(which(cumsum(prop.var.ex)>=0.95)),col="purple")
text("95%",x=min(which(cumsum(prop.var.ex)>=0.95)+20),y=0.2,col="purple")
text(as.character(min(which(cumsum(prop.var.ex)>=0.95))),x=min(which(cumsum(prop.var.ex)>=0.95)+15),y=0.3,col="purple")
abline(v=min(which(cumsum(prop.var.ex)>=0.99)),col="red")
text("99%",x=min(which(cumsum(prop.var.ex)>=0.99)+20),y=0.2,col="red")
text(as.character(min(which(cumsum(prop.var.ex)>=0.99))),x=min(which(cumsum(prop.var.ex)>=0.99)+15),y=0.3,col="red")

#function for new data that needs to use these principal component loadings to exist in the same feature space

load.pca <- function(new.data){
  pca.loaded <- predict(rolled.out.pca, newdata = new.data)
}
pca.dat <- load.pca(rolled.out.pads)
#pca.dat <- pca.dat[,1:183]
rm(var,std.dev,prop.var.ex,rolled.out.pads,rolled.out.pca)

Do the same for integrated charge deposit over time bins

time.evol.pca <- prcomp(time.evolution)
biplot(time.evol.pca, scale = 0)
std.dev <- time.evol.pca$sdev
var <- std.dev^2
prop.var.ex <- var/sum(var)
plot(cumsum(prop.var.ex), xlab = "Principal Component",
              ylab = "Cumulative Proportion of Variance Explained",
              type = "b")
abline(v=min(which(cumsum(prop.var.ex)>=0.9)),col="blue")

abline(v=min(which(cumsum(prop.var.ex)>=0.95)),col="purple")

abline(v=min(which(cumsum(prop.var.ex)>=0.99)),col="red")

#function for new data that needs to use these principal component loadings to exist in the same feature space

load.pca2 <- function(new.data){
  pca.loaded <- predict(time.evol.pca, newdata = new.data)
}
pca.dat2 <- load.pca2(time.evolution)
#pca.dat2 <- pca.dat2[,1:min(which(cumsum(prop.var.ex)>=0.99))]
pca.dat <- cbind(pca.dat,pca.dat2)
rm(pca.dat2)
rm(time.evol.pca)
rm(p.le.t.2)
rm(prop.var.ex,std.dev,var,load.pca,load.pca2)
time.2.chunks <- matrix(ncol=2,nrow=nrow(time.evolution))
time.2.chunks[,1] <- time.evolution[,1] + time.evolution[,2] +
  time.evolution[,3] + time.evolution[,4] +
  time.evolution[,5] + time.evolution[,6] +
  time.evolution[,7] + time.evolution[,8] +
  time.evolution[,9] + time.evolution[,10] +
  time.evolution[,11] + time.evolution[,12]
time.2.chunks[,2] <- time.evolution[,13] + time.evolution[,14] +
  time.evolution[,15] + time.evolution[,16] +
  time.evolution[,17] + time.evolution[,18] +
  time.evolution[,19] + time.evolution[,20] +
  time.evolution[,21] + time.evolution[,22] +
  time.evolution[,23] + time.evolution[,24]

time.3.chunks <- matrix(ncol=3,nrow=nrow(time.evolution))
time.3.chunks[,1] <- time.evolution[,1] + time.evolution[,2] +
  time.evolution[,3] + time.evolution[,4] +
  time.evolution[,5] + time.evolution[,6] +
  time.evolution[,7] + time.evolution[,8]
time.3.chunks[,2] <-
  time.evolution[,9] + time.evolution[,10] +
  time.evolution[,11] + time.evolution[,12] +
  time.evolution[,13] + time.evolution[,14] +
  time.evolution[,15] + time.evolution[,16]
time.3.chunks[,3] <-  
  time.evolution[,17] + time.evolution[,18] +
  time.evolution[,19] + time.evolution[,20] +
  time.evolution[,21] + time.evolution[,22] +
  time.evolution[,23] + time.evolution[,24]

time.6.chunks <- matrix(ncol=6,nrow=nrow(time.evolution))
time.6.chunks[,1] <- time.evolution[,1] + time.evolution[,2] +
  time.evolution[,3] + time.evolution[,4]
time.6.chunks[,2] <- 
  time.evolution[,5] + time.evolution[,6] +
  time.evolution[,7] + time.evolution[,8]
time.6.chunks[,3] <- 
  time.evolution[,9] + time.evolution[,10] +
  time.evolution[,11] + time.evolution[,12]
time.6.chunks[,4] <- 
  time.evolution[,13] + time.evolution[,14] +
  time.evolution[,15] + time.evolution[,16]
time.6.chunks[,5] <- 
  time.evolution[,17] + time.evolution[,18] +
  time.evolution[,19] + time.evolution[,20]
time.6.chunks[,6] <- 
  time.evolution[,21] + time.evolution[,22] +
  time.evolution[,23] + time.evolution[,24]

time.2.chunks <- data.frame(time.2.chunks)
time.2.chunks$diff <- time.2.chunks[,2] - time.2.chunks[,1]

time.3.chunks <- data.frame(time.3.chunks)
time.3.chunks$diff1 <- time.3.chunks[,2] - time.2.chunks[,1]
time.3.chunks$diff2 <- time.3.chunks[,3] - time.2.chunks[,2]

time.6.chunks <- data.frame(time.6.chunks)
time.6.chunks$diff1 <- time.6.chunks[,2] - time.6.chunks[,1]
time.6.chunks$diff2 <- time.6.chunks[,3] - time.6.chunks[,2]
time.6.chunks$diff3 <- time.6.chunks[,4] - time.6.chunks[,3]
time.6.chunks$diff4 <- time.6.chunks[,5] - time.6.chunks[,4]
time.6.chunks$diff5 <- time.6.chunks[,6] - time.6.chunks[,5]

time.cumsum <- matrix(nrow=nrow(time.evolution),ncol=ncol(time.evolution))

for(i in 1:nrow(time.evolution)){
  time.cumsum[i,] <- cumsum(time.evolution[i,])/dedX[i]
}

time.and.charge <- cbind(dedX,time.2.chunks,time.3.chunks,time.6.chunks,time.cumsum)
rm(time.2.chunks,time.3.chunks,time.6.chunks,time.cumsum,dedX)
fluct <- matrix(nrow=nrow(time.evolution),
                    ncol=ncol(time.evolution))

for(i in 1:nrow(fluct)){
  fluct[i,] <- scale(time.evolution[i,])
}

fluct <- data.frame(fluct)
fluct$mean <- rowMeans(fluct)

time.and.charge <- cbind(time.and.charge,fluct)
rm(fluct)
rm(pads)
# require(pracma)
# 
# moving.av <- matrix(ncol=ncol(time.evolution),nrow=nrow(time.evolution))
# 
# for(i in 1:nrow(moving.av)){
#   moving.av[i,] <- as.numeric(unlist(movavg(time.evolution[i,],n=4)))
# }
rm(time.evolution,i)
time.and.charge.pca <- prcomp(time.and.charge)

load.pca3 <- function(new.data){
  pca.loaded <- predict(time.and.charge.pca, newdata = new.data)
}

pca3 <- load.pca3(time.and.charge)

pca.dat <- cbind(pca.dat,pca3)
save(pca.dat,file="pca.dat.rdata")
save(pid,file="pid.rdata")