## Load the following r packages

library(sqldf)
library(ggplot2)
library(gridExtra)
library(plyr)

###############################################
# Figure 1 - Probability distribution


blocklength = 6
balloc = 1
b=blocklength 
COMBO = df1 = data.frame(trt1=c("A", "B"))
for (i in (2:blocklength )){
  COMBO =  sqldf(paste("select COMBO.*, df1.trt1 as trt", i, " from COMBO,  df1" , sep=""))
}
COMBO$a=apply(X=COMBO,1,FUN=function(x) length(which(x=='A')))
COMBO$b=apply(X=COMBO,1,FUN=function(x) length(which(x=='B')))
COMBO$n = COMBO$a + COMBO$b
if (missing(balloc)){
  balloc = 1
} 
  COMBO = COMBO[which(COMBO$a==b/(1+balloc)),]

df = data.frame(id = (1:(blocklength)), mdiff=NA, meddiff=NA, mdiff2=NA, meddiff2=NA)


# create eps figure
postscript("dist2_b6_11.eps", width=8.0, height=5.0, paper="special", horizontal = FALSE)


## 2x3 figure
if (b==6){
  layout(matrix(c(1, 3, 3, 3, 6, 6, 6, 8, 8, 8,
                  1, 3, 3, 3, 6, 6, 6, 8, 8, 8,
                  1, 3, 3, 3, 6, 6, 6, 8, 8, 8,
                  1, 4, 4, 4, 7, 7, 7, 9, 9, 9,
                  1, 4, 4, 4, 7, 7, 7, 9, 9, 9,
                  1, 4, 4, 4, 7, 7, 7, 9, 9, 9,
                  2, 5, 5, 5, 5, 5, 5, 5, 5, 5), 7, 10, byrow = TRUE), respect = TRUE)
}



#  Caption left
op2=par(mar = c(0,0,0,0)+0.1, cex=1)
plot(x=0.5, y=0.5, ylim=c(0, 1), xlim=c(0, 1), axes=FALSE, col="white")
text(0.4,0.5,"Probability", srt=90)

# blank field top-left
plot(x=0.5, y=0.5, ylim=c(0, 1), xlim=c(0, 1), axes=FALSE, col="white")


for (i in (2:(blocklength+1))){

  if (i == 4){
    # caption bottom
    op2=par(mar = c(0,0,0,0)+0.1)
    plot(x=0.5, y=0.5, ylim=c(0, 1), xlim=c(0, 1), axes=FALSE, col="white")
    text(0.5,0.5, expression(paste("Unbalancedness ", Delta^2, "|", "r")))
  }
  
  if (i==(blocklength+1)){
    COMBOs = COMBO
  } else {
    COMBOs = COMBO[-(i:(blocklength+1))]
  }
  
  # calculate imbalance Delta_j|rj
  COMBOs$nA=apply(X=COMBOs ,1,FUN=function(x) length(which(x=='A')))
  COMBOs$nB=apply(X=COMBOs ,1,FUN=function(x) length(which(x=='B')))
  COMBOs$sum = COMBOs$nA + COMBOs$nB
  COMBOs$diff2k = round((COMBOs$nA - COMBOs$nB/balloc)^2, digits=2)

  # barplot
  op2=par(mar = c(1.5, 1.5, 1.5, 1.5)+0.1, cex=1)
  diffvec <- factor(as.character(COMBOs$diff2k), levels=c("0","1","4","9"))
  barplot(table(diffvec)/ (sum(table(COMBOs$diff2k))), ylim=c(0, 1.05), axes=FALSE,
          ylab=c("Relative Frequency"), xlab=expression(paste(Delta^2,"|","r")), col="darkgreen")
  axis(side=2, labels=c("-0.25", "0", "0.25", "0.50", "0.75", "1.00", "1.25"), at=c(-0.25, 0, 0.25, 0.5, 0.75, 1, 1.25),lwd=2, las=1)
  legend("topright", legend=paste("r=",(i-1), sep=""), bty = "n")

}


dev.off()



