Mercurial > repos > eschen42 > w4mcorcov
annotate w4mcorcov_util.R @ 4:d3bb34e764fe draft
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 7a0b65df47977b9c7a62de7dc1587e5fb3e5abc1
| author | eschen42 | 
|---|---|
| date | Mon, 15 Jan 2018 14:08:59 -0500 | 
| parents | 50a07adddfbd | 
| children | 0b49916c5c52 | 
| rev | line source | 
|---|---|
| 0 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 1 # tryCatchFunc wraps an expression that produces a value if it does not stop: | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 2 # tryCatchFunc produces a list | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 3 # On success of expr(), tryCatchFunc produces | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 4 # list(success TRUE, value = expr(), msg = "") | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 5 # On failure of expr(), tryCatchFunc produces | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 6 # list(success = FALSE, value = NA, msg = "the error message") | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 7 tryCatchFunc <- function(expr) { | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 8 # format error for logging | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 9 format_error <- function(e) { | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 10 paste(c("Error { message:", e$message, ", call:", e$call, "}"), collapse = " ") | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 11 } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 12 retval <- NULL | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 13 tryCatch( | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 14 expr = { | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 15 retval <- ( list( success = TRUE, value = eval(expr = expr), msg = "" ) ) | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 16 } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 17 , error = function(e) { | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 18 retval <<- list( success = FALSE, value = NA, msg = format_error(e) ) | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 19 } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 20 ) | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 21 return (retval) | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 22 } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 23 | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 24 # turn off all plotting devices | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 25 dev.off.all <- function() { | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 26 while (!is.null(dev.list())) { dev.off() } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 27 } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 28 | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 29 # capture plot and write to PDF; then close any devices opened in the process | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 30 plot2pdf <- function( | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 31 file.name | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 32 , plot.function | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 33 , width = 12 | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 34 , height = 12 | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 35 ) { | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 36 # capture plot and write to PDF | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 37 cur.dev <- dev.list() | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 38 filename <- file.name | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 39 pdf(file = filename, width = width, height = height) | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 40 plot.function() | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 41 # close any devices opened in the process | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 42 dev.off() | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 43 if (is.null(cur.dev)) { | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 44 dev.off.all() | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 45 } else { | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 46 while ( length(dev.list()) > length(cur.dev) ) { dev.off() } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 47 } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 48 } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 49 | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 50 # print and capture plot and write to PDF; then close any devices opened in the process | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 51 # This is needed for ggplot which does not print the plot when invoked within a function. | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 52 print2pdf <- function( | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 53 file.name | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 54 , plot.function | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 55 , width = 12 | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 56 , height = 12 | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 57 ) { | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 58 plot2pdf( | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 59 file.name = file.name | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 60 , width = width | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 61 , height = height | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 62 , plot.function = function() { | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 63 print(plot.function()) | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 64 } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 65 ) | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 66 } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 67 | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 68 iso8601.znow <- function() | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 69 { | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 70 strftime(as.POSIXlt(Sys.time(), "UTC"), "%Y-%m-%dT%H:%M:%SZ") | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 71 } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 72 | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 73 # pdf.name <- function(name) | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 74 # { | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 75 # paste0(name, "_", iso8601.filename.fragment(), ".pdf") | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 76 # } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 77 # | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 78 # tsv.name <- function(name) | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 79 # { | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 80 # paste0(name, "_", iso8601.filename.fragment(), ".tsv") | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 81 # } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 82 # | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 83 # # pseudo-inverse - computational inverse non-square matrix a | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 84 # p.i <- function(a) { | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 85 # solve(t(a) %*% a) %*% t(a) | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 86 # } | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 87 | 
| 
50a07adddfbd
planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit 52e588e19fe93d83d221710bb75559c5700ba637
 eschen42 parents: diff
changeset | 88 | 
