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

Switch to side-by-side view

--- a
+++ b/R/Networking.R
@@ -0,0 +1,61 @@
+#' @title Plotting the network.
+#' @description This function uses STRING API to plot the network.
+#' @references https://string-db.org/api/
+#' @export
+#' @param data A gene list.
+#' @param FileName A string vector showing the name to be used to save the
+#' resulted network. If `NULL`, the network will be saved to a temporary
+#' directory
+#' @param species The taxonomy name/id. Default is "9606" for Homo sapiens.
+#' @param plot_width Plot width
+#' @param plot_height Plot height
+#' @param retries maximum number of attempts to connect to the STRING api.
+#' @importFrom utils download.file
+#' @importFrom png readPNG
+#' @importFrom graphics plot rasterImage
+#' @return A plot of the network
+Networking <- function(
+    data,
+    FileName = NULL,
+    species = "9606",
+    plot_width = 25,
+    plot_height = 15,
+    retries = 3) {
+  # ======================================================== #
+  # Validation                                               #
+  # ======================================================== #
+  if (length(data) > 600) stop("Your gene list is too big")
+
+  # ======================================================== #
+  # Processing                                               #
+  # ======================================================== #
+  repos <- retrieveURL(data, species, "highres_image")
+  y <- repos$request$url
+  if (!is.null(FileName)) {
+    FileName <- paste0("network", FileName, ".png")
+  } else {
+    FileName <- tempfile()
+  }
+  download.file(y, FileName, mode = "wb")
+  message(
+    "\n",
+    "You can see the network with high resolution ",
+    "by clicking on the following link:",
+    "\n",
+    paste0(y)
+  )
+  Network <- readPNG(FileName, native = TRUE)
+  set_plot_dimensions <- function(width_choice, height_choice) {
+    opar <- withr::with_options(
+      repr.plot.width = width_choice,
+      repr.plot.height = height_choice
+    )
+    on.exit(withr::with_options(opar))
+  }
+  set_plot_dimensions(plot_width, plot_height)
+
+  # Plotting ----------------------------------------------- #
+  plot(0:1, 0:1, type = "n", ann = FALSE, axes = FALSE)
+  rasterImage(Network, 0, 0, 1, 1)
+  set_plot_dimensions(8, 8) # resets to default values
+}