diff CEMiTool.R @ 0:3f9ff31c88bb draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/cemitool commit 07372bcbc3a94f886436a7263f4cfcb01981c7f3
author iuc
date Mon, 10 Oct 2022 16:55:19 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CEMiTool.R	Mon Oct 10 16:55:19 2022 +0000
@@ -0,0 +1,155 @@
+# Load all required libraries
+library(CEMiTool, quietly = TRUE, warn.conflicts = FALSE)
+library(ggplot2, quietly = TRUE, warn.conflicts = FALSE)
+library(getopt, quietly = TRUE, warn.conflicts = FALSE)
+# setup R error handling to go to stderr
+options(
+  show.error.messages = FALSE,
+  error = function() {
+    cat(geterrmessage(), file = stderr())
+    q("no", 1, FALSE)
+  }
+)
+
+# we need that to not crash galaxy with an UTF8 error on German LC settings.
+loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
+
+################################################################################
+### Input Processing
+################################################################################
+
+# Collect arguments from command line
+args <- commandArgs(trailingOnly = TRUE)
+
+# Get options, using the spec as defined by the enclosed list.
+# Read the options from the default: commandArgs(TRUE).
+spec <- matrix(c(
+  "expressionMatrix", "M", 1, "character",
+  "sampleAnnotation", "A", 2, "character",
+  "pathwayList", "P", 2, "character",
+  "interactions", "I", 2, "character",
+  "filter", "f", 1, "logical",
+  "filter_pval", "i", 1, "numeric",
+  "apply_vst", "a", 1, "logical",
+  "n_genes", "n", 1, "integer",
+  "eps", "e", 1, "numeric",
+  "cor_method", "c", 1, "character",
+  "cor_function", "y", 1, "character",
+  "network_type", "x", 1, "character",
+  "tom_type", "t", 1, "character",
+  "merge_similar", "m", 1, "logical",
+  "rank_method", "r", 1, "character",
+  "min_ngen", "g", 1, "integer",
+  "diss_thresh", "d", 1, "numeric",
+  "center_func", "h", 1, "character",
+  "ora_pval", "o", 1, "numeric",
+  "gsea_scale", "l", 1, "logical",
+  "gsea_min_size", "w", 1, "integer",
+  "gsea_max_size", "z", 1, "integer",
+  "sample_column_name", "v", 1, "character"),
+byrow = TRUE, ncol = 4
+)
+
+opt <- getopt(spec)
+counts <- read.table(
+  opt$expressionMatrix,
+  header = TRUE,
+  sep = "\t",
+  strip.white = TRUE,
+  stringsAsFactors = FALSE,
+  check.names = FALSE
+)
+
+
+# Run CEMiTool
+
+if (is.null(opt$sampleAnnotation)) {
+  cem <- cemitool(
+    counts,
+    filter = opt$filter,
+    filter_pval = opt$filter_pval,
+    apply_vst = opt$apply_vst,
+    n_genes = opt$n_genes,
+    eps = opt$eps,
+    cor_method = opt$cor_method,
+    cor_function = opt$cor_function,
+    network_type = opt$network_type,
+    tom_type = opt$tom_type,
+    merge_similar = opt$merge_similar,
+    min_ngen = opt$min_ngen,
+    diss_thresh = opt$diss_thresh,
+    center_func = opt$center_func,
+    verbose = TRUE,
+    ora_pval = opt$ora_pval
+  )
+} else {
+  annotation <- read.table(
+    opt$sampleAnnotation,
+    header = TRUE,
+    sep = "\t",
+    strip.white = TRUE,
+    stringsAsFactors = FALSE,
+    check.names = FALSE
+  )
+  cem <- cemitool(
+    counts,
+    annotation,
+    filter = opt$filter,
+    filter_pval = opt$filter_pval,
+    apply_vst = opt$apply_vst,
+    n_genes = opt$n_genes,
+    eps = opt$eps,
+    cor_method = opt$cor_method,
+    cor_function = opt$cor_function,
+    network_type = opt$network_type,
+    tom_type = opt$tom_type,
+    merge_similar = opt$merge_similar,
+    min_ngen = opt$min_ngen,
+    diss_thresh = opt$diss_thresh,
+    center_func = opt$center_func,
+    verbose = TRUE,
+    ora_pval = opt$ora_pval,
+    sample_name_column = opt$sample_column_name,
+    class_column = "Class",
+    order_by_class = TRUE
+  )
+  cem <- mod_gsea(
+    cem,
+    gsea_scale = opt$gsea_scale,
+    gsea_min_size = opt$gsea_min_size,
+    gsea_max_size = opt$gsea_max_size,
+    rank_method = opt$rank_method
+)
+  cem <- plot_gsea(cem)
+}
+
+if (!is.null(opt$pathwayList)) {
+  gmt_in <- read_gmt(opt$pathwayList)
+  cem <- mod_ora(cem, gmt_in)
+  cem <- plot_ora(cem)
+}
+
+if (!is.null(opt$interactions)) {
+  interactions <- read.table(
+    opt$interactions,
+    header = TRUE,
+    sep = "\t",
+    strip.white = TRUE,
+    stringsAsFactors = FALSE,
+    check.names = FALSE
+  )
+  interactions_data(cem) <- interactions # add interactions
+  cem <- plot_interactions(cem)
+}
+
+## Write analysis results into files
+write_files(cem,
+            directory = "./Tables",
+            force = TRUE)
+
+generate_report(cem)
+
+save_plots(cem,
+           value = "all",
+           directory = "./Plots",
+           force = TRUE)