/
MsExperiment.R
116 lines (103 loc) · 4.34 KB
/
MsExperiment.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
#' @rdname XcmsExperiment
setMethod("filterRt", "MsExperiment",
function(object, rt = numeric(), ...) {
message("Filter spectra")
filterSpectra(object, filterRt, rt = rt, ...)
})
#' @rdname XcmsExperiment
setMethod("filterMzRange", "MsExperiment",
function(object, mz = numeric(), msLevel. = uniqueMsLevels(object)) {
message("Filter spectra")
object@spectra <- filterMzRange(object@spectra, mz, msLevel.)
object
})
#' @rdname XcmsExperiment
setMethod("filterMz", "MsExperiment",
function(object, mz = numeric(), msLevel. = uniqueMsLevels(object)) {
filterMzRange(object, mz, msLevel.)
})
#' @rdname XcmsExperiment
setMethod("filterMsLevel", "MsExperiment",
function(object, msLevel. = uniqueMsLevels(object)) {
message("Filter spectra")
filterSpectra(object, filterMsLevel, msLevel. = msLevel.)
})
#' @rdname XcmsExperiment
setMethod("uniqueMsLevels", "MsExperiment", function(object) {
uniqueMsLevels(spectra(object))
})
#' @rdname XcmsExperiment
setMethod("filterFile", "MsExperiment", function(object,
file = integer(), ...) {
object[i = sort(unique(file)), ...]
})
#' @rdname profMat-xcmsSet
setMethod("profMat", "MsExperiment", function(object,
method = "bin",
step = 0.1,
baselevel = NULL,
basespace = NULL,
mzrange. = NULL,
fileIndex = seq_along(object),
chunkSize = 1L, msLevel = 1L,
BPPARAM = bpparam(), ...) {
.mse_profmat_chunks(object, msLevel = msLevel, method = method, step = step,
baselevel = baselevel, basespace = basespace,
mzrange. = mzrange., fileIndex = fileIndex,
chunkSize = chunkSize, BPPARAM = BPPARAM, ...)
})
################################################################################
## These functions below are needed to re-use code from the xcms package
## developed for OnDiskMSnExp/XCMSnExp objects for MsExperiment objects. They
## are NOT indended to go to the MsExperiment package as they do not make full
## use of the new data structure.
#' @rdname XcmsExperiment
setMethod("rtime", "MsExperiment", function(object) {
if (length(spectra(object)))
rtime(spectra(object))
else numeric()
})
#' @rdname XcmsExperiment
setMethod("fromFile", "MsExperiment", function(object) {
if (length(spectra(object))) {
.mse_check_spectra_sample_mapping(object)
object@sampleDataLinks[["spectra"]][, 1L]
} else integer()
})
#' @rdname XcmsExperiment
setMethod("fileNames", "MsExperiment", function(object) {
if (length(spectra(object)))
unique(dataOrigin(spectra(object)))
else character()
})
#' @rdname XcmsExperiment
setMethod("polarity", "MsExperiment", function(object) {
if (length(spectra(object)))
polarity(spectra(object))
else integer()
})
#' @rdname XcmsExperiment
setMethod(
"filterIsolationWindow", "MsExperiment", function(object, mz = numeric()) {
filterSpectra(object, filterIsolationWindow, mz = mz)
})
#' @rdname XcmsExperiment
setMethod(
"chromatogram", "MsExperiment",
function(object, rt = matrix(nrow = 0, ncol = 2),
mz = matrix(nrow = 0, ncol = 2), aggregationFun = "sum",
msLevel = 1L, isolationWindowTargetMz = NULL, chunkSize = 2L,
return.type = "MChromatograms", BPPARAM = bpparam()) {
if (!is.matrix(rt))
rt <- matrix(rt, ncol = 2L)
if (!is.matrix(mz))
mz <- matrix(mz, ncol = 2L)
if (nrow(mz) && !nrow(rt))
rt <- cbind(rep(-Inf, nrow(mz)), rep(Inf, nrow(mz)))
if (nrow(rt) && !nrow(mz))
mz <- cbind(rep(-Inf, nrow(rt)), rep(Inf, nrow(rt)))
.mse_chromatogram(
object, rt = rt, mz = mz, aggregationFun = aggregationFun,
msLevel = msLevel, isolationWindow = isolationWindowTargetMz,
chunkSize = chunkSize, BPPARAM = BPPARAM)
})