## options(width = 75)
## options(useFancyQuotes=FALSE)
## 

## # generate the simulated network
## require(SANTA, quietly=TRUE)
## require(igraph, quietly=TRUE)
## set.seed(1) # for reproducibility
## g <- barabasi.game(n=500, power=1, m=1, directed=FALSE)

## # measure the distance between pairs of vertices in g
## dist.method <- "shortest.paths"
## D <- DistGraph(g, dist.method=dist.method, verbose=FALSE)

## # place the distances into discreet bins
## B <- BinGraph(D, verbose=FALSE)

## cluster.size <- 5
## s.to.use <- c(10, 20, 50, 100, 500)
## n.trials <- 10
## pvalues <- array(0, dim=c(n.trials, length(s.to.use)),
##     dimnames=list(NULL, as.character(s.to.use)))
## 
## # run the trials for each value of s
## for (s in s.to.use) {    	
##     for (i in 1:n.trials) {
##         # generate the hit set
##         seed.vertex <- sample(vcount(g), 1) # identify seed
##         sample.set <- order(D[seed.vertex, ])[1:s]
##         hit.set <- sample(sample.set, cluster.size)
## 
##         # measure the stength of association
##         g <- set.vertex.attribute(g, name="hits",
##             value=as.numeric(1:vcount(g) %in% hit.set))
##         pvalues[i, as.character(s)] <- Knet(g, nperm=100,
##             dist.method=dist.method, vertex.attr="hits",
##             B=B, verbose=FALSE)$pval
##     }
## }

## boxplot(-log10(pvalues), xlab="cutoff", ylab="-log10(p-value)")

## # cleanup
## rm(B, D, g)

## # create the network
## n.nodes <- 12
## edges <- c(1,2, 1,3, 1,4, 2,3, 2,4, 3,4, 1,5, 5,6,
##            2,7, 7,8, 4,9, 9,10, 3,11, 11,12)
## weights1 <- weights2 <- rep(0, n.nodes)
## weights1[c(1,2)] <- 1
## weights2[c(5,6)] <- 1
## 
## g <- graph.empty(n.nodes, directed=FALSE)
## g <- add.edges(g, edges)
## g <- set.vertex.attribute(g, "weights1", value=weights1)
## g <- set.vertex.attribute(g, "weights2", value=weights2)

## par(mfrow=c(1,2))
## 
## colors <- rep("grey", n.nodes)
## colors[which(weights1 == 1)] <- "red"
## g <- set.vertex.attribute(g, "color", value=colors)
## plot(g)
## 
## colors <- rep("grey", n.nodes)
## colors[which(weights2 == 1)] <- "red"
## g <- set.vertex.attribute(g, "color", value=colors)
## plot(g)
## 
## par(mfrow=c(1,1))
## g <- remove.vertex.attribute(g, "color")

## # set 1
## Knet(g, nperm=100, vertex.attr="weights1", verbose=FALSE)$pval
## Compactness(g, nperm=100, vertex.attr="weights1", verbose=FALSE)$pval
## 
## # set 2
## Knet(g, nperm=100, vertex.attr="weights2", verbose=FALSE)$pval
## Compactness(g, nperm=100, vertex.attr="weights2", verbose=FALSE)$pval

## # load igraph objects
## data(g.costanzo.raw)
## data(g.costanzo.cor)
## networks <- list(raw=g.costanzo.raw, cor=g.costanzo.cor)
## network.names <- names(networks)
## network.genes <- V(networks$raw)$name
## # genes identical across networks

## # obtain the GO term associations from org.Sc.sgd.db package
## library(org.Sc.sgd.db, quietly=TRUE)
## xx <- as.list(org.Sc.sgdGO2ALLORFS)
## go.terms <- c("GO:0000082", "GO:0003682", "GO:0007265",
##               "GO:0040008", "GO:0090329")
## # apply the GO terms to the networks
## for (name in network.names) {
##     for (go.term in go.terms) {
##         networks[[name]] <- set.vertex.attribute(
##             networks[[name]], name=go.term,
##             value=as.numeric(network.genes %in% xx[[go.term]]))
##     }
## }

## results <- list()
## for (name in network.names) {
##     results[[name]] <- Knet(networks[[name]], nperm=10,
##         vertex.attr=go.terms, edge.attr="distance", verbose=FALSE)
##     results[[name]] <- sapply(results[[name]],
##         function(res) res$pval)
## }

