Mercurial > repos > iuc > charts
comparison charts.r @ 0:a87a3773d8ed draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/charts/ commit 87080d49913cfd40a77eda7e5834ac9c4bc30b0b
author | iuc |
---|---|
date | Fri, 09 Mar 2018 08:23:08 -0500 |
parents | |
children | 344ac3ca7557 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a87a3773d8ed |
---|---|
1 #!/usr/bin/Rscript | |
2 | |
3 # load getopt library | |
4 library('getopt'); | |
5 | |
6 # convert multi parameter string (i.e. key1: value, key2: value, ...) to object | |
7 split <- function(argument){ | |
8 # process parameter string | |
9 options <- list() | |
10 list <- gsub("\\s","", argument) | |
11 list <- strsplit(list, ",") | |
12 if (length(list) > 0) { | |
13 list <- list[[1]] | |
14 for (entry in list) { | |
15 pair <- strsplit(entry, ":") | |
16 if (length(pair) > 0) { | |
17 pair <- pair[[1]] | |
18 if (length(pair) == 2) { | |
19 options[[pair[1]]] <- pair[2] | |
20 } | |
21 } | |
22 } | |
23 } | |
24 return(options) | |
25 } | |
26 | |
27 # get options, using the spec as defined by the enclosed list. | |
28 spec = matrix(c( | |
29 'workdir', 'w', 1, 'character', 'Work directory', | |
30 'module', 'm', 1, 'character', 'Module name', | |
31 'input', 'i', 1, 'character', 'Input tabular file', | |
32 'columns', 'c', 1, 'character', 'Columns string', | |
33 'settings', 's', 1, 'character', 'Settings string', | |
34 'output', 'o', 1, 'character', 'Output tabular file', | |
35 'help', 'h', 0, '', 'Help', | |
36 'verbose', 'v', 0, '', 'Verbose' | |
37 ), byrow=TRUE, ncol=5); | |
38 opt = getopt(spec); | |
39 | |
40 # show help | |
41 if ( !is.null(opt$help) || | |
42 is.null(opt$module) || | |
43 is.null(opt$input) || | |
44 is.null(opt$columns) || | |
45 is.null(opt$output)) { | |
46 cat(getopt(spec, usage=TRUE)) | |
47 q(status=1); | |
48 } | |
49 | |
50 # read columns/settings | |
51 columns = split(opt$columns) | |
52 settings = split(opt$settings) | |
53 | |
54 # read table | |
55 table <- read.table(opt$input, comment.char='#', fill=TRUE) | |
56 | |
57 # identify module file | |
58 module_file = paste(opt$workdir, opt$module, '.r', sep='') | |
59 | |
60 # source module | |
61 source(module_file) | |
62 | |
63 # run module | |
64 l = wrapper (table, columns, settings) | |
65 | |
66 # header | |
67 header_title <- '# title - Chart Utilities (charts)' | |
68 header_date <- paste('# date -', Sys.time(), sep=' ') | |
69 header_module <- paste('# module -', opt$module, sep=' ') | |
70 header_settings <- paste('# settings -', opt$settings, sep=' ') | |
71 header_columns <- paste('# columns -', opt$columns, sep=' ') | |
72 | |
73 # check result | |
74 if (length(l) > 0) { | |
75 # print details | |
76 if (!is.null(opt$verbose)) { | |
77 print ('Columns:') | |
78 print (columns) | |
79 print ('Settings:') | |
80 print (settings) | |
81 print ('Result:') | |
82 print (l) | |
83 } | |
84 | |
85 # create output file | |
86 output <- file(opt$output, open='wt') | |
87 | |
88 # write header | |
89 writeLines('#', output) | |
90 writeLines(header_title, output) | |
91 writeLines(header_date, output) | |
92 writeLines(header_module, output) | |
93 writeLines(header_settings, output) | |
94 writeLines(header_columns, output) | |
95 writeLines('#', output) | |
96 | |
97 # pad columns | |
98 rows <- max(unlist(lapply(l, length))) | |
99 padded <- lapply(l, function(col) { | |
100 length(col) = rows; | |
101 col | |
102 }) | |
103 | |
104 # write table | |
105 write.table(padded, file=output, row.names=FALSE, col.names = FALSE, quote=FALSE, sep='\t') | |
106 | |
107 # close file | |
108 close(output) | |
109 } else { | |
110 # print details | |
111 print ('Columns:') | |
112 print (columns) | |
113 print ('Settings:') | |
114 print (settings) | |
115 print ('No output generated.') | |
116 } |