View source: R/functions-XChromatogram.R
XChromatograms | R Documentation |
The XChromatogram
object allows to store chromatographic data (e.g.
an extracted ion chromatogram) along with identified chromatographic peaks
within that data. The object inherits all functions from the Chromatogram()
object in the MSnbase
package.
Multiple XChromatogram
objects can be stored in a XChromatograms
object.
This class extends MChromatograms()
from the MSnbase
package and allows
thus to arrange chromatograms in a matrix-like structure, columns
representing samples and rows m/z-retention time ranges.
All functions are described (grouped into topic-related sections) after the Arguments section.
XChromatograms(data, phenoData, featureData, chromPeaks, chromPeakData, ...)
XChromatogram(
rtime = numeric(),
intensity = numeric(),
mz = c(NA_real_, NA_real_),
filterMz = c(NA_real_, NA_real_),
precursorMz = c(NA_real_, NA_real_),
productMz = c(NA_real_, NA_real_),
fromFile = integer(),
aggregationFun = character(),
msLevel = 1L,
chromPeaks,
chromPeakData
)
## S4 method for signature 'XChromatogram'
show(object)
## S4 method for signature 'XChromatogram'
chromPeaks(
object,
rt = numeric(),
mz = numeric(),
ppm = 0,
type = c("any", "within", "apex_within"),
msLevel
)
## S4 replacement method for signature 'XChromatogram'
chromPeaks(object) <- value
## S4 method for signature 'XChromatogram,ANY'
plot(
x,
col = "#00000060",
lty = 1,
type = "l",
xlab = "retention time",
ylab = "intensity",
main = NULL,
peakType = c("polygon", "point", "rectangle", "none"),
peakCol = "#00000060",
peakBg = "#00000020",
peakPch = 1,
...
)
## S4 method for signature 'XChromatogram'
filterMz(object, mz, ...)
## S4 method for signature 'XChromatogram'
filterRt(object, rt, ...)
## S4 method for signature 'XChromatogram'
hasChromPeaks(object)
## S4 method for signature 'XChromatogram'
dropFilledChromPeaks(object)
## S4 method for signature 'XChromatogram'
chromPeakData(object)
## S4 replacement method for signature 'XChromatogram'
chromPeakData(object) <- value
## S4 method for signature 'XChromatogram,MergeNeighboringPeaksParam'
refineChromPeaks(object, param = MergeNeighboringPeaksParam())
## S4 method for signature 'XChromatogram'
filterChromPeaks(object, method = c("keepTop"), ...)
## S4 method for signature 'XChromatogram'
transformIntensity(object, FUN = identity)
## S4 method for signature 'XChromatograms'
show(object)
## S4 method for signature 'XChromatograms'
hasChromPeaks(object)
## S4 method for signature 'XChromatograms'
hasFilledChromPeaks(object)
## S4 method for signature 'XChromatograms'
chromPeaks(
object,
rt = numeric(),
mz = numeric(),
ppm = 0,
type = c("any", "within", "apex_within"),
msLevel
)
## S4 method for signature 'XChromatograms'
chromPeakData(object)
## S4 method for signature 'XChromatograms'
filterMz(object, mz, ...)
## S4 method for signature 'XChromatograms'
filterRt(object, rt, ...)
## S4 method for signature 'XChromatograms,ANY'
plot(
x,
col = "#00000060",
lty = 1,
type = "l",
xlab = "retention time",
ylab = "intensity",
main = NULL,
peakType = c("polygon", "point", "rectangle", "none"),
peakCol = "#00000060",
peakBg = "#00000020",
peakPch = 1,
...
)
## S4 method for signature 'XChromatograms'
processHistory(object, fileIndex, type)
## S4 method for signature 'XChromatograms'
hasFeatures(object, ...)
## S4 method for signature 'XChromatograms'
dropFeatureDefinitions(object, ...)
## S4 method for signature 'XChromatograms,PeakDensityParam'
groupChromPeaks(object, param)
## S4 method for signature 'XChromatograms'
featureDefinitions(
object,
mz = numeric(),
rt = numeric(),
ppm = 0,
type = c("any", "within", "apex_within")
)
## S4 method for signature 'XChromatograms,ANY,ANY,ANY'
x[i, j, drop = TRUE]
## S4 method for signature 'XChromatograms'
featureValues(
object,
method = c("medret", "maxint", "sum"),
value = "into",
intensity = "into",
missing = NA,
...
)
## S4 method for signature 'XChromatograms'
plotChromPeakDensity(
object,
param,
col = "#00000060",
xlab = "retention time",
main = NULL,
peakType = c("polygon", "point", "rectangle", "none"),
peakCol = "#00000060",
peakBg = "#00000020",
peakPch = 1,
simulate = TRUE,
...
)
## S4 method for signature 'XChromatograms'
dropFilledChromPeaks(object)
## S4 method for signature 'XChromatograms,MergeNeighboringPeaksParam'
refineChromPeaks(object, param = MergeNeighboringPeaksParam())
## S4 method for signature 'XChromatograms'
filterChromPeaks(object, method = c("keepTop"), ...)
## S4 method for signature 'XChromatograms'
transformIntensity(object, FUN = identity)
data |
For |
phenoData |
For |
featureData |
For |
chromPeaks |
For |
chromPeakData |
For |
... |
For |
rtime |
For |
intensity |
For For `featureValues`: `character(1)` specifying the name of the column in `chromPeaks(object)` containing the intensity value of the peak that should be used for the `method = "maxint"` conflict resolution if. |
mz |
For |
filterMz |
For |
precursorMz |
For |
productMz |
For |
fromFile |
For |
aggregationFun |
For |
msLevel |
For |
object |
An |
rt |
For |
ppm |
For |
type |
For For `plot`: what type of plot should be used for the chromatogram (such as `"l"` for lines, `"p"` for points etc), see help of [plot()] in the `graphics` package for more details. For `processHistory`: restrict returned processing steps to specific types. Use [processHistoryTypes()] to list all supported values. |
value |
For For `featureValues`: `character(1)` specifying the name of the column in `chromPeaks(object)` that should be returned or `"index"` (default) to return the index of the peak associated with the feature in each sample. To return the integrated peak area instead of the index use `value = "into"`. |
x |
For |
col |
For |
lty |
For |
xlab |
For |
ylab |
For |
main |
For |
peakType |
For |
peakCol |
For |
peakBg |
For |
peakPch |
For |
param |
For |
method |
For |
FUN |
For |
fileIndex |
For |
i |
For |
j |
For |
drop |
For |
missing |
For |
simulate |
For |
See help of the individual functions.
Objects can be created with the contructor function XChromatogram
and
XChromatograms
, respectively. Also, they can be coerced from
Chromatogram or MChromatograms()
objects using
as(object, "XChromatogram")
or as(object, "XChromatograms")
.
Besides classical subsetting with [
specific filter operations on
MChromatograms()
and XChromatograms
objects are available. See
filterColumnsIntensityAbove()
for more details.
[
allows to subset a XChromatograms
object by row (i
) and column
(j
), with i
and j
being of type integer
. The featureDefinitions
will also be subsetted accordingly and the peakidx
column updated.
filterMz
filters the chromatographic peaks within an XChromatogram
or
XChromatograms
, if a column "mz"
is present in the chromPeaks
matrix.
This would be the case if the XChromatogram
was extracted from an
XCMSnExp()
object with the chromatogram()
function. All
chromatographic peaks with their m/z within the m/z range defined by mz
will be retained. Also feature definitions (if present) will be subset
accordingly. The function returns a filtered XChromatogram
or
XChromatograms
object.
filterRt
filters chromatogram(s) by the provided retention time range.
All eventually present chromatographic peaks with their apex within the
retention time range specified with rt
will be retained. Also feature
definitions, if present, will be filtered accordingly. The function
returns a filtered XChromatogram
or XChromatograms
object.
See also help of Chromatogram in the MSnbase
package for general
information and data access. The methods listed here are specific for
XChromatogram
and XChromatograms
objects.
chromPeaks
, chromPeaks<-
: extract or set the matrix with the
chromatographic peak definitions. Parameter rt
allows to specify a
retention time range for which peaks should be returned along with
parameter type
that defines how overlapping is defined (parameter
description for details). For XChromatogram
objects the function returns
a matrix
with columns "rt"
(retention time of the peak apex),
"rtmin"
(the lower peak boundary), "rtmax"
(the upper peak boundary),
"into"
(the ingegrated peak signal/area of the peak), "maxo"
(the
maximum instensity of the peak and "sn"
(the signal to noise ratio).
Note that, depending on the peak detection algorithm, the matrix may
contain additional columns.
For XChromatograms
objects the matrix
contains also columns "row"
and "column"
specifying in which chromatogram of object
the peak was
identified. Chromatographic peaks are ordered by row.
chromPeakData
, chromPeakData<-
: extract or set the DataFrame()
with
optional chromatographic peak annotations.
hasChromPeaks
: infer whether a XChromatogram
(or XChromatograms
)
has chromatographic peaks. For XChromatogram
: returns a logical(1)
,
for XChromatograms
: returns a matrix
, same dimensions than object
with either TRUE
or FALSE
if chromatographic peaks are available in
the chromatogram at the respective position.
hasFilledChromPeaks
: whether a XChromatogram
(or a XChromatogram
in
a XChromatograms
) has filled-in chromatographic peaks.
For XChromatogram
: returns a logical(1)
,
for XChromatograms
: returns a matrix
, same dimensions than object
with either TRUE
or FALSE
if chromatographic peaks are available in
the chromatogram at the respective position.
dropFilledChromPeaks
: removes filled-in chromatographic peaks. See
dropFilledChromPeaks()
help for XCMSnExp()
objects for more
information.
hasFeatures
: for XChromatograms
objects only: if correspondence
analysis has been performed and m/z-rt feature definitions are present.
Returns a logical(1)
.
dropFeatureDefinitions
: for XChrmomatograms
objects only: delete any
correspondence analysis results (and related process history).
featureDefinitions
: for XChromatograms
objects only. Extract the
results from the correspondence analysis (performed with
groupChromPeaks
). Returns a DataFrame
with the properties of the
defined m/z-rt features: their m/z and retention time range. Columns
peakidx
and row
contain the index of the chromatographic peaks in the
chromPeaks
matrix associated with the feature and the row in the
XChromatograms
object in which the feature was defined. Similar to the
chromPeaks
method it is possible to filter the returned feature matrix
with the mz
, rt
and ppm
parameters.
featureValues
: for XChromatograms
objects only. Extract the abundance
estimates for the individuals features. Note that by default (with
parameter value = "index"
a matrix
of indices of the peaks in the
chromPeaks
matrix associated to the feature is returned. To extract the
integrated peak area use value = "into"
. The function returns a matrix
with one row per feature (in featureDefinitions
) and each column being
a sample (i.e. column of object
). For features without a peak associated
in a certain sample NA
is returned. This can be changed with the
missing
argument of the function.
filterChromPeaks
: filters chromatographic peaks in object
depending
on parameter method
and method-specific parameters passed as additional
arguments with ...
. Available methods are:
method = "keepTop"
: keep top n
(default n = 1L
) peaks in each
chromatogram ordered by column order
(defaults to order = "maxo"
).
Parameter decreasing
(default decreasing = TRUE
) can be used to
order peaks in descending (decreasing = TRUE
) or ascending (
decreasing = FALSE
) order to keep the top n
peaks with largest or
smallest values, respectively.
processHistory
: returns a list
of ProcessHistory objects representing
the individual performed processing steps. Optional parameters type
and
fileIndex
allow to further specify which processing steps to return.
transformIntensity
: transforms the intensity values of the chromatograms
with provided function FUN
. See transformIntensity()
in the MSnbase
package for details. For XChromatogram
and XChromatograms
in addition
to the intensity values also columns "into"
and "maxo"
in the object's
chromPeaks
matrix are transformed by the same function.
plot
draws the chromatogram and highlights in addition any
chromatographic peaks present in the XChromatogram
or XChromatograms
(unless peakType = "none"
was specified). To draw peaks in different
colors a vector of color definitions with length equal to
nrow(chromPeaks(x))
has to be submitted with peakCol
and/or peakBg
defining one color for each peak (in the order as peaks are in
chromPeaks(x))
. For base peak chromatograms or total ion chromatograms
it might be better to set peakType = "none"
to avoid generating busy
plots.
plotChromPeakDensity
: visualize peak density-based correspondence
analysis results. See section Correspondence analysis for more details.
See findChromPeaks-Chromatogram-CentWaveParam for information.
After chromatographic peak detection it is also possible to refine
identified chromatographic peaks with the refineChromPeaks
method (e.g. to
reduce peak detection artifacts). Currently, only peak refinement using the
merge neighboring peaks method is available (see
MergeNeighboringPeaksParam()
for a detailed description of the approach.
Identified chromatographic peaks in an XChromatograms
object can be grouped
into features with the groupChromPeaks
function. Currently, such a
correspondence analysis can be performed with the peak density method
(see groupChromPeaks for more details) specifying the algorithm settings
with a PeakDensityParam()
object. A correspondence analysis is performed
separately for each row in the XChromatograms
object grouping
chromatographic peaks across samples (columns).
The analysis results are stored in the returned XChromatograms
object
and can be accessed with the featureDefinitions
method which returns a
DataFrame
with one row for each feature. Column "row"
specifies in
which row of the XChromatograms
object the feature was identified.
The plotChromPeakDensity
method can be used to visualize peak density
correspondence results, or to simulate a peak density correspondence
analysis on chromatographic data. The resulting plot consists of two panels,
the upper panel showing the chromatographic data as well as the identified
chromatographic peaks, the lower panel the distribution of peaks (the peak
density) along the retention time axis. This plot shows each peak as a point
with it's peak's retention time on the x-axis, and the sample in which it
was found on the y-axis. The distribution of peaks along the retention time
axis is visualized with a density estimate. Grouped chromatographic peaks
are indicated with grey shaded rectangles. Parameter simulate
allows to
define whether the correspondence analysis should be simulated (
simulate=TRUE
, based on the available data and the provided
PeakDensityParam()
parameter class) or not (simulate=FALSE
). For the
latter it is assumed that a correspondence analysis has been performed with
the peak density method on the object
.
See examples below.
Abundance estimates for each feature can be extracted with the
featureValues
function using parameter value = "into"
to extract the
integrated peak area for each feature. The result is a matrix
, columns
being samples and rows features.
Highlighting the peak area(s) in an XChromatogram
or XChromatograms
object (plot
with peakType = "polygon"
) draws a polygon representing
the displayed chromatogram from the peak's minimal retention time to the
maximal retention time. If the XChromatograms
was extracted from an
XCMSnExp()
object with the chromatogram()
function this might not
represent the actual identified peak area if the m/z range that was
used to extract the chromatogram was larger than the peak's m/z.
Johannes Rainer
findChromPeaks-centWave for peak
detection on MChromatograms()
objects.
## ---- Creation of XChromatograms ----
##
## Create a XChromatograms from Chromatogram objects
library(MSnbase)
dta <- list(Chromatogram(rtime = 1:7, c(3, 4, 6, 12, 8, 3, 2)),
Chromatogram(1:10, c(4, 6, 3, 4, 7, 13, 43, 34, 23, 9)))
## Create an XChromatograms without peak data
xchrs <- XChromatograms(dta)
## Create an XChromatograms with peaks data
pks <- list(matrix(c(4, 2, 5, 30, 12, NA), nrow = 1,
dimnames = list(NULL, c("rt", "rtmin", "rtmax", "into", "maxo", "sn"))),
NULL)
xchrs <- XChromatograms(dta, chromPeaks = pks)
## Create an XChromatograms from XChromatogram objects
dta <- lapply(dta, as, "XChromatogram")
chromPeaks(dta[[1]]) <- pks[[1]]
xchrs <- XChromatograms(dta, nrow = 1)
hasChromPeaks(xchrs)
## Loading a test data set with identified chromatographic peaks
faahko_sub <- loadXcmsData("faahko_sub2")
## Subset the dataset to the first and third file.
xod_sub <- filterFile(faahko_sub, file = c(1, 3))
od <- as(xod_sub, "MsExperiment")
## Extract chromatograms for a m/z - retention time slice
chrs <- chromatogram(od, mz = 344, rt = c(2500, 3500))
chrs
## --------------------------------------------------- ##
## Chromatographic peak detection ##
## --------------------------------------------------- ##
## Perform peak detection using CentWave
xchrs <- findChromPeaks(chrs, param = CentWaveParam())
xchrs
## Do we have chromatographic peaks?
hasChromPeaks(xchrs)
## Process history
processHistory(xchrs)
## The chromatographic peaks, columns "row" and "column" provide information
## in which sample the peak was identified.
chromPeaks(xchrs)
## Spectifically extract chromatographic peaks for one sample/chromatogram
chromPeaks(xchrs[1, 2])
## Plot the results
plot(xchrs)
## Plot the results using a different color for each sample
sample_colors <- c("#ff000040", "#00ff0040", "#0000ff40")
cols <- sample_colors[chromPeaks(xchrs)[, "column"]]
plot(xchrs, col = sample_colors, peakBg = cols)
## Indicate the peaks with a rectangle
plot(xchrs, col = sample_colors, peakCol = cols, peakType = "rectangle",
peakBg = NA)
## --------------------------------------------------- ##
## Correspondence analysis ##
## --------------------------------------------------- ##
## Group chromatographic peaks across samples
prm <- PeakDensityParam(sampleGroup = rep(1, 2))
res <- groupChromPeaks(xchrs, param = prm)
hasFeatures(res)
featureDefinitions(res)
## Plot the correspondence results. Use simulate = FALSE to show the
## actual results. Grouped chromatographic peaks are indicated with
## grey shaded rectangles.
plotChromPeakDensity(res, simulate = FALSE)
## Simulate a correspondence analysis based on different settings. Larger
## bw will increase the smoothing of the density estimate hence grouping
## chromatographic peaks that are more apart on the retention time axis.
prm <- PeakDensityParam(sampleGroup = rep(1, 3), bw = 60)
plotChromPeakDensity(res, param = prm)
## Delete the identified feature definitions
res <- dropFeatureDefinitions(res)
hasFeatures(res)
library(MSnbase)
## Create a XChromatogram object
pks <- matrix(nrow = 1, ncol = 6)
colnames(pks) <- c("rt", "rtmin", "rtmax", "into", "maxo", "sn")
pks[, "rtmin"] <- 2
pks[, "rtmax"] <- 9
pks[, "rt"] <- 4
pks[, "maxo"] <- 19
pks[, "into"] <- 93
xchr <- XChromatogram(rtime = 1:10,
intensity = c(4, 8, 14, 19, 18, 12, 9, 8, 5, 2),
chromPeaks = pks)
xchr
## Add arbitrary peak annotations
df <- DataFrame(peak_id = c("a"))
xchr <- XChromatogram(rtime = 1:10,
intensity = c(4, 8, 14, 19, 18, 12, 9, 8, 5, 2),
chromPeaks = pks, chromPeakData = df)
xchr
chromPeakData(xchr)
## Extract the chromatographic peaks
chromPeaks(xchr)
## Plotting of a single XChromatogram object
## o Don't highlight chromatographic peaks
plot(xchr, peakType = "none")
## o Indicate peaks with a polygon
plot(xchr)
## Add a second peak to the data.
pks <- rbind(chromPeaks(xchr), c(7, 7, 10, NA, 15, NA))
chromPeaks(xchr) <- pks
## Plot the peaks in different colors
plot(xchr, peakCol = c("#ff000080", "#0000ff80"),
peakBg = c("#ff000020", "#0000ff20"))
## Indicate the peaks as rectangles
plot(xchr, peakCol = c("#ff000060", "#0000ff60"), peakBg = NA,
peakType = "rectangle")
## Filter the XChromatogram by retention time
xchr_sub <- filterRt(xchr, rt = c(4, 6))
xchr_sub
plot(xchr_sub)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.