###################################################
### chunk number 1: setup1
###################################################
#line 84 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
library("cellHTS2")


###################################################
### chunk number 2: setup2
###################################################
#line 88 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
## for debugging:
options(error=recover)


###################################################
### chunk number 3: dataPath
###################################################
#line 124 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
experimentName <- "DualChannelScreen"
dataPath <- system.file(experimentName, package="cellHTS2") 


###################################################
### chunk number 4: readPlateList
###################################################
#line 133 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
x <- readPlateList("Platelist.txt", name=experimentName, path=dataPath)


###################################################
### chunk number 5: showX
###################################################
#line 137 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
x


###################################################
### chunk number 6: plateFileTable
###################################################
#line 145 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
cellHTS2:::tableOutput(file.path(dataPath, "Platelist.txt"), "plate list", 
                       preName="twoChannels")


###################################################
### chunk number 7: configure the data
###################################################
#line 164 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
x <- configure(x, "Description.txt", "Plateconf.txt", "Screenlog.txt",
               path=dataPath) 


###################################################
### chunk number 8: plateConfscreenLogTable
###################################################
#line 172 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
cellHTS2:::tableOutputWithHeaderRows(file.path(dataPath, "Plateconf.txt"), 
                                     "plate configuration", selRows=NULL, 
                                     preName="twoChannels")

cellHTS2:::tableOutput(file.path(dataPath, "Screenlog.txt"), 
                       "screen log", selRows=1:2, preName="twoChannels")


###################################################
### chunk number 9: 
###################################################
#line 199 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
table(wellAnno(x))


###################################################
### chunk number 10: define controls
###################################################
#line 217 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
## Define the controls for the different channels:
negControls <- vector("character", length=dim(Data(x))[3])

# channel 1 - gene A
negControls[1] <- "(?i)^geneA$" 
## case-insensitive and match the empty string at the beginning and 
## end of a line (to distinguish between "geneA" and "geneAB", for example.
## Although it is not a problem for the present well annotation)
 
# channel 2 - gene A and geneB
negControls[2] <- "(?i)^geneA$|^geneB$" 

posControls <- vector("character", length=dim(Data(x))[3])
# channel 1 - no controls
# channel 2 - geneC and geneD
posControls[2] <- "(?i)^geneC$|^geneD$"


###################################################
### chunk number 11: writeReport1Show eval=FALSE
###################################################
## #line 250 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
## out <- writeReport(raw=x, outdir="raw",
##                    posControls=posControls, negControls=negControls)


###################################################
### chunk number 12: writeReport1Do
###################################################
#line 254 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
out <- writeReport(raw=x, force=TRUE, outdir="raw", 
   posControls=posControls, negControls=negControls)


###################################################
### chunk number 13: browseReport1 eval=FALSE
###################################################
## #line 262 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
## browseURL(out)


###################################################
### chunk number 14: plateMedianChannels
###################################################
#line 342 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
xn <- normalizePlates(x, scale="multiplicative", method="median", 
                      varianceAdjust="none")


###################################################
### chunk number 15: set cut-off for R1
###################################################
#line 348 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
ctoff <- quantile(Data(xn)[,,1], probs=0.05, na.rm=TRUE)


###################################################
### chunk number 16: FvsRcorrected
###################################################
#line 354 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
R <- Data(xn)[,,1]
F <- Data(xn)[,,2]

# Use the controls of R2 channel:
posC <- which(regexpr(posControls[2], as.character(wellAnno(x)), perl=TRUE)>0)
negC <- which(regexpr(negControls[2], as.character(wellAnno(x)), perl=TRUE)>0)

ylim <- range(F, na.rm=TRUE)
xlim <- range(R, na.rm=TRUE)

