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 |