Mercurial > repos > guerler > chartskit
comparison chartskit.r @ 1:b4722f9d496f draft
Uploaded
author | guerler |
---|---|
date | Mon, 31 Mar 2014 17:22:09 -0400 |
parents | |
children | 4aeb334de0e3 |
comparison
equal
deleted
inserted
replaced
0:a6a023d1fa11 | 1:b4722f9d496f |
---|---|
1 #!/usr/bin/Rscript | |
2 | |
3 # convert multi parameter string (i.e. key1: value, key2: value, ...) to object | |
4 split <- function(argument){ | |
5 # process parameter string | |
6 options <- list() | |
7 list <- gsub("\\s","", argument) | |
8 list <- strsplit(list, ",") | |
9 if (length(list) > 0) { | |
10 list <- list[[1]] | |
11 for (entry in list) { | |
12 pair <- strsplit(entry, ":") | |
13 if (length(pair) > 0) { | |
14 pair <- pair[[1]] | |
15 if (length(pair) == 2) { | |
16 options[[pair[1]]] <- pair[2] | |
17 } | |
18 } | |
19 } | |
20 } | |
21 return(options) | |
22 } | |
23 | |
24 # load package | |
25 if('getopt' %in% rownames(installed.packages()) == FALSE) { | |
26 install.packages('getopt', repos='http://cran.us.r-project.org') | |
27 } | |
28 library(getopt); | |
29 | |
30 # get options, using the spec as defined by the enclosed list. | |
31 spec = matrix(c( | |
32 'module', 'm', 1, 'character', 'Module name', | |
33 'input', 'i', 1, 'character', 'Input tabular file', | |
34 'columns', 'c', 1, 'character', 'Columns string', | |
35 'settings', 's', 1, 'character', 'Settings string', | |
36 'output', 'o', 1, 'character', 'Output tabular file', | |
37 'help', 'h', 0, '', 'Help', | |
38 'verbose', 'v', 0, '', 'Verbose' | |
39 ), byrow=TRUE, ncol=5); | |
40 opt = getopt(spec); | |
41 | |
42 # show help | |
43 if ( !is.null(opt$help) || is.null(opt$module) || is.null(opt$input) || is.null(opt$columns) || is.null(opt$output)) { | |
44 cat(getopt(spec, usage=TRUE)); | |
45 q(status=1); | |
46 } | |
47 | |
48 # read columns/settings | |
49 columns = split(opt$columns) | |
50 settings = split(opt$settings) | |
51 | |
52 # read table | |
53 table <- read.table(opt$input) | |
54 | |
55 # source module | |
56 source(opt$module) | |
57 | |
58 # run module | |
59 l = wrapper (table, columns, settings) | |
60 | |
61 # fill gaps | |
62 if (length(l) > 0) { | |
63 n <- max(sapply(l, length)) | |
64 ll <- lapply(l, function(X) { | |
65 c(as.character(X), rep("", times = n - length(X))) | |
66 }) | |
67 out <- do.call(cbind, ll) | |
68 | |
69 # print details | |
70 if (!is.null(opt$verbose)) { | |
71 print ('Columns:') | |
72 print (columns) | |
73 print ('Settings:') | |
74 print (settings) | |
75 print ('Result:') | |
76 print (out) | |
77 } | |
78 | |
79 # write table | |
80 write.table(out, file=opt$output, row.names=FALSE, col.names = FALSE, quote=FALSE, sep='\t') | |
81 } else { | |
82 print ('Columns:') | |
83 print (columns) | |
84 print ('Settings:') | |
85 print (settings) | |
86 print ('No output generated.') | |
87 } |