par(mfrow=c(1,ncol(F)), mai=c(1.15,1.15, 0.3,0.3))
for (r in 1:ncol(F)) {
#ind <- apply(cbind(R[,r],F[,r]), 1, function(z) any(is.na(z)))
#plot(R[!ind,r],F[!ind,r], col= densCols(cbind(R[!ind,r], F[!ind,r])), pch=16,cex=0.7,
#     xlab="R1 (log scale)", ylab="R2 (log scale)", log="xy", 
#    ylim=ylim, xlim=xlim)

plot(R[,r],F[,r], col= densCols(cbind(R[,r], F[,r])), pch=16,cex=0.7,
     xlab="R1 (log scale)", ylab="R2 (log scale)", log="xy", 
     ylim=ylim, xlim=xlim)

abline(v=ctoff, col="grey", lty=2, lwd=2)
points(R[posC,r],F[posC,r], col="red", pch=20, cex=0.9)
points(R[negC,r],F[negC,r], col="green", pch=20, cex=0.9)
ind <- which(Data(xn)[,r,1] <= ctoff)
points(R[ind,r],F[ind,r], col="grey", pch=20, cex=0.9)
#legend("topleft", col=c("grey", "red", "green"), legend=c("masked", 
#"positive controls","negative controls"),  bty="n", pch=20, cex=0.9)
 }


###################################################
### chunk number 17: summarizeChannels
###################################################
#line 404 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
xn1 <- summarizeChannels(xn, fun = function(r1, r2, 
                             thresh=quantile(r1, probs=0.05, na.rm=TRUE)) 
                         ifelse(r1>thresh, r2/r1, as.numeric(NA)))


###################################################
### chunk number 18: show summarized object
###################################################
#line 415 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
dim(Data(xn1))


###################################################
### chunk number 19: redo plate correction
###################################################
#line 425 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
xn1 <- normalizePlates(xn1, scale="multiplicative", log=TRUE, method="median", 
                       varianceAdjust="none") 


###################################################
### chunk number 20: score and summarize replicates
###################################################
#line 436 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
xsc <- scoreReplicates(xn1, sign="-", method="zscore") 
xsc <- summarizeReplicates(xsc, summary="mean") 


###################################################
### chunk number 21: scores
###################################################
#line 447 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
par(mfrow=c(1,2))
ylim <- quantile(Data(xsc), c(0.001, 0.999), na.rm=TRUE)
boxplot(Data(xsc) ~ wellAnno(xsc), col="lightblue", outline=FALSE, ylim=ylim)
imageScreen(xsc, zrange=c(-2,4))


###################################################
### chunk number 22: RedefineControls
###################################################
#line 466 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
## Define the controls for the normalized intensities (only one channel):
# For the single channel, the negative controls are geneA and geneB 
negControls <- "(?i)^geneA$|^geneB$" 
posControls <- "(?i)^geneC$|^geneD$"


###################################################
### chunk number 23: report2Show eval=FALSE
###################################################
## #line 472 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
## setSettings(list(platelist=list(intensities=list(include=TRUE)),
##                  screenSummary=list(scores=list(range=c(-4,4)))))
## out <- writeReport(raw=x, normalized=xn1, scored=xsc, 
##                    outdir="logRatio", 
##                    map=TRUE, 
##                    posControls=posControls, negControls=negControls)


###################################################
### chunk number 24: report2Do
###################################################
#line 480 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
setSettings(list(platelist=list(intensities=list(include=TRUE)),
                 screenSummary=list(scores=list(range=c(-4,4)))))
out <- writeReport(raw=x, normalized=xn1, scored=xsc, 
                   force=TRUE, outdir="logRatio", 
                   map=TRUE,
                   posControls=posControls, negControls=negControls)


###################################################
### chunk number 25: browse2 eval=FALSE
###################################################
## #line 492 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
## browseURL(out)


###################################################
### chunk number 26: savex
###################################################
#line 502 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
save(xsc, file=paste(experimentName, ".rda", sep=""))


###################################################
### chunk number 27: sessionInfo
###################################################
#line 514 "/private/tmp/RtmpnnNPb3/R.INSTALL4802d3ce/cellHTS2/inst/doc/twoChannels.Rnw"
toLatex(sessionInfo())


