# Read in callibration data
rm(list=ls())
layout(matrix(c(1,2), 1, 1, byrow = TRUE))
opar<- par(mar=c(5, 3, 4, 3) + 0.1)
# Adjust skip to get Conc and V(Conc) headers.
# Calibration File:
Z<- read.table("Lobster012.TXT", header=TRUE, skip=4, nrows=1, sep=' ')
# Data File:
filnam<-"Lobster010.TXT"
Conditions<- "Lobster 2c-scan-1; H-LIX in sea water pH 7.5"
# Adjust multiplier to make 
iConc<-7:9
iVconc<-10:12
Conc<-as.real(Z[iConc])/1000
Vconc<-as.real(Z[iVconc])
Lconc<-log10(Conc)
ELconc<-predict(lm(Lconc~Vconc))
plot(Vconc, ELconc, ty='b', main="-pH vs mV CALLIBRATION")
points(Vconc, Lconc,col='red')
points(90, -5.25, col='red')
text(93, -5.25, "Obs[-pH]", col='red', pos=4)
points(90, -5.35, col='black')
text(93, -5.35, "E[-pH]", col='black', pos=4)
points(90, -5.45, col='blue', cex=2)
text(93, -5.45, "New E[-pH]", col='blue', pos=4)

NewVC <- data.frame(Vconc = c(60, 80, 100, 120, 140, 160))
points(t(NewVC), predict(lm(Lconc~Vconc), newdata=NewVC), cex=2, col='blue')
browser()

layout(matrix(c(1:6), 2, 3, byrow = TRUE))    # was 2 by 4

XX<-read.table(filnam, header=TRUE, skip=19, nrows=-1, sep=',')
print(names(XX))
attach(XX)

Origin.Z.1.uV <- - Origin.Z.1.uV
Origin.X..1.uV <- - Origin.X..1.uV
Origin.Y.1.uV <- - Origin.Y.1.uV
Origin.Z.2.uV <- - Origin.Z.2.uV
Origin.X..2.uV <- - Origin.X..2.uV
Origin.Y.2.uV <- - Origin.Y.2.uV
Origin.Z.3.uV <- - Origin.Z.3.uV
Origin.X..3.uV <- - Origin.X..3.uV
Origin.Y.3.uV <- - Origin.Y.3.uV
AvgOrigin.ZuV <- - AvgOrigin.ZuV
AvgOrigin.X.uV <- - AvgOrigin.X.uV
AvgOrigin.YuV <- - AvgOrigin.YuV



minAll<-min(min(AvgOrigin.X.uV),min(AvgOrigin.YuV),min(AvgOrigin.ZuV))
maxAll<-max(max(AvgOrigin.X.uV),max(AvgOrigin.YuV),max(AvgOrigin.ZuV))

Ypos<- ProbeY- sum(ProbeY)/length(ProbeY)
Xpos<- ProbeX- sum(ProbeX)/length(ProbeY)
Zpos<- ProbeZ- sum(ProbeZ)/length(ProbeY)
plot(c(min(Xpos),max(Xpos)), c(minAll,maxAll), 
      ty='n', 
      main=paste(filnam, 'Obs[uVdiff]'))
      mtext("Observed uV difference (xyz) = (rgb)", line=-1.5)
lines(Xpos, AvgOrigin.X.uV, col="red")
lines(Xpos, AvgOrigin.YuV, col="green")
lines(Xpos, AvgOrigin.ZuV, col="blue")
browser()

minAll<-min(Origin.1.mV)
maxAll<-max(Origin.1.mV)
# plot(c(min(Ypos),max(Ypos)), c(minAll,maxAll), 
#       ty='n', 
#       main=paste(filnam, 'Obs[mV]'))
#       mtext("Observed mV at probe origin", line=-1.5)
# lines(Ypos, Origin.1.mV, col="black")

NewV0 <- data.frame(Vconc = Origin.1.mV)

plot(Xpos, predict(lm(Lconc~Vconc), newdata=NewV0), 
      ty='b', 
      main=paste(filnam, 'E[-pH]'))
      mtext("E[-pH] = by callibration", line=-1.5)
      mtext(Conditions, line=-3)

Oconc<- 10^(predict(lm(Lconc~Vconc), newdata=NewV0))
browser()
plot(Xpos, Oconc, 
      ty='b', 
      main=paste(filnam, 'E[H+]'))
      mtext("E[H+] = 10^(E[-pH]) at probe origin", line=-1.5)
      mtext(Conditions, line=-3)

