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 }