diff upset.R @ 0:f005c350af7f draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/ggupset commit 517bf38557204e91a3652046a9412fb635257c8f
author iuc
date Sat, 17 Dec 2022 16:53:08 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upset.R	Sat Dec 17 16:53:08 2022 +0000
@@ -0,0 +1,45 @@
+library(tidyverse)
+library(ggupset)
+
+args <- commandArgs(trailingOnly = TRUE)
+n_int <- as.integer(args[1])
+x_lab <- as.character(args[2])
+y_lab <- as.character(args[3])
+width <- as.integer(args[4])
+height <- as.integer(args[5])
+files <- tail(args, -5)
+
+# gene, (list of matching conditions)
+data <- list()
+for (idx in seq_along(files)) {
+  k <- files[idx]
+  data[k] <- read_tsv(k, col_names = c("genes"))
+}
+
+all_genes <- c()
+for (gene_list in data){
+  for (gene in gene_list){
+    all_genes <- append(all_genes, gene)
+  }
+}
+all_genes <- unique(sort(all_genes))
+
+trans <- tibble(gene = character(), files = character())
+for (gene_idx in seq_along(all_genes)) {
+  gene <- all_genes[gene_idx]
+  files <- names(data)[grep(gene, data)]
+  files <- paste(files, sep = ",", collapse = ",")
+  trans <- trans %>% add_row(gene = gene, files = files)
+}
+
+write_tsv(trans, "upset.tsv")
+trans$f <- str_split(trans$files, ",")
+
+pl <- trans %>% ggplot(aes(x = f)) + geom_bar() +
+    scale_x_upset(n_intersections = n_int, order_by = "freq") +
+    xlab(x_lab) + ylab(y_lab)
+ggsave("upset-freq.png", width = width, height = height, units = "px")
+pl <- trans %>% ggplot(aes(x = f)) + geom_bar() +
+    scale_x_upset(n_intersections = n_int, order_by = "degree") +
+    xlab(x_lab) + ylab(y_lab)
+ggsave("upset-degree.png", width = width, height = height, units = "px")