Xconc<- 10^(predict(lm(Lconc~Vconc), newdata=NewV0+AvgOrigin.X.uV/1000))
Yconc<- 10^(predict(lm(Lconc~Vconc), newdata=NewV0+AvgOrigin.YuV/1000))
Zconc<- 10^(predict(lm(Lconc~Vconc), newdata=NewV0+AvgOrigin.ZuV/1000))
dXH<- Xconc-Oconc      
dYH<- Yconc-Oconc      
dZH<- Zconc-Oconc 
minAll<-min(min(dXH),min(dYH),min(dZH))
maxAll<-max(max(dXH),max(dYH),max(dZH))
dHtot<-(dXH^2 + dYH^2 + dZH^2)^0.5
Hflux<- dHtot*10^19   
browser()
  
plot(c(min(Xpos),max(Xpos)), c(minAll,maxAll), 
      ty='n', 
      main=paste(filnam, '[H+]dxyz'))
      mtext("[H+]dxyz", line=-1.5, col='red')
      mtext(Conditions, line=-3)

lines(Xpos, dXH, col="red", ty='b')
lines(Xpos, dYH, col="green", ty='b')
lines(Xpos, dZH, col="blue", ty='b')

# detach(X)
require(scatterplot3d)
 # mul<-2*10^8
 mul<-600/maxAll
 
 Miny<- min(c(Ypos,Ypos+mul*dYH))
 Minz<- min(c(Zpos,Zpos+mul*dZH))
 Minx<- min(c(Xpos,Xpos+mul*dXH))
 Maxy<- max(c(Ypos,Ypos+mul*dYH))
 Maxz<- max(c(Zpos,Zpos+mul*dZH))
 Maxx<- max(c(Xpos,Xpos+mul*dXH))

 nx<-17
 ny<-9
 browser()
 # Left Scat 3D                
s3d<-scatterplot3d(c(Minx,Maxx), c(Miny,Maxy), c(Minz,Maxz), highlight.3d=TRUE,
      col.axis="blue", 
      col.grid="lightblue",
      main="scatterplot3d - L", pch=16,
      cex.symbols=2,
      angle= 96,
      typ='n',
      axis=FALSE,
      mar=c(0.5,0.5,0.5,0.5),
      scale.y=0.25)

for(i in (nx*ny):1) {
s3d$points3d(Xpos[i],
             Ypos[i],
             Zpos[i],
      col="black", type="b", pch=16)     # was b
                 }
for(i in (nx*ny):1) {
s3d$points3d(Xpos[i]+mul*dXH[i],
             Ypos[i]+mul*dYH[i],
             Zpos[i]+mul*dZH[i],
      col="red", type="b", pch=16)
                 }
for(i in (nx*ny):1) {
s3d$points3d(c(Xpos[i],Xpos[i]+mul*dXH[i]),
             c(Ypos[i],Ypos[i]+mul*dYH[i]),
             c(Zpos[i],Zpos[i]+mul*dZH[i]),
      col="blue", type="l", pch=16)
                 }
 # Right Scat 3D 
 browser()
              
s3d<-scatterplot3d(c(Minx,Maxx), c(Miny,Maxy), c(Minz,Maxz), highlight.3d=TRUE,
      col.axis="blue", col.grid="lightblue",
      main="scatterplot3d - R", pch=16,
      cex.symbols=2,
      angle= 90,
      typ='n',
      axis=FALSE,
      mar=c(0.5,0.5,0.5,0.5),
      scale.y=0.25) # mar(b,l,t,r)
      
for(i in (nx*ny):1) {
s3d$points3d(Xpos[i],
             Ypos[i],
             Zpos[i],
      col="black", type="b", pch=16)
                 }
for(i in (nx*ny):1) {
s3d$points3d(Xpos[i]+mul*dXH[i],
             Ypos[i]+mul*dYH[i],
             Zpos[i]+mul*dZH[i],
      col="red", type="b", pch=16)
                 }
for(i in (nx*ny):1) {
s3d$points3d(c(Xpos[i],Xpos[i]+mul*dXH[i]),
             c(Ypos[i],Ypos[i]+mul*dYH[i]),
             c(Zpos[i],Zpos[i]+mul*dZH[i]),
      col="blue", type="l", pch=16)
                 }
text(125,10, "Y")

browser()
opar<- par(mar=c(5, 3, 4, 3) + 0.1)               
Flux<-matrix(Hflux, ny,nx, byrow=TRUE)
for (i in seq(1,ny,2)) {Flux[i,1:nx]<- Flux[i,nx:1] }  
persp(Flux, theta = 285, phi = 30, expand = 1.2, col = "lightblue", zlab="H-flux", xlab="Z-axis", ylab="Y-axis")

browser()

persp(Flux, theta = 288, phi = 30, expand = 1.2, col = "lightblue", zlab="H-flux", xlab="Z-axis", ylab="Y-axis")

browser()
xmed<-ymed<-zmed<- rep(0,nx*ny)
for(i in 1:(nx*ny)) {
	                xmed[i]<-median(c(Origin.X..1.uV[i],Origin.X..2.uV[i],Origin.X..3.uV[i]))
	                ymed[i]<-median(c(Origin.Y.1.uV[i],Origin.Y.2.uV[i],Origin.Y.3.uV[i]))
	                zmed[i]<-median(c(Origin.Z.1.uV[i],Origin.Z.2.uV[i],Origin.Z.3.uV[i]))
	                }


