Mercurial > repos > artbio > gsc_center_scale
diff center_scale.R @ 2:163befe5f05b draft
planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/gsc_center_scale commit 41ba5435a8ad12c1fe0703a9ce44b759003f3f73
author | artbio |
---|---|
date | Sun, 15 Oct 2023 16:16:16 +0000 |
parents | a96cc346819c |
children | b7daf62bde65 |
line wrap: on
line diff
--- a/center_scale.R Fri Jul 12 11:44:50 2019 -0400 +++ b/center_scale.R Sun Oct 15 16:16:16 2023 +0000 @@ -1,103 +1,95 @@ -options( show.error.messages=F, - error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } ) +options(show.error.messages = FALSE, + error = function() { + cat(geterrmessage(), file = stderr()) + q("no", 1, FALSE) + } +) loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8") warnings() library(optparse) # Arguments -option_list = list( +option_list <- list( make_option( - '--data', + "--data", default = NA, - type = 'character', + type = "character", help = "Input file that contains values to transform. Must be tabular separated, with columns and row names, variables in rows, observations in columns [default : '%default' ]" ), make_option( - '--center', + "--center", default = TRUE, - type = 'logical', + type = "logical", help = "center data to the mean [default : '%default' ]" ), make_option( - '--scale', + "--scale", default = TRUE, - type = 'logical', + type = "logical", help = "scale data to standard deviation [default : '%default' ]" ), make_option( - '--factor', - default = '', - type = 'character', + "--factor", + default = "", + type = "character", help = "A two-column observations|factor_levels table, to group observations to be transformed by levels [default : '%default' ]" ), make_option( - '--output', - default = 'res.tab', - type = 'character', + "--output", + default = "res.tab", + type = "character", help = "Table of transformed values [default : '%default' ]" ) ) -transform <- function(df, center=TRUE, scale=TRUE) { - transfo <- scale( - t(df), - center=center, - scale=scale - ) - return(as.data.frame(t(transfo))) +transform <- function(df, center = TRUE, scale = TRUE) { + transfo <- scale(t(df), + center = center, + scale = scale + ) + return(as.data.frame(t(transfo))) } -opt = parse_args(OptionParser(option_list = option_list), - args = commandArgs(trailingOnly = TRUE)) +opt <- parse_args(OptionParser(option_list = option_list), + args = commandArgs(trailingOnly = TRUE)) -data = read.table( - opt$data, - check.names = FALSE, - header = TRUE, - row.names = 1, - sep = '\t' +data <- read.delim( + opt$data, + check.names = FALSE, + header = TRUE, + row.names = 1, + sep = "\t" ) -if (opt$factor != '') { - data.factor = read.table( - opt$factor, - check.names = FALSE, - header = TRUE, - sep = '\t' - ) - colnames(data.factor) <- c("cellid", "level") - data.transformed <- data.frame(row.names=rownames(data), stringsAsFactors=FALSE) - for (group in levels(data.factor$level)){ - subcells <- as.data.frame(subset(data.factor, level==group, select=cellid)) - subdata <- as.data.frame(subset(data, select=as.vector(subcells$cellid))) - subdata.transformed <- transform(subdata, center=as.logical(opt$center), - scale=as.logical(opt$scale)) - data.transformed <- cbind(data.transformed, subdata.transformed) - } +if (opt$factor != "") { + data_factor <- read.delim( + opt$factor, + check.names = FALSE, + header = TRUE, + sep = "\t", + stringsAsFactors = TRUE + ) + colnames(data_factor) <- c("cellid", "level") + data_transformed <- data.frame(row.names = rownames(data)) + for (group in levels(data_factor$level)) { + subcells <- as.data.frame(subset(data_factor, level == group, select = cellid)) + subdata <- as.data.frame(subset(data, select = as.vector(subcells$cellid))) + subdata_transformed <- transform(subdata, center = as.logical(opt$center), + scale = as.logical(opt$scale)) + data_transformed <- cbind(data_transformed, subdata_transformed) + } } else { - data.transformed <- transform(data, center=as.logical(opt$center), - scale=as.logical(opt$scale)) + data_transformed <- transform(data, center = as.logical(opt$center), + scale = as.logical(opt$scale)) } write.table( - cbind(gene=rownames(data.transformed), data.transformed), + cbind(gene = rownames(data_transformed), data_transformed), opt$output, col.names = TRUE, row.names = FALSE, - quote = F, + quote = FALSE, sep = "\t" ) - - - - - - - - - - - -