annotate waveica_wrapper.R @ 2:d08deef1eb44 draft

"planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
author recetox
date Fri, 12 Nov 2021 09:14:04 +0000
parents 2bcfd5b450bb
children 8b55efc7d117
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
1 waveica <- function(data,
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
2 wavelet_filter,
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
3 wavelet_length,
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
4 k,
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
5 t,
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
6 t2,
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
7 alpha,
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
8 exclude_blanks) {
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
9
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
10 # get input from the Galaxy, preprocess data
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
11 data <- read.csv(data, header = TRUE)
0
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
12
2
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
13 required_columns <- c("sampleName", "class", "sampleType", "injectionOrder", "batch")
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
14 if (anyNA(data)) {
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
15 stop("Error: dataframe cannot contain NULL values!
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
16 Make sure that your dataframe does not contain empty cells")
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
17 } else if (!all(required_columns %in% colnames(data))) {
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
18 stop("Error: missing metadata!
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
19 Make sure that the following columns are present in your dataframe: [sampleName, class, sampleType, injectionOrder, batch]")
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
20 }
1
2bcfd5b450bb "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit c52cdb1ab3c4e65ce3b55e29739f16abb8bfd6eb"
recetox
parents: 0
diff changeset
21
2
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
22 # sort data by injection order
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
23 data <- data[order(data[, "batch"],
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
24 data[, "injectionOrder"],
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
25 decreasing = FALSE
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
26 ), ]
0
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
27
2
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
28 # separate data into features, batch and group
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
29 feature_columns <- colnames(data)[!colnames(data) %in% required_columns]
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
30 features <- data[, feature_columns]
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
31 group <- enumerate_groups(as.character(data$sampleType))
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
32 batch <- data$batch
0
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
33
2
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
34 # run WaveICA
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
35 features <- WaveICA::WaveICA(
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
36 data = features,
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
37 wf = get_wf(wavelet_filter, wavelet_length),
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
38 batch = batch,
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
39 group = group,
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
40 K = k,
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
41 t = t,
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
42 t2 = t2,
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
43 alpha = alpha
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
44 )
0
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
45
2
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
46 data[, feature_columns] <- features$data_wave
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
47
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
48 # remove blanks from dataset
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
49 if (exclude_blanks) {
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
50 data <- exclude_group(data, group)
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
51 }
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
52
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
53 return(data)
0
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
54 }
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
55
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
56
1
2bcfd5b450bb "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit c52cdb1ab3c4e65ce3b55e29739f16abb8bfd6eb"
recetox
parents: 0
diff changeset
57 # Match group labels with [blank/sample/qc] and enumerate them
2
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
58 enumerate_groups <- function(group) {
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
59 group[grepl("blank", tolower(group))] <- 0
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
60 group[grepl("sample", tolower(group))] <- 1
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
61 group[grepl("qc", tolower(group))] <- 2
0
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
62
2
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
63 return(group)
0
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
64 }
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
65
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
66
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
67 # Create appropriate input for R wavelets function
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
68 get_wf <- function(wavelet_filter, wavelet_length) {
2
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
69 wf <- paste(wavelet_filter, wavelet_length, sep = "")
0
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
70
2
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
71 # exception to the wavelet function
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
72 if (wf == "d2") {
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
73 wf <- "haar"
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
74 }
0
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
75
2
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
76 return(wf)
0
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
77 }
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
78
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
79
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
80 # Exclude blanks from a dataframe
2
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
81 exclude_group <- function(data, group) {
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
82 row_idx_to_exclude <- which(group %in% 0)
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
83 if (length(row_idx_to_exclude) > 0) {
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
84 data_without_blanks <- data[-c(row_idx_to_exclude), ]
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
85 cat("Blank samples have been excluded from the dataframe.\n")
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
86 return(data_without_blanks)
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
87 } else {
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
88 return(data)
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
89 }
0
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
90 }
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
91
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
92
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
93 # Store output of WaveICA in a tsv file
2
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
94 store_data <- function(data, output) {
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
95 write.table(data, file = output, sep = "\t", row.names = FALSE, quote = FALSE)
d08deef1eb44 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit e33ef984e78721ed37d825c6672795a539a461e1"
recetox
parents: 1
diff changeset
96 cat("Normalization has been completed.\n")
0
2461d20911c9 "planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/waveica commit 91376ea7a6736351b0cc086ca1bc6c553fdcda97"
recetox
parents:
diff changeset
97 }