diff ribowaltz_plot.R @ 0:8e903cb3f919 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/ribowaltz commit ff002df702f544829d1b500ac4b517c1e70ad14d
author iuc
date Thu, 22 Sep 2022 20:30:20 +0000
parents
children e25d81465c23
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ribowaltz_plot.R	Thu Sep 22 20:30:20 2022 +0000
@@ -0,0 +1,152 @@
+# 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")
+library("getopt")
+options(stringAsFactors = FALSE, useFancyQuotes = FALSE)
+args <- commandArgs(trailingOnly = TRUE)
+
+# get options, using the spec as defined by the enclosed list.
+# we read the options from the default: commandArgs(TRUE).
+spec <- matrix(c(
+  "quiet", "q", 0, "logical",
+  "help", "h", 0, "logical",
+  "input_rdata", "i", 1, "character",
+  "params_rlength_distr", "r", 0, "character",
+  "params_rends_heat", "e", 0, "character",
+  "region_psite_plot", "R", 0, "logical",
+  "params_trint_periodicity", "t", 0, "character",
+  "params_metaplots", "m", 0, "character",
+  "params_codon_usage_psite", "u", 0, "character"
+), byrow = TRUE, ncol = 4)
+opt <- getopt(spec)
+
+# if help was asked for print a friendly message
+# and exit with a non-zero error code
+if (!is.null(opt$help)) {
+  cat(getopt(spec, usage = TRUE))
+  q(status = 1)
+}
+
+verbose <- is.null(opt$quiet)
+
+library("riboWaltz")
+library("jsonlite")
+
+load(opt$input_rdata)
+
+if (!is.null(opt$params_rlength_distr)) {
+  pdf("read_lengths.pdf")
+  json_rlength_distr <- fromJSON(opt$params_rlength_distr)
+  length_dist <- rlength_distr(
+    reads_psite_list,
+    sample = names(reads_psite_list),
+    cl = json_rlength_distr$cl,
+    multisamples = json_rlength_distr$multisamples,
+    plot_style = json_rlength_distr$plot_style
+  )
+  print(length_dist)
+  dev.off()
+}
+
+if (!is.null(opt$params_rends_heat)) {
+  pdf("read_ends_heatmap.pdf", height = 5 * length(reads_psite_list), width = 15)
+  json_rends_heat <- fromJSON(opt$params_rends_heat)
+  for (sample_name in names(reads_psite_list)) {
+    ends_heatmap <- rends_heat(
+      reads_psite_list,
+      annotation_dt,
+      sample = sample_name,
+      cl = json_rends_heat$cl,
+      utr5l = json_rends_heat$utr5l,
+      cdsl = json_rends_heat$cdsl,
+      utr3l = json_rends_heat$utr3l
+    )
+    print(ends_heatmap[["plot"]])
+  }
+  dev.off()
+}
+
+if (!is.null(opt$region_psite_plot)) {
+  pdf("psites_per_region.pdf", height = 12, width = 7 * length(reads_psite_list))
+  psite_region <- region_psite(reads_psite_list, annotation_dt, sample = names(reads_psite_list))
+  print(psite_region[["plot"]])
+  dev.off()
+}
+
+if (!is.null(opt$params_trint_periodicity)) {
+  pdf("trinucleotide_periodicity.pdf", height = 6 * length(reads_psite_list), width = 10)
+  json_trint_periodicity <- fromJSON(opt$params_trint_periodicity)
+  frames_stratified <- frame_psite_length(
+    reads_psite_list,
+    sample = names(reads_psite_list),
+    cl = json_trint_periodicity$cl,
+    region = json_trint_periodicity$region,
+    length_range = json_trint_periodicity$length_range
+  )
+  frames_stratified[["plot"]]
+  frames <- frame_psite_length(
+    reads_psite_list,
+    sample = names(reads_psite_list),
+    region = json_trint_periodicity$region,
+    length_range = json_trint_periodicity$length_range
+  )
+  print(frames[["plot"]])
+  dev.off()
+}
+
+if (!is.null(opt$params_metaplots)) {
+  pdf("metaplots.pdf", height = 5 * length(reads_psite_list), width = 24)
+  json_metaplots <- fromJSON(opt$params_metaplots)
+  metaprofile <- metaprofile_psite(
+    reads_psite_list,
+    annotation_dt,
+    sample = names(reads_psite_list),
+    multisamples = json_metaplots$multisamples,
+    plot_style = json_metaplots$plot_style,
+    length_range = json_metaplots$length_range,
+    frequency = json_metaplots$frequency,
+    utr5l = json_metaplots$utr5l,
+    cdsl = json_metaplots$cdsl,
+    utr3l = json_metaplots$utr3l,
+    plot_title = "sample.transcript.length_range"
+  )
+  print(metaprofile)
+  sample_list <- list()
+  for (sample_name in names(reads_psite_list)) {
+  sample_list[[sample_name]] <- c(sample_name)
+  }
+  metaheatmap <- metaheatmap_psite(
+    reads_psite_list,
+    annotation_dt,
+    sample = sample_list,
+    length_range = json_metaplots$length_range,
+    utr5l = json_metaplots$utr5l,
+    cdsl = json_metaplots$cdsl,
+    utr3l = json_metaplots$utr3l,
+    plot_title = "Comparison metaheatmap"
+  )
+  print(metaheatmap[["plot"]])
+  dev.off()
+}
+
+if (!is.null(opt$params_codon_usage_psite)) {
+  pdf("codon_usage.pdf", height = 6, width = 16)
+  json_codon_usage_psite <- fromJSON(opt$params_codon_usage_psite)
+  for (sample_name in names(reads_psite_list)) {
+  cu_barplot <- codon_usage_psite(
+    reads_psite_list,
+    annotation_dt,
+    sample = sample_name,
+    fastapath = json_codon_usage_psite$fastapath,
+    fasta_genome = FALSE,
+    frequency_normalization = json_codon_usage_psite$frequency
+  )
+  print(cu_barplot[["plot"]])
+  }
+  dev.off()
+}