Diff of /R/NetAnalysis.R [000000] .. [28e211]

Switch to side-by-side view

--- a
+++ b/R/NetAnalysis.R
@@ -0,0 +1,52 @@
+#' @title Networking analysis.
+#' @description This function checks the connectivity degree and the betweenness
+#'   centrality, which reflect the communication flow in the defined PPI
+#'   networks
+#' @export
+#' @param data Protein-protein interaction data frame resulted from running the
+#'   PPI function.
+#' @param export if `TRUE`, exports the analysis table as a csv file
+#' @param FileName suffix for the file name (if export = TRUE)
+#' @importFrom igraph graph.data.frame as_adjacency_matrix distance_table
+#'   average.path.length get.adjacency V E mean_distance betweenness
+#' @importFrom NetIndices GenInd
+#' @return A network analysis table
+NetAnalysis <- function(
+    data, export = FALSE, FileName = "NetworkAnalysisTable-1") {
+  if (length(data[, 1]) < 1) {
+    stop("No Protein-Protein Interactions")
+  }
+  df <- data[, -c(1, 2)]
+  gg <- graph.data.frame(df)
+  betweenness <- betweenness(gg)
+  betweenness.table <- data.frame(betweenness)
+  names <- rownames(betweenness.table)
+  rownames(betweenness.table) <- NULL
+  degree <- degree(gg)
+
+  Duplicated <- data[duplicated(data), ]
+  if (length(Duplicated[, 1]) > 0) {
+    degree <- degree / 2
+  }
+
+  degree.table <- data.frame(degree)
+  names <- rownames(degree.table)
+  rownames(degree.table) <- NULL
+  AnalysisTable <- cbind(names, degree.table, betweenness.table)
+
+  if (export) {
+    write.csv(AnalysisTable, file = paste0(FileName, ".csv"))
+  }
+
+  test.graph.adj <- get.adjacency(gg, sparse = FALSE)
+  test.graph.properties <- GenInd(test.graph.adj)
+  message("Number of nodes: ", test.graph.properties$N)
+  message("Number of links: ", test.graph.properties$Ltot)
+  message("Link Density: ", test.graph.properties$LD)
+  message("The connectance of the graph: ", test.graph.properties$C)
+  message("Mean Distences", mean_distance(gg))
+  message("Average Path Length", average.path.length(gg), "\n")
+  AnalysisTable <-
+    AnalysisTable[order(AnalysisTable[, 2], decreasing = TRUE), ]
+  return(AnalysisTable)
+}