-
Notifications
You must be signed in to change notification settings - Fork 0
/
pre-treat.R
143 lines (118 loc) · 5.08 KB
/
pre-treat.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#' Pre-treatment of multiple ionisation modes
#' @rdname preTreatModes
#' @description Pre-treat both positive and negative ionisation modes for `Binalysis` and `MetaboProfile` classes.
#' @param processed_data an object of S4 class `Binalysis` or `MetaboProfile`
#' @param parameters an object of S4 class `AnalysisParameters` containing pre-treatment parameters
#' @param verbose print console output
#' @return An object of S4 class `Analysis`.
#' @examples
#' ## Retrieve file paths and sample information for example data
#' files <- metaboData::filePaths('FIE-HRMS','BdistachyonEcotypes')[1:2]
#'
#' info <- metaboData::runinfo('FIE-HRMS','BdistachyonEcotypes')[1:2,]
#'
#' ## Detect spectral binning parameters
#' bp <- binneR::detectParameters(files)
#'
#' ## Perform spectral binning
#' analysis <- binneR::binneRlyse(files,
#' info,
#' parameters = bp)
#'
#' ## Dectect the pre-treatment parameters
#' pre_treatment_parameters <- detectPretreatmentParameters(analysis)
#' metabolyseR::changeParameter(pre_treatment_parameters,'parallel') <- 'no'
#'
#' ## Perform pre-treatment
#' pre_treated_data <- preTreatModes(analysis,
#' pre_treatment_parameters)
#' @export
setGeneric("preTreatModes", function(processed_data,parameters,verbose = TRUE) {
standardGeneric("preTreatModes")
})
#' @rdname preTreatModes
#' @importFrom binneR binnedData
setMethod('preTreatModes',signature = 'Binalysis',
function(processed_data,parameters,verbose = TRUE){
binned_data <- binnedData(processed_data)
sample_info <- binneR::sampleInfo(processed_data)
preTreated <- preTreat(binned_data,sample_info,parameters,verbose = verbose)
return(preTreated)
})
#' @rdname preTreatModes
setMethod('preTreatModes',signature = 'MetaboProfile',
function(processed_data,parameters,verbose = TRUE){
sample_info <- profilePro::sampleInfo(processed_data)
processed_data <- processedData(processed_data)
preTreated <- preTreat(processed_data,
sample_info,
parameters,
verbose = verbose)
return(preTreated)
})
#' @importFrom utils packageVersion
#' @importFrom purrr map
#' @importFrom methods new
#' @importFrom metabolyseR dat sinfo metabolyse
#' @importFrom metabolyseR analysisData analysisParameters parameters parameters<-
#' @importFrom crayon blue red green
#' @importFrom cli console_width
#' @importFrom lubridate seconds_to_period
#' @importFrom dplyr bind_cols
#' @importFrom stringr str_c
preTreat <- function(raw_data,sample_info,parameters,verbose = TRUE){
p <- analysisParameters('pre-treatment')
parameters(p,'pre-treatment') <- parameters(parameters,'pre-treatment')
if (verbose == TRUE) {
analysisStart <- date()
startTime <- proc.time()
version <- packageVersion('metabolyseR') %>%
as.character()
cat('\n',blue('metabolyseR'),' ',red(str_c('v',version)),' ',analysisStart,'\n',sep = '')
cat(rep('_',console_width()),'\n',sep = '')
print(p)
cat(rep('_',console_width()),'\n\n',sep = '')
}
names(raw_data)[names(raw_data) == 'n'] <- 'Negative mode'
names(raw_data)[names(raw_data) == 'p'] <- 'Positive mode'
pre_treated <- names(raw_data) %>%
map(~{
m <- .
d <- raw_data[[m]]
if (verbose == TRUE) {
startTime <- proc.time()
cat(blue(m),cli::symbol$continue,'\r',sep = '')
}
res <- metabolyse(d,info = sample_info,parameters = p,verbose = FALSE)
if (verbose == TRUE) {
endTime <- proc.time()
elapsed <- {endTime - startTime} %>%
.[3] %>%
round(1) %>%
seconds_to_period() %>%
str_c('[',.,']')
cat(blue(m),' \t\t',green(cli::symbol$tick),' ',elapsed,'\n',sep = '')
}
return(res)
})
pre_treated_data <- pre_treated %>%
map(dat,type = 'pre-treated') %>%
bind_cols()
pre_treated_info <- sinfo(pre_treated[[1]],type = 'pre-treated')
all <- new('Analysis')
all@log <- list(packageVersion = packageVersion('metabolyseR'),analysis = date(),verbose = FALSE)
all@parameters <- parameters
raw(all) <- analysisData(bind_cols(raw_data), sample_info)
preTreated(all) <- analysisData(pre_treated_data,pre_treated_info)
if (verbose == TRUE) {
endTime <- proc.time()
elapsed <- {endTime - startTime} %>%
.[3] %>%
round(1) %>%
seconds_to_period() %>%
str_c('[',.,']')
cat(rep('_',console_width()),'\n',sep = '')
cat('\n',green('Complete! '),elapsed,'\n\n',sep = '')
}
return(all)
}