Mercurial > repos > eschen42 > w4mcorcov
diff w4mcorcov_util.R @ 0:50a07adddfbd draft
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
author | eschen42 |
---|---|
date | Mon, 09 Oct 2017 15:46:13 -0400 |
parents | |
children | 0b49916c5c52 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/w4mcorcov_util.R Mon Oct 09 15:46:13 2017 -0400 @@ -0,0 +1,88 @@ +# tryCatchFunc wraps an expression that produces a value if it does not stop: +# tryCatchFunc produces a list +# On success of expr(), tryCatchFunc produces +# list(success TRUE, value = expr(), msg = "") +# On failure of expr(), tryCatchFunc produces +# list(success = FALSE, value = NA, msg = "the error message") +tryCatchFunc <- function(expr) { + # format error for logging + format_error <- function(e) { + paste(c("Error { message:", e$message, ", call:", e$call, "}"), collapse = " ") + } + retval <- NULL + tryCatch( + expr = { + retval <- ( list( success = TRUE, value = eval(expr = expr), msg = "" ) ) + } + , error = function(e) { + retval <<- list( success = FALSE, value = NA, msg = format_error(e) ) + } + ) + return (retval) +} + +# turn off all plotting devices +dev.off.all <- function() { + while (!is.null(dev.list())) { dev.off() } +} + +# capture plot and write to PDF; then close any devices opened in the process +plot2pdf <- function( + file.name +, plot.function +, width = 12 +, height = 12 +) { + # capture plot and write to PDF + cur.dev <- dev.list() + filename <- file.name + pdf(file = filename, width = width, height = height) + plot.function() + # close any devices opened in the process + dev.off() + if (is.null(cur.dev)) { + dev.off.all() + } else { + while ( length(dev.list()) > length(cur.dev) ) { dev.off() } + } +} + +# print and capture plot and write to PDF; then close any devices opened in the process +# This is needed for ggplot which does not print the plot when invoked within a function. +print2pdf <- function( + file.name +, plot.function +, width = 12 +, height = 12 +) { + plot2pdf( + file.name = file.name + , width = width + , height = height + , plot.function = function() { + print(plot.function()) + } + ) +} + +iso8601.znow <- function() +{ + strftime(as.POSIXlt(Sys.time(), "UTC"), "%Y-%m-%dT%H:%M:%SZ") +} + +# pdf.name <- function(name) +# { +# paste0(name, "_", iso8601.filename.fragment(), ".pdf") +# } +# +# tsv.name <- function(name) +# { +# paste0(name, "_", iso8601.filename.fragment(), ".tsv") +# } +# +# # pseudo-inverse - computational inverse non-square matrix a +# p.i <- function(a) { +# solve(t(a) %*% a) %*% t(a) +# } + +