Mercurial > repos > recetox > waveica
view waveica_wrapper.R @ 0:2461d20911c9 draft
"planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
| author | recetox |
|---|---|
| date | Thu, 18 Mar 2021 15:53:38 +0000 |
| parents | |
| children | 2bcfd5b450bb |
line wrap: on
line source
waveica <- function( data, wavelet_filter, wavelet_length, k, t, t2, alpha, exclude_blanks ) { # get input from the Galaxy, preprocess data data <- read.csv(data, header = TRUE, row.names = "sample_name") data <- preprocess_data(data) # remove blanks from dataset if (exclude_blanks) { data <- exclude_group(data) } # separate data into features, batch and group features <- data[, -c(1:4)] group <- as.numeric(data$class) batch <- data$batch # run WaveICA normalized_data <- WaveICA::WaveICA( data = features, wf = get_wf(wavelet_filter, wavelet_length), batch = batch, group = group, K = k, t = t, t2 = t2, alpha = alpha ) return(normalized_data) } # Sort data, set numerical values for groups preprocess_data <- function(data) { # sort data by injection order data <- data[order(data$injectionOrder, decreasing = FALSE), ] data$class[data$class == "blank"] <- 0 data$class[data$class == "sample"] <- 1 data$class[data$class == "QC"] <- 2 return(data) } # Create appropriate input for R wavelets function get_wf <- function(wavelet_filter, wavelet_length) { wf <- paste(wavelet_filter, wavelet_length, sep = "") # exception to the wavelet function if (wf == "d2") { wf <- "haar" } return(wf) } # Exclude blanks from a dataframe exclude_group <- function(data) { row_idx_to_exclude <- which(data$class %in% 0) if (length(row_idx_to_exclude) > 1) { data_without_blanks <- data[-c(row_idx_to_exclude), ] msg <- paste("Blank samples have been excluded from the dataframe.\n") cat(msg) return(data_without_blanks) } else { return(data) } } # Store output of WaveICA in a tsv file store_data <- function(normalized_data, output) { write.table(normalized_data, file = output, sep = "\t", col.names = NA) cat("Normalization has been completed.\n") }
