customCnetKegg <- function(kgg, category=NULL, nPath=NULL, byDE=FALSE){
if(! "ggraph" %in% .packages()) require("ggraph")
if(! "igraph" %in% .packages()) require("igraph")
if(! "dplyr" %in% .packages()) require("dplyr")
if(! "tidyr" %in% .packages()) require("tidyr")
color_palette <- function(colors) colorRampPalette(colors)(n = 299)
if(byDE){
kgg <- kgg %>% arrange(-DE)
}
if(!is.null(category)){
if(is.numeric(category)){
tmp <- kgg[category,]
} else{
tmp <- kgg[kgg$Pathway %in% category,]
}
} else{
tmp <- kgg
}
if(!is.null(nPath)){
if(is.numeric(nPath)){
tmp <- tmp[1:nPath, ]
} else{ stop("nPath must be numeric or NULL")}
}
pval <- tmp[,c(1,4)]
tmp <- tmp[,c(1,6)]
tmp2 <- tmp %>% separate_rows( genes, convert=TRUE)
g <- igraph::graph.data.frame(tmp2, directed=FALSE)
size <- tmp2 %>% dplyr::select(Pathway) %>% group_by(Pathway) %>% summarise(n=n())
size <- left_join(tmp, size, by=c("Pathway"))
pval <- left_join(tmp, pval, by=c("Pathway"))
size <- size$n
pval <- pval$P.DE
V(g)$size <- min(size)/2
n <- dim(tmp)[1]
V(g)$size[1:n] <- size
V(g)$pval <- NA
V(g)$pval[1:n] <- pval
edge_layer <- geom_edge_link(alpha=.8, colour='darkgrey')
fc <- V(g)$pval
V(g)$color <- fc
palette <- color_palette(c("red", "blue"))
p <- ggraph(g, layout="stress", circular=FALSE) +
edge_layer +
geom_node_point( aes_(color=~pval, size=~size) ) +
scale_size(range=c(3, 10), breaks=unique(round(seq(min(size), max(size), length.out=4)))) +
theme_void()
p <- p + geom_node_text(aes_(label=~name), data = p$data[1:n,]) +
scale_color_gradientn(name = "pval", colors=palette, na.value = "#E5C494")
return(p)
}
customCnetGo <- function(gos, category=NULL, nTerm=NULL, byDE=FALSE, ont="BP"){
if(! "ggraph" %in% .packages()) require("ggraph")
if(! "igraph" %in% .packages()) require("igraph")
if(! "dplyr" %in% .packages()) require("dplyr")
if(! "tidyr" %in% .packages()) require("tidyr")
gos <- gos[gos$Ont == ont, ]
color_palette <- function(colors) colorRampPalette(colors)(n = 299)
if(byDE){
gos <- gos %>% arrange(-DE)
}
if(!is.null(category)){
if(is.numeric(category)){
tmp <- gos[category,]
} else{
tmp <- gos[gos$Pathway %in% category,]
}
} else{
tmp <- gos
}
if(!is.null(nTerm)){
if(is.numeric(nTerm)){
tmp <- tmp[1:nTerm, ]
} else{ stop("nTerm must be numeric or NULL")}
}
pval <- tmp[,c(1,5)]
tmp <- tmp[,c(1,7)]
tmp2 <- tmp %>% separate_rows( genes, convert=TRUE)
g <- igraph::graph.data.frame(tmp2, directed=FALSE)
size <- tmp2 %>% dplyr::select(Term) %>% group_by(Term) %>% summarise(n=n())
size <- left_join(tmp, size, by=c("Term"))
pval <- left_join(tmp, pval, by=c("Term"))
size <- size$n
pval <- pval$P.DE
V(g)$size <- min(size)/2
n <- dim(tmp)[1]
V(g)$size[1:n] <- size
V(g)$pval <- NA
V(g)$pval[1:n] <- pval
edge_layer <- geom_edge_link(alpha=.8, colour='darkgrey')
fc <- V(g)$pval
V(g)$color <- fc
palette <- color_palette(c("red", "blue"))
p <- ggraph(g, layout="stress", circular=FALSE) +
edge_layer +
geom_node_point( aes_(color=~pval, size=~size) ) +
scale_size(range=c(3, 10), breaks=unique(round(seq(min(size), max(size), length.out=4)))) +
theme_void()
p <- p + geom_node_text(aes_(label=~name), data = p$data[1:n,]) +
scale_color_gradientn(name = "pval", colors=palette, na.value = "#E5C494")
return(p)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.