Mercurial > repos > recetox > waveica
diff waveica_wrapper.R @ 4:8b55efc7d117 draft
"planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit aa8206a01efc1813f2586584782f28a73a17fe86"
| author | recetox |
|---|---|
| date | Mon, 10 Jan 2022 16:01:35 +0000 |
| parents | d08deef1eb44 |
| children | cf3f2f964d80 |
line wrap: on
line diff
--- a/waveica_wrapper.R Fri Nov 12 23:22:14 2021 +0000 +++ b/waveica_wrapper.R Mon Jan 10 16:01:35 2022 +0000 @@ -11,19 +11,9 @@ data <- read.csv(data, header = TRUE) required_columns <- c("sampleName", "class", "sampleType", "injectionOrder", "batch") - if (anyNA(data)) { - stop("Error: dataframe cannot contain NULL values! -Make sure that your dataframe does not contain empty cells") - } else if (!all(required_columns %in% colnames(data))) { - stop("Error: missing metadata! -Make sure that the following columns are present in your dataframe: [sampleName, class, sampleType, injectionOrder, batch]") - } + verify_input_dataframe(data, required_columns) - # sort data by injection order - data <- data[order(data[, "batch"], - data[, "injectionOrder"], - decreasing = FALSE - ), ] + data <- sort_by_injection_order(data) # separate data into features, batch and group feature_columns <- colnames(data)[!colnames(data) %in% required_columns] @@ -32,7 +22,7 @@ batch <- data$batch # run WaveICA - features <- WaveICA::WaveICA( + features <- recetox.waveica::waveica( data = features, wf = get_wf(wavelet_filter, wavelet_length), batch = batch, @@ -43,7 +33,7 @@ alpha = alpha ) - data[, feature_columns] <- features$data_wave + data[, feature_columns] <- features # remove blanks from dataset if (exclude_blanks) { @@ -54,6 +44,74 @@ } +waveica_singlebatch <- function(data, + wavelet_filter, + wavelet_length, + k, + alpha, + cutoff, + exclude_blanks) { + + # get input from the Galaxy, preprocess data + data <- read.csv(data, header = TRUE) + + required_columns <- c("sampleName", "class", "sampleType", "injectionOrder") + optional_columns <- c("batch") + verify_input_dataframe(data, required_columns) + + data <- sort_by_injection_order(data) + + feature_columns <- colnames(data)[!colnames(data) %in% c(required_columns, optional_columns)] + features <- data[, feature_columns] + injection_order <- data$injectionOrder + + # run WaveICA + features <- recetox.waveica::waveica_nonbatchwise( + data = features, + wf = get_wf(wavelet_filter, wavelet_length), + injection_order = injection_order, + K = k, + alpha = alpha, + cutoff = cutoff + ) + + data[, feature_columns] <- features + + # remove blanks from dataset + if (exclude_blanks) { + data <- exclude_group(data, group) + } + + return(data) +} + + +sort_by_injection_order <- function(data) { + if ("batch" %in% colnames(data)) { + data <- data[order(data[, "batch"], + data[, "injectionOrder"], + decreasing = FALSE + ), ] + } else { + data <- data[order(data[, "injectionOrder"], + decreasing = FALSE + ), ] + } + return(data) +} + + +verify_input_dataframe <- function(data, required_columns) { + if (anyNA(data)) { + stop("Error: dataframe cannot contain NULL values! +Make sure that your dataframe does not contain empty cells") + } else if (!all(required_columns %in% colnames(data))) { + stop("Error: missing metadata! +Make sure that the following columns are present in your dataframe: ", paste(required_columns, collapse = ", ")) + } +} + + # Match group labels with [blank/sample/qc] and enumerate them enumerate_groups <- function(group) { group[grepl("blank", tolower(group))] <- 0
