comparison 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
comparison
equal deleted inserted replaced
3:e3726251a055 4:8b55efc7d117
9 9
10 # get input from the Galaxy, preprocess data 10 # get input from the Galaxy, preprocess data
11 data <- read.csv(data, header = TRUE) 11 data <- read.csv(data, header = TRUE)
12 12
13 required_columns <- c("sampleName", "class", "sampleType", "injectionOrder", "batch") 13 required_columns <- c("sampleName", "class", "sampleType", "injectionOrder", "batch")
14 if (anyNA(data)) { 14 verify_input_dataframe(data, required_columns)
15 stop("Error: dataframe cannot contain NULL values!
16 Make sure that your dataframe does not contain empty cells")
17 } else if (!all(required_columns %in% colnames(data))) {
18 stop("Error: missing metadata!
19 Make sure that the following columns are present in your dataframe: [sampleName, class, sampleType, injectionOrder, batch]")
20 }
21 15
22 # sort data by injection order 16 data <- sort_by_injection_order(data)
23 data <- data[order(data[, "batch"],
24 data[, "injectionOrder"],
25 decreasing = FALSE
26 ), ]
27 17
28 # separate data into features, batch and group 18 # separate data into features, batch and group
29 feature_columns <- colnames(data)[!colnames(data) %in% required_columns] 19 feature_columns <- colnames(data)[!colnames(data) %in% required_columns]
30 features <- data[, feature_columns] 20 features <- data[, feature_columns]
31 group <- enumerate_groups(as.character(data$sampleType)) 21 group <- enumerate_groups(as.character(data$sampleType))
32 batch <- data$batch 22 batch <- data$batch
33 23
34 # run WaveICA 24 # run WaveICA
35 features <- WaveICA::WaveICA( 25 features <- recetox.waveica::waveica(
36 data = features, 26 data = features,
37 wf = get_wf(wavelet_filter, wavelet_length), 27 wf = get_wf(wavelet_filter, wavelet_length),
38 batch = batch, 28 batch = batch,
39 group = group, 29 group = group,
40 K = k, 30 K = k,
41 t = t, 31 t = t,
42 t2 = t2, 32 t2 = t2,
43 alpha = alpha 33 alpha = alpha
44 ) 34 )
45 35
46 data[, feature_columns] <- features$data_wave 36 data[, feature_columns] <- features
47 37
48 # remove blanks from dataset 38 # remove blanks from dataset
49 if (exclude_blanks) { 39 if (exclude_blanks) {
50 data <- exclude_group(data, group) 40 data <- exclude_group(data, group)
51 } 41 }
52 42
53 return(data) 43 return(data)
44 }
45
46
47 waveica_singlebatch <- function(data,
48 wavelet_filter,
49 wavelet_length,
50 k,
51 alpha,
52 cutoff,
53 exclude_blanks) {
54
55 # get input from the Galaxy, preprocess data
56 data <- read.csv(data, header = TRUE)
57
58 required_columns <- c("sampleName", "class", "sampleType", "injectionOrder")
59 optional_columns <- c("batch")
60 verify_input_dataframe(data, required_columns)
61
62 data <- sort_by_injection_order(data)
63
64 feature_columns <- colnames(data)[!colnames(data) %in% c(required_columns, optional_columns)]
65 features <- data[, feature_columns]
66 injection_order <- data$injectionOrder
67
68 # run WaveICA
69 features <- recetox.waveica::waveica_nonbatchwise(
70 data = features,
71 wf = get_wf(wavelet_filter, wavelet_length),
72 injection_order = injection_order,
73 K = k,
74 alpha = alpha,
75 cutoff = cutoff
76 )
77
78 data[, feature_columns] <- features
79
80 # remove blanks from dataset
81 if (exclude_blanks) {
82 data <- exclude_group(data, group)
83 }
84
85 return(data)
86 }
87
88
89 sort_by_injection_order <- function(data) {
90 if ("batch" %in% colnames(data)) {
91 data <- data[order(data[, "batch"],
92 data[, "injectionOrder"],
93 decreasing = FALSE
94 ), ]
95 } else {
96 data <- data[order(data[, "injectionOrder"],
97 decreasing = FALSE
98 ), ]
99 }
100 return(data)
101 }
102
103
104 verify_input_dataframe <- function(data, required_columns) {
105 if (anyNA(data)) {
106 stop("Error: dataframe cannot contain NULL values!
107 Make sure that your dataframe does not contain empty cells")
108 } else if (!all(required_columns %in% colnames(data))) {
109 stop("Error: missing metadata!
110 Make sure that the following columns are present in your dataframe: ", paste(required_columns, collapse = ", "))
111 }
54 } 112 }
55 113
56 114
57 # Match group labels with [blank/sample/qc] and enumerate them 115 # Match group labels with [blank/sample/qc] and enumerate them
58 enumerate_groups <- function(group) { 116 enumerate_groups <- function(group) {