## ----setup1, include=FALSE----------------------------------------------------
require(knitr)

## ----setup2, include=FALSE----------------------------------------------------
old_ops<-options(width=80)  # make the printing fit on the page
set.seed(1121)     # make the results repeatable
stdt<-date()

## ----fastJT, eval=FALSE-------------------------------------------------------
#  res <- fastJT(Y, X, outTopN=15, numThreads=1, standardized=TRUE)

## ----fastJTselect, eval=FALSE-------------------------------------------------
#  res <- fastJT.select(Y, X, cvMesh=NULL, kFold=10L,
#                       selCrit=NULL, outTopN=15L, numThreads=1L)

## ----inputPara----------------------------------------------------------------
num_sample	<- 100
num_marker 	<- 4
num_feature 	<- 50

## ----markers_levels_geno_types------------------------------------------------
set.seed(12345);
Data    <- matrix(rnorm(num_sample*num_marker), 
                  num_sample, num_marker)
Feature <- matrix(rbinom(num_sample*num_feature,2,0.5),
                  num_sample, num_feature)
colnames(Data)    <- paste0("Mrk:",1:num_marker)
colnames(Feature) <- paste0("Ftr:",1:num_feature)

## ----loadpkg------------------------------------------------------------------
library(fastJT)

## ----exp3, results='hide'-----------------------------------------------------
JTStat <- fastJT(Y=Data, X=Feature, outTopN=10)
summary(JTStat, Y2Print=1:4, X2Print=1:5)

## ----exp4, echo=FALSE, size='tiny'--------------------------------------------
summary(JTStat, Y2Print=1:4, X2Print=1:5)

## ----exp5, eval=FALSE---------------------------------------------------------
#  summary(JTStat, Y2Print=1:4, X2Print=1:5, printP=FALSE)

## ----exp6, echo=FALSE, size='tiny'--------------------------------------------
summary(JTStat, Y2Print=1:4, X2Print=1:5, printP=FALSE)

## ----exp7, results='hide'-----------------------------------------------------
JTAll <- fastJT(Y=Data, X=Feature, outTopN=NA)
summary(JTAll, Y2Print=1:4, outTopN=3)

## ----exp8, echo=FALSE, size='tiny'--------------------------------------------
summary(JTAll, Y2Print=1:4, outTopN=3)

## ----select1, eval=FALSE------------------------------------------------------
#  fastJT.select(Y=Data, X=Feature, cvMesh=NULL, kFold=5,
#                selCrit=NULL, outTopN=5, numThreads=1)

## ----select1out, echo=FALSE, size='tiny'--------------------------------------
fastJT.select(Y=Data, X=Feature, cvMesh=NULL, kFold=5,
              selCrit=NULL, outTopN=5, numThreads=1)

## ----cvMesh, results='hide'---------------------------------------------------
Mesh <- function(rownamesData, kFold){
  numSamples <- length(rownamesData)
  res <- NULL
  subSampleSize <- floor(numSamples/kFold)
  for (i in 1:kFold){
    start <- (i-1)*subSampleSize + 1
    if(i < kFold)
      end <- i*subSampleSize
    else
      end <- numSamples
    if(i == 1)
      res <- list(c(start:end))
    else
      res[[i]] <- c(start:end)
  }
  res
}

## ----selCrit, results='hide'--------------------------------------------------
whichpart <- function(x, n=30) {
  nx <- length(x)
  p <- nx-n
  xp <- sort(x, partial=p)[p]
  which(x > xp)
}

selectCrit <- function(J, P){
  pcut <- 0.95
  hit <- NULL
  for(i in 1:ncol(P)){
    if(i == 1)
      hit <- list(rownames(P)[whichpart(P[,i], 4)])
    else
      hit[[i]] = rownames(P)[whichpart(P[,i], 4)]
  }
  res <- do.call(cbind, hit)
  colnames(res) <- colnames(P)
  res
}

## ----select2, eval=FALSE------------------------------------------------------
#  fastJT.select(Data, Feature, cvMesh=Mesh, kFold=5,
#                selCrit=selectCrit, outTopN=5, numThreads=1)

## ----select2out, echo=FALSE, size='tiny'--------------------------------------
fastJT.select(Data, Feature, cvMesh=Mesh, kFold=5,
              selCrit=selectCrit, outTopN=5, numThreads=1)

## ----sessinfo, echo=FALSE, include=TRUE, results='asis'-----------------------
toLatex(sessionInfo(), locale=FALSE)

## ----times, echo=FALSE, include=TRUE------------------------------------------
print(paste("Start Time",stdt))
print(paste("End Time  ",date()))
## reset options
options(old_ops)

