R/DiNetplot.R

Defines functions DiNetplot

Documented in DiNetplot

#' DiNetplot
#'
#' Displays an interactive network plot.
#' @param cgNetwork_list list of igraph objects, generated by cgNetwork().
#' @examples
#' example.file <- system.file("extdata", "example.RData", package="cgNetwork")
#' load(example.file)
#' DiNetplot(cgNetwork_list)
#' @export
#' @import dplyr shiny visNetwork
#' @importFrom magrittr "%>%"
#' @importFrom igraph V get.data.frame cluster_louvain membership

DiNetplot <- function(cgNetwork_list){
  ui <- shiny::fluidPage(
    shiny::fluidRow(
      shiny::column(6,
                    visNetwork::visNetworkOutput('vis1')),
      shiny::column(6,
                    visNetwork::visNetworkOutput('vis2'))
    )
  )

  server <- function(input, output) {

    g1 <- cgNetwork_list[[1]]
    nodes1 <- data.frame(V(g1)$name, label=NA)
    colnames(nodes1) <- c("id", "label")
    nodes1$label <- nodes1$id

    g2 <- cgNetwork_list[[2]]
    nodes2 <- data.frame(V(g2)$name, label=NA)
    colnames(nodes2) <- c("id", "label")
    nodes2$label <- nodes2$id

    #Edges
    edges1 <- get.data.frame(g1)
    colnames(edges1) <- c("from", "to", "width")

    edges2 <- get.data.frame(g2)
    colnames(edges2) <- c("from", "to", "width")

    #Clustering
    cluster1 <- cluster_louvain(g1)
    cluster_df1 <- data.frame(as.list(membership(cluster1)))
    cluster_df1 <- as.data.frame(t(cluster_df1))
    cluster_df1$label <- rownames(cluster_df1)

    cluster2 <- cluster_louvain(g2)
    cluster_df2 <- data.frame(as.list(membership(cluster2)))
    cluster_df2 <- as.data.frame(t(cluster_df2))
    cluster_df2$label <- rownames(cluster_df2)

    #Create group column
    nodes1 <- left_join(nodes1, cluster_df1, by = "label")
    colnames(nodes1)[3] <- "group"

    nodes2 <- left_join(nodes2, cluster_df2, by = "label")
    colnames(nodes2)[3] <- "group"

    output$vis1 <- visNetwork::renderVisNetwork(
      {
        visNetwork::visNetwork(nodes1, edges1, main = paste("Network in wild type"), width = "100%") %>%
          visNetwork::visIgraphLayout() %>%
          visNetwork::visNodes(
            shape = "dot",
            color = list(
              background = "#0085AF",
              border = "#013848",
              highlight = "#FF8000"
            ),
            shadow = list(enabled = TRUE, size = 10)
          ) %>%
          visNetwork::visEdges(
            shadow = FALSE,
            color = list(color = "#0085AF", highlight = "#C62F4B")
          ) %>%
          visNetwork::visOptions(highlightNearest = list(enabled = T, degree = 1, hover = T),
                                 selectedBy = "group") %>%
          visNetwork::visLayout(randomSeed = 11) %>%
          return
      })
    output$vis2 <- visNetwork::renderVisNetwork(
      {
        visNetwork::visNetwork(nodes2, edges2, main = paste("Network in mutation"), width = "100%") %>%
          visNetwork::visIgraphLayout() %>%
          visNetwork::visNodes(
            shape = "dot",
            color = list(
              background = "#0085AF",
              border = "#013848",
              highlight = "#FF8000"
            ),
            shadow = list(enabled = TRUE, size = 10)
          ) %>%
          visNetwork::visEdges(
            shadow = FALSE,
            color = list(color = "#0085AF", highlight = "#C62F4B")
          ) %>%
          visNetwork::visOptions(highlightNearest = list(enabled = T, degree = 1, hover = T),
                                 selectedBy = "group") %>%
          visNetwork::visLayout(randomSeed = 11) %>%
          return
      })
  }

  return(shiny::shinyApp(ui = ui, server = server))

}
DiNetplot(cgNetwork_list)
ilwookkim/TCGANetwork documentation built on March 31, 2021, 4:03 p.m.