Mercurial > repos > iuc > charts
changeset 1:344ac3ca7557 draft default tip
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/charts/ commit 4494db13b69987fbc97d47177d2a5956e46e927b"
author | iuc |
---|---|
date | Wed, 17 Nov 2021 09:06:59 +0000 |
parents | a87a3773d8ed |
children | |
files | boxplot.r charts.r charts.xml heatmap.r histogram.r histogramdiscrete.r |
diffstat | 6 files changed, 118 insertions(+), 114 deletions(-) [+] |
line wrap: on
line diff
--- a/boxplot.r Fri Mar 09 08:23:08 2018 -0500 +++ b/boxplot.r Wed Nov 17 09:06:59 2021 +0000 @@ -8,14 +8,14 @@ # load column data column <- as.numeric(columns[key]) column_data <- suppressWarnings(as.numeric(as.character(table[column][[1]]))) - + # create hist data - data <- boxplot(column_data, plot=FALSE) - + data <- boxplot(column_data, plot = FALSE) + # collect vectors in list l <- append(l, list(data$stats)) } - + # return - return (l) + return(l) }
--- a/charts.r Fri Mar 09 08:23:08 2018 -0500 +++ b/charts.r Wed Nov 17 09:06:59 2021 +0000 @@ -1,13 +1,13 @@ #!/usr/bin/Rscript # load getopt library -library('getopt'); +library("getopt"); # convert multi parameter string (i.e. key1: value, key2: value, ...) to object -split <- function(argument){ +split <- function(argument) { # process parameter string options <- list() - list <- gsub("\\s","", argument) + list <- gsub("\\s", "", argument) list <- strsplit(list, ",") if (length(list) > 0) { list <- list[[1]] @@ -25,92 +25,92 @@ } # 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); +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) || +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); + cat(getopt(spec, usage = TRUE)) + q(status = 1); } # read columns/settings -columns = split(opt$columns) -settings = split(opt$settings) +columns <- split(opt$columns) +settings <- split(opt$settings) # read table -table <- read.table(opt$input, comment.char='#', fill=TRUE) +table <- read.table(opt$input, comment.char = "#", fill = TRUE) # identify module file -module_file = paste(opt$workdir, opt$module, '.r', sep='') +module_file <- paste(opt$workdir, opt$module, ".r", sep = "") # source module source(module_file) # run module -l = wrapper (table, columns, settings) +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=' ') +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) + print("Columns:") + print(columns) + print("Settings:") + print(settings) + print("Result:") + print(l) } # create output file - output <- file(opt$output, open='wt') - + output <- file(opt$output, open = "wt") + # write header - writeLines('#', output) + writeLines("#", output) writeLines(header_title, output) writeLines(header_date, output) writeLines(header_module, output) writeLines(header_settings, output) writeLines(header_columns, output) - writeLines('#', output) - + writeLines("#", output) + # pad columns rows <- max(unlist(lapply(l, length))) padded <- lapply(l, function(col) { - length(col) = rows; + length(col) <- rows; col }) - + # write table - write.table(padded, file=output, row.names=FALSE, col.names = FALSE, quote=FALSE, sep='\t') - + 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.') + print("Columns:") + print(columns) + print("Settings:") + print(settings) + print("No output generated.") } \ No newline at end of file
--- a/charts.xml Fri Mar 09 08:23:08 2018 -0500 +++ b/charts.xml Wed Nov 17 09:06:59 2021 +0000 @@ -52,7 +52,7 @@ <output name="output" file="histogram.002.txt" lines_diff="2"/> </test> <test> - <param name="input" value="tabular_single.txt" /> + <param name="input" value="tabular_single.txt" ftype="tabular"/> <param name="module" value="histogram" /> <param name="columns" value="key1: 1" /> <param name="settings" value="" />
--- a/heatmap.r Fri Mar 09 08:23:08 2018 -0500 +++ b/heatmap.r Wed Nov 17 09:06:59 2021 +0000 @@ -1,44 +1,44 @@ # load sparse matrix package -suppressPackageStartupMessages(library('Matrix')) +suppressPackageStartupMessages(library("Matrix")) # access a numeric column get_numeric <- function(table, column_key) { column <- as.numeric(column_key) column_data <- suppressWarnings(as.numeric(as.character(table[column][[1]]))) - return (c(column_data)) + return(c(column_data)) } # access a label column get_label <- function(table, column_key) { column <- as.numeric(column_key) column_data <- as.character(table[column][[1]]) - return (c(column_data)) + return(c(column_data)) } # inflate three columns into matrix -matrify <- function (data) { +matrify <- function(data) { if (ncol(data) != 3) - stop('Data frame must have three column format') + stop("Data frame must have three column format") plt <- data[, 1] spc <- data[, 2] abu <- data[, 3] - plt.codes <- levels(factor(plt)) - spc.codes <- levels(factor(spc)) - taxa <- Matrix(0, nrow=length(plt.codes), ncol=length(spc.codes), sparse=TRUE) - row <- match(plt, plt.codes) - col <- match(spc, spc.codes) - for (i in 1:length(abu)) { + plt_codes <- levels(factor(plt)) + spc_codes <- levels(factor(spc)) + taxa <- Matrix(0, nrow = length(plt_codes), ncol = length(spc_codes), sparse = TRUE) + row <- match(plt, plt_codes) + col <- match(spc, spc_codes) + for (i in seq_len(length(abu))) { taxa[row[i], col[i]] <- abu[i] } - colnames(taxa) <- spc.codes - rownames(taxa) <- plt.codes + colnames(taxa) <- spc_codes + rownames(taxa) <- plt_codes taxa } # flatten data.frame into three column format flatten <- function(my_matrix) { - summ <-summary(my_matrix) - summ <- data.frame(i=rownames(my_matrix)[summ$i], j=colnames(my_matrix)[summ$j], x=summ$x) + summ <- summary(my_matrix) + summ <- data.frame(i = rownames(my_matrix)[summ$i], j = colnames(my_matrix)[summ$j], x = summ$x) summ } @@ -49,49 +49,49 @@ l <- list() # get number of columns - n = length(columns) - + n <- length(columns) + # consistency check if (n %% 3 != 0) { - print ('heatmap::wrapper() - Data not consistent (n mod 3 != 0)') - return (l) + print("heatmap::wrapper() - Data not consistent (n mod 3 != 0)") + return(l) } - + # create index sequence - index = seq(1, n, by=3) - + index <- seq(1, n, by = 3) + # get keys - keys = names(columns) - + keys <- names(columns) + # loop through blocks for (i in index) { # create columns ci <- get_label(table, columns[keys[i]]) - cj <- get_label(table, columns[keys[i+1]]) - cx <- get_numeric(table, columns[keys[i+2]]) - + cj <- get_label(table, columns[keys[i + 1]]) + cx <- get_numeric(table, columns[keys[i + 2]]) + # create a frame from columns - my_frame <- data.frame(ci=ci, cj=cj, cx=cx) - + my_frame <- data.frame(ci = ci, cj = cj, cx = cx) + # create matrix out of the frame my_matrix <- matrify(my_frame) - + # create/cluster matrix row_order <- hclust(dist(my_matrix))$order col_order <- hclust(dist(t(my_matrix)))$order - + # reorder matrix my_matrix <- my_matrix[row_order, col_order] - + # transform back to three columns - my_flatmatrix = flatten(my_matrix) - + my_flatmatrix <- flatten(my_matrix) + # append to result list l <- append(l, list(my_flatmatrix$i)) l <- append(l, list(my_flatmatrix$j)) l <- append(l, list(my_flatmatrix$x)) } - + # return - return (l) + return(l) }
--- a/histogram.r Fri Mar 09 08:23:08 2018 -0500 +++ b/histogram.r Wed Nov 17 09:06:59 2021 +0000 @@ -10,36 +10,36 @@ # load column data column <- as.numeric(columns[key]) column_data <- suppressWarnings(as.numeric(as.character(table[column][[1]]))) - + # collect vectors in list m <- append(m, list(column_data)) } - + # identify optimal breaks - hist_data <- hist(unlist(m), plot=FALSE) + hist_data <- hist(unlist(m), plot = FALSE) breaks <- hist_data$breaks; - + # add as first column l <- append(l, list(breaks[2: length(breaks)])) - + # loop through all columns for (key in seq(m)) { # load column data column_data <- m[[key]] - + # create hist data - hist_data <- hist(column_data, breaks=breaks, plot=FALSE) - + hist_data <- hist(column_data, breaks = breaks, plot = FALSE) + # normalize densities count_sum <- sum(hist_data$counts) if (count_sum > 0) { - hist_data$counts = hist_data$counts / count_sum + hist_data$counts <- hist_data$counts / count_sum } - + # collect vectors in list l <- append(l, list(hist_data$counts)) } - + # return - return (l) + return(l) }
--- a/histogramdiscrete.r Fri Mar 09 08:23:08 2018 -0500 +++ b/histogramdiscrete.r Wed Nov 17 09:06:59 2021 +0000 @@ -1,3 +1,7 @@ +zero <- function(v) { + 0 +} + # wrapper wrapper <- function(table, columns, options) { @@ -9,46 +13,46 @@ for (key in names(columns)) { # load column data column <- as.numeric(columns[key]) - + # ensure string column column_data <- as.character(table[column][[1]]) - + # collect vectors in list m <- append(m, list(column_data)) } - + # get alphabetically sorted bins bins <- sort(unique(unlist(m))) - + # add first column l <- append(l, list(bins)) - + # loop through all columns for (key in seq(m)) { # reset bins - bins = sapply(bins, function(v) { 0 }) - + bins <- sapply(bins, zero) + # load column data column_data <- m[[key]] - + # create hist data table_data <- table(column_data) - + # transfer counts to bins for (id in names(table_data)) { bins[id] <- table_data[id] } - + # normalize densities total <- length(column_data) if (total > 0) { - bins = bins / total + bins <- bins / total } - + # collect vectors in list l <- append(l, list(bins)) } # return - return (l) + return(l) }