Mercurial > repos > iuc > charts
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/charts.r Fri Mar 09 08:23:08 2018 -0500 @@ -0,0 +1,116 @@ +#!/usr/bin/Rscript + +# load getopt library +library('getopt'); + +# convert multi parameter string (i.e. key1: value, key2: value, ...) to object +split <- function(argument){ + # process parameter string + options <- list() + list <- gsub("\\s","", argument) + list <- strsplit(list, ",") + if (length(list) > 0) { + list <- list[[1]] + for (entry in list) { + pair <- strsplit(entry, ":") + if (length(pair) > 0) { + pair <- pair[[1]] + if (length(pair) == 2) { + options[[pair[1]]] <- pair[2] + } + } + } + } + return(options) +} + +# get options, using the spec as defined by the enclosed list. +spec = matrix(c( + 'workdir', 'w', 1, 'character', 'Work directory', + 'module', 'm', 1, 'character', 'Module name', + 'input', 'i', 1, 'character', 'Input tabular file', + 'columns', 'c', 1, 'character', 'Columns string', + 'settings', 's', 1, 'character', 'Settings string', + 'output', 'o', 1, 'character', 'Output tabular file', + 'help', 'h', 0, '', 'Help', + 'verbose', 'v', 0, '', 'Verbose' +), byrow=TRUE, ncol=5); +opt = getopt(spec); + +# show help +if ( !is.null(opt$help) || + is.null(opt$module) || + is.null(opt$input) || + is.null(opt$columns) || + is.null(opt$output)) { + cat(getopt(spec, usage=TRUE)) + q(status=1); +} + +# read columns/settings +columns = split(opt$columns) +settings = split(opt$settings) + +# read table +table <- read.table(opt$input, comment.char='#', fill=TRUE) + +# identify module file +module_file = paste(opt$workdir, opt$module, '.r', sep='') + +# source module +source(module_file) + +# run module +l = wrapper (table, columns, settings) + +# header +header_title <- '# title - Chart Utilities (charts)' +header_date <- paste('# date -', Sys.time(), sep=' ') +header_module <- paste('# module -', opt$module, sep=' ') +header_settings <- paste('# settings -', opt$settings, sep=' ') +header_columns <- paste('# columns -', opt$columns, sep=' ') + +# check result +if (length(l) > 0) { + # print details + if (!is.null(opt$verbose)) { + print ('Columns:') + print (columns) + print ('Settings:') + print (settings) + print ('Result:') + print (l) + } + + # create output file + output <- file(opt$output, open='wt') + + # write header + writeLines('#', output) + writeLines(header_title, output) + writeLines(header_date, output) + writeLines(header_module, output) + writeLines(header_settings, output) + writeLines(header_columns, output) + writeLines('#', output) + + # pad columns + rows <- max(unlist(lapply(l, length))) + padded <- lapply(l, function(col) { + length(col) = rows; + col + }) + + # write table + write.table(padded, file=output, row.names=FALSE, col.names = FALSE, quote=FALSE, sep='\t') + + # close file + close(output) +} else { + # print details + print ('Columns:') + print (columns) + print ('Settings:') + print (settings) + print ('No output generated.') +} \ No newline at end of file