dVtotmed<-(xmed^2 + ymed^2 + zmed^2)^0.5
mV<-matrix(dVtotmed, ny,nx, byrow=TRUE)
for (i in seq(1,ny,2)) {mV[i,1:nx]<- mV[i,nx:1] }  
persp(mV, theta = 285, phi = 30, expand = 1.2, col = "lightblue", zlab="mV", xlab="Z-axis", ylab="Y-axis")

xmed<-matrix(xmed, ny,nx, byrow=TRUE)
for (i in seq(1,ny,2)) {xmed[i,1:nx]<- xmed[i,nx:1] }  
persp(xmed, theta = 285, phi = 30, expand = 1.2, col = "lightblue", zlab="Xmed", xlab="Z-axis", ylab="Y-axis")

ymed<-matrix(ymed, ny,nx, byrow=TRUE)
for (i in seq(1,ny,2)) {ymed[i,1:nx]<- ymed[i,nx:1] }  
persp(ymed, theta = 285, phi = 30, expand = 1.2, col = "lightblue", zlab="Ymed", xlab="Z-axis", ylab="Y-axis")

zmed<-matrix(zmed, ny,nx, byrow=TRUE)
for (i in seq(1,ny,2)) {zmed[i,1:nx]<- zmed[i,nx:1] }  
persp(zmed, theta = 285, phi = 30, expand = 1.2, col = "lightblue", zlab="Zmed", xlab="Z-axis", ylab="Y-axis")

browser()
layout(matrix(1:4, 2, 2, byrow = TRUE))    # was 2 by 4
contour(zmed, main="Z median")
contour(xmed, col='red', main="X median")
contour(ymed, col='blue', main="Y median")
contour(zmed, main="Z, X and Y median")
contour(xmed, add=TRUE, col='red')
contour(ymed, add=TRUE, col='blue')

layout(matrix(1:4, 2, 2, byrow = TRUE))    # was 2 by 4
MinZ<- min(c(Origin.Z.1.uV, Origin.Z.2.uV, Origin.Z.3.uV)) 
MinX<- min(c(Origin.X..1.uV, Origin.X..2.uV, Origin.X..3.uV)) 
MinY<- min(c(Origin.Y.1.uV, Origin.Y.2.uV, Origin.Y.3.uV)) 
MaxZ<- max(c(Origin.Z.1.uV, Origin.Z.2.uV, Origin.Z.3.uV)) 
MaxX<- max(c(Origin.X..1.uV, Origin.X..2.uV, Origin.X..3.uV)) 
MaxY<- max(c(Origin.Y.1.uV, Origin.Y.2.uV, Origin.Y.3.uV)) 
MinMed<- min(c(xmed,ymed,zmed)) 
MaxMed<- max(c(xmed,ymed,zmed)) 

indy<- 1:(ll<-length(Origin.Z.1.uV) )
 
# AvgOrigin.ZuV AvgOrigin.X.uV  AvgOrigin.YuV 

plot(c(1,ll),c(MinX,MaxX), typ='n', main=paste(filnam,"X: 1st=red, 2nd=blue, 3rd=green, Avg=black"))
points(indy,Origin.X..1.uV, typ='b', col='red')
points(indy,Origin.X..2.uV, typ='b', col='green')
points(indy,Origin.X..3.uV, typ='b', col='blue')
points(indy,AvgOrigin.X.uV, typ='b', col='black', lwd=2)

plot(c(1,ll),c(MinY,MaxY), typ='n', main=paste(filnam,"Y: 1st=red, 2nd=blue, 3rd=green, Avg=black"))
points(indy,Origin.Y.1.uV, typ='b', col='red')
points(indy,Origin.Y.2.uV, typ='b', col='green')
points(indy,Origin.Y.3.uV, typ='b', col='blue')
points(indy,AvgOrigin.YuV, typ='b', col='black', lwd=2)

plot(c(1,ll),c(MinZ,MaxZ), typ='n', main=paste(filnam,"Z: 1st=red, 2nd=blue, 3rd=green, Avg=black"))
points(indy,Origin.Z.1.uV, typ='b', col='red')
points(indy,Origin.Z.2.uV, typ='b', col='green')
points(indy,Origin.Z.3.uV, typ='b', col='blue')
points(indy,AvgOrigin.ZuV, typ='b', col='black', lwd=2)

plot(c(1,ll),c(MinMed,MaxMed), typ='n', main="Medians: x-red, y-green, z-blue")
points(indy,xmed, typ='b', col='red')
points(indy,ymed, typ='b', col='green')
points(indy,zmed, typ='b', col='blue')



detach(XX)