## # cleanup
## rm(g.costanzo.cor, g.costanzo.raw, network.genes, networks, xx)

## # load igraph objects
## data(g.bandyopadhyay.treated)
## data(g.bandyopadhyay.untreated)
## networks <- list(
##     treated=g.bandyopadhyay.treated,
##     untreated=g.bandyopadhyay.untreated
## )
## network.names <- names(networks)

## # obtain GO term associations
## library(org.Sc.sgd.db, quietly=TRUE)
## xx <- as.list(org.Sc.sgdGO2ALLORFS)
## # change to use alternative GO terms
## associated.genes <- xx[["GO:0006974"]]
## associations <- sapply(networks, function(g)
##     as.numeric(V(g)$name %in% associated.genes),
##     simplify=FALSE)
## networks <- sapply(network.names, function(name)
##     set.vertex.attribute(networks[[name]], "rdds",
##     value=associations[[name]]), simplify=FALSE)

## results <- sapply(networks, function(g) Knet(g, nperm=10,
##     dist.method="shortest.paths", vertex.attr="rdds",
##     edge.attr="distance"), simplify=FALSE)
## p.values <- sapply(results, function(res) res$pval)
## p.values

## # cleanup
## rm(xx, networks, g.bandyopadhyay.treated, g.bandyopadhyay.untreated, associated.genes)

## # laod igraph object
## data(g.srivas.high)
## data(g.srivas.untreated)
## networks <- list(
##     high=g.srivas.high,
##     untreated=g.srivas.untreated
## )
## network.names <- names(networks)

## # obtain GO term associations
## library(org.Sc.sgd.db, quietly=TRUE)
## xx <- as.list(org.Sc.sgdGO2ALLORFS)
## associated.genes <- xx[["GO:0000725"]]
## associations <- sapply(networks, function(g)
##     as.numeric(V(g)$name %in% associated.genes),
##     simplify=FALSE)
## networks <- sapply(network.names, function(name)
##     set.vertex.attribute(networks[[name]], "dsbr",
##     value=associations[[name]]), simplify=FALSE)

## p.values <- sapply(networks, function(g)
##        Knet(g, nperm=10, dist.method="shortest.paths",
##        vertex.attr="dsbr", edge.attr="distance")$pval)
## p.values

## # cleanup
## rm(xx, networks, g.srivas.high, g.srivas.untreated)

## # import and convert RNAi data
## data(rnai.cheung)
## rnai.cheung <- -log10(rnai.cheung)
## rnai.cheung[!is.finite(rnai.cheung)] <- max(rnai.cheung[is.finite(rnai.cheung)])
## rnai.cheung[rnai.cheung < 0] <- 0

## # import and create IntAct network
## data(edgelist.intact)
## g.intact <- graph.edgelist(as.matrix(edgelist.intact),
##     directed=FALSE)
## 
## # import data and create HumanNet network
## data(edgelist.humannet)
## g.humannet <- graph.edgelist(as.matrix(edgelist.humannet)[,1:2],
##     directed=FALSE)
## g.humannet <- set.edge.attribute(g.humannet, "distance",
##     value=edgelist.humannet$distance)
## networks <- list(intact=g.intact, humannet=g.humannet)

## network.names <- names(networks)
## network.genes <- sapply(networks, get.vertex.attribute,
##     name="name", simplify=FALSE)
## rnai.cheung.genes <- rownames(rnai.cheung)
## cancers <- colnames(rnai.cheung)
## 
## for (cancer in cancers) {
##     for (name in network.names) {
##         vertex.weights <-rep(NA, vcount(networks[[name]]))
##         names(vertex.weights) <- network.genes[[name]]
##         common.genes <- rnai.cheung.genes[rnai.cheung.genes
##             %in% network.genes[[name]]]
##         vertex.weights[common.genes] <- rnai.cheung[common.genes, cancer]
##         networks[[name]] <- set.vertex.attribute(networks[[name]],
##             cancer, value=vertex.weights)
##     }
## }

## knet.res <- sapply(networks, Knet, nperm=10,
##    dist.method="shortest.paths", vertex.attr=cancers,
##    edge.attr="distance", simplify=FALSE)
## p.values <- sapply(knet.res, function(i) sapply(i,
##    function(j) j$pval))
## p.values

## # cleanup
## rm(rnai.cheung, rnai.cheung.genes, networks, network.genes, edgelist.humannet, edgelist.intact, common.genes, g.humannet, g.intact)

## sessionInfo()
