R/subsetNetwork.R

Defines functions subsetNetwork

Documented in subsetNetwork

#' Subset a polished network
#' @description Subset the output of polishNetwork by a list of nodes name
#' @param graph A graphNEL object. The output of polishNetwork.
#' @param genes A list of nodes names
#' @return An object of graph.
#' @import graph
#' @export
#' @examples 
#' library(graph)
#' set.seed(123)
#' g1 <- randomEGraph(LETTERS[seq.int(15)], edges=100)
#' g1 <- subsetNetwork(g1, LETTERS[seq.int(5)])
#' plot(g1)
subsetNetwork <- function(graph, genes){
  stopifnot(
    "graph must be an object of graph"=
      inherits(graph,
               c("graphNEL", "distGraph", "clusterGraph",
                 "graphBAM", "MultiGraph")))
  stopifnot("genes must be a character vector"=is(genes, "character"))
  genes <- genes[genes %in% nodes(graph)]
  graph <- subGraph(genes, graph)
  ## remove the single nodes
  edges <- edgeWeights(graph)
  el <- lengths(edges)>0
  ep <- unlist(lapply(edges, function(.ele) names(.ele)))
  genes <- unique(c(names(edges)[el], ep))
  graph <- subGraph(genes, graph)
}
jianhong/GeneNetworkBuilder documentation built on Oct. 26, 2023, 3:45 a.m.