From d28cf9c03871c0e6a9c0d6afe10b25bcd0e14ac7 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Thu, 7 Mar 2024 11:18:57 +0100 Subject: [PATCH 01/18] LamaParama Implementation --- DESCRIPTION | 5 +- NAMESPACE | 9 +- R/AllGenerics.R | 80 ++++++++- R/DataClasses.R | 35 ++++ R/XcmsExperiment.R | 54 ++++++ R/do_adjustRtime-functions.R | 168 ++++++++++++++++++ R/functions-Params.R | 33 ++++ inst/NEWS | 7 + man/adjustRtime.Rd | 94 +++++++++- man/do_adjustRtime_peakGroups.Rd | 6 +- tests/testthat.R | 10 ++ tests/testthat/test_XcmsExperiment.R | 12 +- .../testthat/test_do_adjustRtime-functions.R | 87 +++++++++ 13 files changed, 576 insertions(+), 24 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 96445f886..16b9837f8 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,5 +1,5 @@ Package: xcms -Version: 4.1.9 +Version: 4.1.10 Title: LC-MS and GC-MS Data Analysis Description: Framework for processing and visualization of chromatographically separated and single-spectra mass spectral data. Imports from AIA/ANDI NetCDF, @@ -81,7 +81,8 @@ Suggests: MALDIquant, pheatmap, MsBackendMgf, - signal + signal, + mgcv Enhances: Rgraphviz, rgl, diff --git a/NAMESPACE b/NAMESPACE index aa3563bf3..392d85214 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -54,7 +54,7 @@ importFrom("stats", "aov", "approx", "convolve", "cor", "deriv3", "dist", "fft", "fitted", "lm", "loess", "lsfit", "median", "na.omit", "nextn", "nls", "predict", "pt", "quantile", "runmed", "sd", "stepfun", "weighted.mean", "density", "approxfun", - "rnorm", "runif", "dbeta") + "rnorm", "runif", "dbeta", "resid") importFrom("utils", "flush.console", "head", "object.size", "packageVersion", "read.csv", "tail", "write.csv", "write.table") @@ -259,7 +259,8 @@ export( "groupOverlaps", "estimatePrecursorIntensity", "featureArea", - "loadXcmsData" + "loadXcmsData", + "matchLamasChromPeaks" ) ## New analysis methods @@ -283,6 +284,7 @@ exportClasses( "MzClustParam", "NearestPeaksParam", "PeakGroupsParam", + "LamaParama", "ObiwarpParam", "GenericParam", "FillChromPeaksParam", @@ -452,6 +454,7 @@ export("CentWaveParam", "MzClustParam", "NearestPeaksParam", "PeakGroupsParam", + "LamaParama", "ObiwarpParam", "GenericParam", "FillChromPeaksParam", @@ -600,7 +603,7 @@ exportMethods("storeResults") ## filtering features things importFrom("MetaboCoreUtils", "rowRsd", "rowDratio", "rowPercentMissing", - "rowBlank") + "rowBlank", "mclosest") export("RsdFilter") export("DratioFilter") export("PercentMissingFilter") diff --git a/R/AllGenerics.R b/R/AllGenerics.R index b9cd7618f..b463b1a61 100644 --- a/R/AllGenerics.R +++ b/R/AllGenerics.R @@ -12,14 +12,14 @@ setGeneric("addParams<-", function(object, value) standardGeneric("addParams<-") setGeneric("addProcessHistory", function(object, ...) standardGeneric("addProcessHistory")) -#' @aliases adjustRtime ObiwarpParam-class PeakGroupsParam-class +#' @aliases adjustRtime ObiwarpParam-class PeakGroupsParam-class LamaParama-class #' #' @title Alignment: Retention time correction methods. #' #' @description #' #' The `adjustRtime` method(s) perform retention time correction (alignment) -#' between chromatograms of different samples. Alignment is performed by defaul +#' between chromatograms of different samples/dataset. Alignment is performed by default #' on MS level 1 data. Retention times of spectra from other MS levels, if #' present, are subsequently adjusted based on the adjusted retention times #' of the MS1 spectra. Note that calling `adjustRtime` on a *xcms* result object @@ -40,7 +40,7 @@ setGeneric("addProcessHistory", function(object, ...) #' The alignment is performed directly on the [profile-matrix] and can hence #' be performed independently of the peak detection or peak grouping. #' -#' - `PeakGroupsParam`: performs retention time correctoin based on the +#' - `PeakGroupsParam`: performs retention time correction based on the #' alignment of features defined in all/most samples (corresponding to #' *house keeping compounds* or marker compounds) (Smith 2006). First the #' retention time deviation of these features is described by fitting either a @@ -60,6 +60,34 @@ setGeneric("addProcessHistory", function(object, ...) #' in `param`. See also [do_adjustRtime_peakGroups()] for the core API #' function. #' +#' - `LamaParama`: This function performs retention time correction by aligning +#' chromatographic data to an external reference dataset. The process +#' involves identifying and aligning peaks within the experimental +#' chromatographic data, represented as an `XcmsExperiment` object, to a +#' predefined set of landmark features called "lamas". These landmark features +#' are characterized by their mass-to-charge ratio (m/z) and retention time. +#' +#' The alignment algorithm matches chromatographic peaks from the experimental +#' data to the lamas, fitting a model based on this match to adjust their +#' retention times and minimize discrepancies. This adjustment is performed +#' file by file. Adjustable parameters such as `ppm`, `tolerance`, and +#' `toleranceRt` define acceptable deviations during the matching process. +#' It's crucial to note that only lamas and chromatographic peaks exhibiting a +#' one-to-one mapping are considered when estimating retention time shifts. If +#' a file has no ChromPeaks matching with lamas, no adjustment will be +#' performed, and the file will be returned as-is. Users can evaluate this +#' matching, for example, by checking the number of matches and ranges of the +#' matching ChromPeaks, by first running `[matchLamasChromPeaks()]`. +#' +#' Different warping methods are available; users can choose to fit a loess +#' (`method = "loess"`, the default) or a gam (`method = "gam"`) between the +#' reference data points and observed matching ChromPeaks. Additional +#' parameters such as `span`, `weight`, `outlier_tolerance`, `zeroWeight`, +#' and `bs` are specific to these models. These parameters offer flexibility +#' in fine-tuning how the matching chromatographic peaks are fitted to the +#' lamas, thereby generating a model to align the overall retention time for +#' a single file. +#' #' @section Subset-based alignment: #' #' All alignment methods allow to perform the retention time correction on a @@ -91,6 +119,10 @@ setGeneric("addProcessHistory", function(object, ...) #' @param BPPARAM parallel processing setup. Defaults to `BPPARAM = bpparam()`. #' See [bpparam()] for details. #' +#' @param bs For `LamaParama`: `character(1)` defining the GAM moothing method. +#' (defaults to thin plate; NB: B- and P-splines have been shown to produce +#' artefacts). +#' #' @param centerSample \code{integer(1)} defining the index of the center sample #' in the experiment. It defaults to #' \code{floor(median(1:length(fileNames(object))))}. Note that if @@ -151,9 +183,16 @@ setGeneric("addProcessHistory", function(object, ...) #' @param initPenalty For `ObiwarpParam`: `numeric(1)` defining the penalty for #' initiating an alignment (for local alignment only). #' +#' @param lamas For `LamaParama`: `matrix` or `data.frame` with the m/z and +#' retention times values of features (as first and second column) from the +#' external dataset on which the alignment will be based on. +#' #' @param localAlignment For `ObiwarpParam`: `logical(1)` whether a local #' alignment should be performed instead of the default global alignment. #' +#' @param method For `LamaParama`:`character(1)` with the type of warping. +#' Either `method = "gam"` or `method = "loess"` (default). +#' #' @param minFraction For `PeakGroupsParam`: `numeric(1)` between 0 and 1 #' defining the minimum required proportion of samples in which peaks for #' the peak group were identified. Peak groups passing this criteria will @@ -171,6 +210,12 @@ setGeneric("addProcessHistory", function(object, ...) #' @param object For `adjustRtime`: an [OnDiskMSnExp()], [XCMSnExp()], #' [MsExperiment()] or [XcmsExperiment()] object. #' +#' @param outlierTolerance For `LamaParama`: `numeric(1)` defining the settings +#' for outlier removal during the fitting. By default +#' (with `outlierTolerance = 3`), all data points with absolute residuals +#' larger than 3 times the mean absolute residual of all data points from +#' the first, initial fit, are removed from the final model fit. +#' #' @param param The parameter object defining the alignment method (and its #' setting). #' @@ -180,6 +225,10 @@ setGeneric("addProcessHistory", function(object, ...) #' feature/peak group. The `adjustRtimePeakGroups` method is used by #' default to determine this matrix on the provided `object`. #' +#' @param ppm For `LamaParama`: `numeric(1)` defining the m/z-relative maximal +#' allowed difference in m/z between `lamas` and chromatographic peaks. Used +#' for the mapping of identified chromatographic peaks and lamas. +#' #' @param response For `ObiwarpParam`: `numeric(1)` defining the #' *responsiveness* of warping with `response = 0` giving linear warping on #' start and end points and `response = 100` warping using all bijective @@ -189,9 +238,9 @@ setGeneric("addProcessHistory", function(object, ...) #' be used to interpolate corrected retention times for all peak groups. #' Can be either `"loess"` or `"linear"`. #' -#' @param span For `PeakGroupsParam`: `numeric(1)` defining the degree of -#' smoothing (if `smooth = "loess"`). This parameter is passed to the -#' internal call to [loess()]. +#' @param span For `PeakGroupsParam` and `LamaParama`: `numeric(1)` defining +#' the degree of smoothing (if `smooth = "loess"` or `method = "loess"`). +#' This parameter is passed to the internal call to [loess()]. #' #' @param subset For `ObiwarpParam` and `PeakGroupsParam`: `integer` with the #' indices of samples within the experiment on which the alignment models @@ -204,9 +253,23 @@ setGeneric("addProcessHistory", function(object, ...) #' Supported options are `"previous"` and `"average"` (default). #' See *Subset-based alignment* section for details. #' +#' @param tolerance For `LamaParama`: `numeric(1)` defining the absolute +#' acceptable difference in m/z between lamas and chromatographic peaks. +#' Used for the mapping of identified chromatographic peaks and `lamas`. +#' +#' @param toleranceRt For `LamaParama`: `numeric(1)` defining the absolute +#' acceptable difference in retention time between lamas and +#' chromatographic peaks. Used for the mapping of identified chromatographic +#' peaks and `lamas`. +#' #' @param value For all assignment methods: the value to set/replace. #' -#' @param x An `ObiwarpParam` or `PeakGroupsParam` object. +#' @param x An `ObiwarpParam`, `PeakGroupsParam` or `LamaParama` object. +#' +#' @param zeroWeight For `LamaParama`: `numeric(1)`: defines the weight of the +#' first data point (i.e. retention times of the first lama-chromatographic +#' peak pair). Values larger than 1 reduce warping problems in the early RT +#' range. #' #' @param ... ignored. #' @@ -219,7 +282,8 @@ setGeneric("addProcessHistory", function(object, ...) #' `XcmsExperiment` with the adjusted retention times stored in an new #' *spectra variable* `rtime_adjusted` in the object's `spectra`. #' -#' `ObiwarpParam` and `PeakGroupsParam` return the respective parameter object. +#' `ObiwarpParam`, `PeakGroupsParam` and `LamaParama` return the respective +#' parameter object. #' #' `adjustRtimeGroups` returns a `matrix` with the retention times of *marker* #' features in each sample (each row one feature, each row one sample). diff --git a/R/DataClasses.R b/R/DataClasses.R index a48dfcb7a..a7ad484f3 100644 --- a/R/DataClasses.R +++ b/R/DataClasses.R @@ -1467,6 +1467,41 @@ setClass("PeakGroupsParam", else TRUE }) +setClass("LamaParama", + slots = c(lamas = "matrix", + method = "character", + span = "numeric", + outlierTolerance = "numeric", + zeroWeight = "numeric", + ppm = "numeric", + tolerance = "numeric", + toleranceRt = "numeric", + bs = "character"), + contains = "Param", + prototype = prototype( + lamas = matrix(ncol = 2, nrow = 0), + method = "loess", + span = 0.5, + outlierTolerance = 3, + zeroWeight = 10, + ppm = 20, + tolerance = 0, + toleranceRt = 20, + bs = "tp"), + validity = function(object) { + msg <- NULL + if (!nrow(object@lamas)) + msg <- c(msg, paste0("'lamas' cannot be empty")) + else {## check columns of lamas + } + if (length(object@method) > 1 | + !all(object@method %in% c("gam", "loess"))) + msg <- c(msg, paste0("'method' has to be either \"", + "gam\" or \"loess\"!")) + msg + }) + + setClass("ObiwarpParam", slots = c(binSize = "numeric", centerSample = "integer", diff --git a/R/XcmsExperiment.R b/R/XcmsExperiment.R index 7b3672046..4a4e5ac63 100644 --- a/R/XcmsExperiment.R +++ b/R/XcmsExperiment.R @@ -1357,6 +1357,60 @@ setMethod( object }) +#'@rdname adjustRtime +setMethod( + "adjustRtime", signature(object = "XcmsExperiment", param = "LamaParama"), + function(object, param, BPPARAM = bpparam(), ...) { + if(!hasChromPeaks(object)) + stop("'object' needs to have detected chromPeaks. ", + "Run 'findChromPeaks()' first") + if (hasAdjustedRtime(object)) + stop("Alignment results already present. Please either remove ", + "them with 'dropAdjustedRtime' in order to perform an ", + "alternative, new, alignment, or use 'applyAdjustedRtime'", + " prior 'adjustRtime' to perform a second round of ", + "alignment.") + fidx <- as.factor(fromFile(object)) + rt_raw <- split(rtime(object), fidx) + cp_raw <- split.data.frame(chromPeaks(object)[, c("mz", "rt")], + chromPeaks(object)[, "sample"]) + idx <- seq_along(object) + rt_adj <- bpmapply(cp_raw, rt_raw, idx, FUN = function(x, y, i, param) { + rt_map <- .match_reference_anchors( + obs_peaks = x, ref_anchors = param@lamas, ppm = param@ppm, + tolerance = param@tolerance, toleranceRt = param@toleranceRt) + if (nrow(rt_map)) { + .adjust_rt_model(y, method = param@method, + rt_map = rt_map, span = param@span, + resid_ratio = param@outlierTolerance, + zero_weight = param@zeroWeight, + bs = param@bs) + } else { + warning("None of the chrom peaks could be assigned to external", + " reference peaks (lamas) for sample ", i, + ". Skipping alignment for this sample.") + y + } + }, SIMPLIFY = FALSE, BPPARAM = BPPARAM, MoreArgs = list(param = param)) + + pt <- vapply(object@processHistory, processType, character(1)) + idx_pg <- xcms:::.match_last(xcms:::.PROCSTEP.PEAK.GROUPING, pt, + nomatch = -1L) + if (idx_pg > 0) + ph <- object@processHistory[idx_pg] + else ph <- list() + object <- dropFeatureDefinitions(object) + object@spectra$rtime_adjusted <- unlist(rt_adj, use.names = FALSE) + object@chromPeaks <- xcms:::.applyRtAdjToChromPeaks( + xcms:::.chromPeaks(object), rtraw = rt_raw, rtadj = rt_adj) + xph <- xcms:::XProcessHistory( + param = param, type. = xcms:::.PROCSTEP.RTIME.CORRECTION, + fileIndex = seq_along(object)) + object@processHistory <- c(object@processHistory, ph, list(xph)) + validObject(object) + object + }) + #' @rdname XcmsExperiment setMethod("dropAdjustedRtime", "XcmsExperiment", function(object) { if (!hasAdjustedRtime(object)) diff --git a/R/do_adjustRtime-functions.R b/R/do_adjustRtime-functions.R index 80aaf825d..fc44fe952 100644 --- a/R/do_adjustRtime-functions.R +++ b/R/do_adjustRtime-functions.R @@ -582,3 +582,171 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, } rtadj } + +#' @description +#' +#' Match anchor (reference) peaks to chrompeaks based on rt and m/z. Peaks with +#' multiple matches are excluded. +#' +#' @param obs_peaks `matrix` of 2 columns with the m/z and retention times of +#' chrompeaks of one data file. +#' +#' @param ref_anchors `matrix` of (external) reference anchor peaks with +#' columns representing the anchor peaks' m/z and retention times (in that +#' order!). Possibly generated by the `.getAnchorePeaks()` function. +#' +#' @param ppm maximal acceptable (m/z relative) difference in m/z values for +#' peaks to be considered matching. +#' +#' @param tolerance maximal absolute difference in m/z values for peaks to be +#' considered matching. +#' +#' @param toleranceRt maximl absolute difference in retention times for peaks +#' to be considered matching. +#' +#' @return a `data.frame` with columns `"ref"` and `"obs"` with the retention +#' times of the pairs of matched peaks. This `data.frame` can be used +#' in `.adjust_rt_model`'s parameter `rt_raw`. +#' +#' @noRd +#' +#' @importFrom MetaboCoreUtils mclosest +.match_reference_anchors <- function(obs_peaks, ref_anchors, ppm = 20, + tolerance = 0, toleranceRt = 5) { + idx <- mclosest(obs_peaks, ref_anchors, + ppm = c(ppm, 0), tolerance = c(tolerance, toleranceRt)) + nna <- !is.na(idx) + idx <- cbind(obs = which(nna), ref = idx[nna]) + dups <- idx[duplicated(idx[, 2L]), 2L] + idx <- idx[!idx[, 2L] %in% dups, , drop = FALSE] + data.frame(ref = ref_anchors[idx[, 2L], 2L], + obs = obs_peaks[idx[, 1L], 2L]) +} + +#' @description +#' +#' Compute a model representing the relationship between observed and reference +#' retention times (`rt_map`) and adjust the raw retention times (`rt_raw`) +#' based on this. +#' +#' @param rt_map `data.frame` with *reference* retention times of LaMas and +#' *observed* retention times of matching peaks in the same sample from +#' which the retention times in `rt_raw` are. +#' +#' @noRd +.adjust_rt_model <- function(rt_raw, + method = c("loess", "gam"), + rt_map, + span = 0.5, + resid_ratio = 3, + zero_weight = 10, + bs = "tp") { + model <- .rt_model(method = method, + rt_map, span = span, + resid_ratio = resid_ratio, + zero_weight = zero_weight, + bs = bs) + adj <- predict(model, newdata = data.frame(obs = rt_raw)) + if (is.unsorted(adj, na.rm = TRUE)) + stop("Adjusted retention times are not sorted") # think of a solution + # in case this happens (hopefully not) + ## adjust values before and after adjusted values + idx <- which(rt_raw < min(rt_map$obs)) + lidx <- length(idx) + if (lidx) + adj[idx] <- rt_raw[idx] - (rt_raw[lidx + 1L] - adj[lidx + 1L]) + idx <- which(rt_raw > max(rt_map$obs)) + if (length(idx)) + adj[idx] <- rt_raw[idx] - (rt_raw[idx[1L] - 1L] - adj[idx[1L] - 1L]) + adj +} + +#' @description +#' +#' Get a model representing the differences between observed and reference +#' retention times (parameter `rt_map`). After an intial fit, the model is +#' re-fitted excluding potential outliers. +#' +#' @param rt_map `data.frame` with the observed (column `"obs"`) and reference +#' (columnn `"ref"`) retention time pairs. +#' +#' @importFrom stats loess predict resid +#' +#' @noRd +.rt_model <- function(method = c("loess", "gam"), + rt_map, span = 0.5, + resid_ratio = 3, + zero_weight = 10, + bs = "tp"){ + rt_map <- rt_map[order(rt_map$obs), ] + weights <- rep(1, nrow(rt_map)) + weights[1] <- zero_weight # need to ask Carl about this, maybe drop? + + if (method == "gam") { + .check_gam_library() + model <- mgcv::gam(ref ~ s(obs, bs = bs), weights = weights, + data = rt_map) + } else { + model <- loess(ref ~ obs, data = rt_map, span = span, weights = weights) + } + ## compute outliers + SSq <- resid(model)^2 + meanSSq <- mean(SSq) + not_outlier <- (SSq / meanSSq) < resid_ratio + + ## re-run only if there is outliers + if (sum(not_outlier)){ + not_outlier[1] <- TRUE + rt_map <- rt_map[not_outlier, , drop = FALSE] + weights <- weights[not_outlier] + if (method == "gam") { + model <- mgcv::gam(ref ~ s(obs, bs = "tp"), weights = weights, + data = rt_map) + } else { + model <- loess(ref ~ obs, data = rt_map, span = 0.5, + weights = weights) + } + } + model +} + +#' Simple helper to ensure gam package is installed - if needed. +#' +#' @noRd +.check_gam_library <- function() { + if (!requireNamespace("mgcv", quietly = TRUE)) + stop("'method = \"gam\"' requires the package 'mgcv'. Please ", + "install with 'BiocInstaller::install(\"mgcv\")'") +} + +#' @title Match reference Lamas to ChromPeaks for evaluation prior to alignment +#' +#' @description +#' This function quickly matches each file's ChromPeaks to Lamas, allowing the +#' user to evaluate the matches for each file. +#' +#' @param object An object of class `XcmsExperiment` with defined ChromPeaks. +#' +#' @param param An object of class `LamaParama` that will later be used for +#' adjustment using the [adjustRtime()] function. +#' +#' @return A list of matrices representing the 1:1 matches between Lamas +#' (ref) and ChromPeaks (obs). +#' +#' @note If there are no matches, the file retention will not be adjusted when +#' calling [adjustRtime()] with the same `LamaParama` and `XcmsExperiment` +#' object. +#' +#' @rdname adjustRtime +matchLamasChromPeaks <- function(object, param, BPPARAM = bpparam()){ + if(!hasChromPeaks(object)) + stop("'object' needs to have detected ChromPeaks. ", + "Run 'findChromPeaks()' first.") + cp_raw <- split.data.frame(chromPeaks(object)[, c("mz", "rt")], + chromPeaks(object)[, "sample"]) + rt_map <- bplapply(cp_raw, FUN = function(x, param) { + .match_reference_anchors(obs_peaks = x, ref_anchors = param@lamas, + ppm = param@ppm, tolerance = param@tolerance, + toleranceRt = param@toleranceRt)}, + BPPARAM = BPPARAM, MoreArgs = list(param = param)) +} diff --git a/R/functions-Params.R b/R/functions-Params.R index 71c05f89d..59150f75c 100644 --- a/R/functions-Params.R +++ b/R/functions-Params.R @@ -57,6 +57,8 @@ return("nearest peaks") if (is(x, "PeakGroupsParam")) return("peak groups") + if (is(x, "LamaParama")) + return("lama") if (is(x, "ObiwarpParam")) return("obiwarp") return("unknown") @@ -272,6 +274,37 @@ PeakGroupsParam <- function(minFraction = 0.9, extraPeaks = 1, subset = as.integer(subset), subsetAdjust = subsetAdjust) } +#' @rdname adjustRtime +LamaParama <- function(lamas = matrix(ncol = 2, nrow = 0, + dimnames = list(NULL, c("mz", "rt"))), + method = c("loess", "gam"), + span = 0.5, + outlierTolerance = 3, + zeroWeight = 10, + ppm = 20, + tolerance = 0, + toleranceRt = 5, + bs = "tp") { + method <- match.arg(method) + if (method == "gam") + .check_gam_library() + if (is.data.frame(lamas)) + lamas <- as.matrix(lamas) + if (ncol(lamas) != 2) + stop("the 'lamas' matrix needs to have two columns, composed of m/z, ", + "and retention time of the peaks from the reference dataset, in this ", + "order") + new("LamaParama", lamas = lamas, + method = method, + span = span, + outlierTolerance = outlierTolerance, + zeroWeight = zeroWeight, + ppm = ppm, + tolerance = tolerance, + toleranceRt = toleranceRt, + bs = bs) +} + #' @rdname adjustRtime ObiwarpParam <- function(binSize = 1, centerSample = integer(), response = 1L, distFun = "cor_opt", gapInit = numeric(), diff --git a/inst/NEWS b/inst/NEWS index b61d17766..8f524febb 100644 --- a/inst/NEWS +++ b/inst/NEWS @@ -1,3 +1,10 @@ +Changes in version 4.1.10 +---------------------- + +- Implementation of the `LamaParama` class and method for the `AdjustRtime()` + function. Allowing alignment of a dataset based on landmarks (lamas) from an + external reference dataset + Changes in version 4.1.9 ---------------------- diff --git a/man/adjustRtime.Rd b/man/adjustRtime.Rd index 70b8182a0..b447be3cc 100644 --- a/man/adjustRtime.Rd +++ b/man/adjustRtime.Rd @@ -6,9 +6,12 @@ \alias{adjustRtime} \alias{ObiwarpParam-class} \alias{PeakGroupsParam-class} +\alias{LamaParama-class} \alias{adjustRtime,MsExperiment,ObiwarpParam-method} \alias{adjustRtime,MsExperiment,PeakGroupsParam-method} +\alias{adjustRtime,XcmsExperiment,LamaParama-method} \alias{PeakGroupsParam} +\alias{LamaParama} \alias{ObiwarpParam} \alias{adjustRtimePeakGroups} \alias{adjustRtime,OnDiskMSnExp,ObiwarpParam-method} @@ -94,6 +97,8 @@ adjustRtime(object, param, ...) \S4method{adjustRtime}{MsExperiment,PeakGroupsParam}(object, param, msLevel = 1L, ...) +\S4method{adjustRtime}{XcmsExperiment,LamaParama}(object, param, BPPARAM = bpparam(), ...) + PeakGroupsParam( minFraction = 0.9, extraPeaks = 1, @@ -105,6 +110,18 @@ PeakGroupsParam( subsetAdjust = c("average", "previous") ) +LamaParama( + lamas = matrix(ncol = 2, nrow = 0, dimnames = list(NULL, c("mz", "rt"))), + method = c("loess", "gam"), + span = 0.5, + outlierTolerance = 3, + zeroWeight = 10, + ppm = 20, + tolerance = 0, + toleranceRt = 5, + bs = "tp" +) + ObiwarpParam( binSize = 1, centerSample = integer(), @@ -259,9 +276,9 @@ sample that are assigned to the group.} be used to interpolate corrected retention times for all peak groups. Can be either \code{"loess"} or \code{"linear"}.} -\item{span}{For \code{PeakGroupsParam}: \code{numeric(1)} defining the degree of -smoothing (if \code{smooth = "loess"}). This parameter is passed to the -internal call to \code{\link[=loess]{loess()}}.} +\item{span}{For \code{PeakGroupsParam} and \code{LamaParama}: \code{numeric(1)} defining +the degree of smoothing (if \code{smooth = "loess"} or \code{method = "loess"}). +This parameter is passed to the internal call to \code{\link[=loess]{loess()}}.} \item{family}{For \code{PeakGroupsParam}: \code{character(1)} defining the method for loess smoothing. Allowed values are \code{"gaussian"} and \code{"symmetric"}. See @@ -284,6 +301,41 @@ specifying the method with which non-subset samples should be adjusted. Supported options are \code{"previous"} and \code{"average"} (default). See \emph{Subset-based alignment} section for details.} +\item{lamas}{For \code{LamaParama}: \code{matrix} or \code{data.frame} with the m/z and +retention times values of features (as first and second column) from the +external dataset on which the alignment will be based on.} + +\item{method}{For \code{LamaParama}:\code{character(1)} with the type of warping. +Either \code{method = "gam"} or \code{method = "loess"} (default).} + +\item{outlierTolerance}{For \code{LamaParama}: \code{numeric(1)} defining the settings +for outlier removal during the fitting. By default +(with \code{outlierTolerance = 3}), all data points with absolute residuals +larger than 3 times the mean absolute residual of all data points from +the first, initial fit, are removed from the final model fit.} + +\item{zeroWeight}{For \code{LamaParama}: \code{numeric(1)}: defines the weight of the +first data point (i.e. retention times of the first lama-chromatographic +peak pair). Values larger than 1 reduce warping problems in the early RT +range.} + +\item{ppm}{For \code{LamaParama}: \code{numeric(1)} defining the m/z-relative maximal +allowed difference in m/z between \code{lamas} and chromatographic peaks. Used +for the mapping of identified chromatographic peaks and lamas.} + +\item{tolerance}{For \code{LamaParama}: \code{numeric(1)} defining the absolute +acceptable difference in m/z between lamas and chromatographic peaks. +Used for the mapping of identified chromatographic peaks and \code{lamas}.} + +\item{toleranceRt}{For \code{LamaParama}: \code{numeric(1)} defining the absolute +acceptable difference in retention time between lamas and +chromatographic peaks. Used for the mapping of identified chromatographic +peaks and \code{lamas}.} + +\item{bs}{For \code{LamaParama}: \code{character(1)} defining the GAM moothing method. +(defaults to thin plate; NB: B- and P-splines have been shown to produce +artefacts).} + \item{binSize}{\code{numeric(1)} defining the bin size (in mz dimension) to be used for the \emph{profile matrix} generation. See \code{step} parameter in \code{\link{profile-matrix}} documentation for more details.} @@ -331,7 +383,7 @@ initiating an alignment (for local alignment only).} \item{value}{The value for the slot.} -\item{x}{An \code{ObiwarpParam} or \code{PeakGroupsParam} object.} +\item{x}{An \code{ObiwarpParam}, \code{PeakGroupsParam} or \code{LamaParama} object.} } \value{ \code{adjustRtime} on an \code{OnDiskMSnExp} or \code{XCMSnExp} object will return an @@ -341,14 +393,15 @@ initiating an alignment (for local alignment only).} \code{XcmsExperiment} with the adjusted retention times stored in an new \emph{spectra variable} \code{rtime_adjusted} in the object's \code{spectra}. -\code{ObiwarpParam} and \code{PeakGroupsParam} return the respective parameter object. +\code{ObiwarpParam}, \code{PeakGroupsParam} and \code{LamaParama} return the respective +parameter object. \code{adjustRtimeGroups} returns a \code{matrix} with the retention times of \emph{marker} features in each sample (each row one feature, each row one sample). } \description{ The \code{adjustRtime} method(s) perform retention time correction (alignment) -between chromatograms of different samples. Alignment is performed by defaul +between chromatograms of different samples/dataset. Alignment is performed by default on MS level 1 data. Retention times of spectra from other MS levels, if present, are subsequently adjusted based on the adjusted retention times of the MS1 spectra. Note that calling \code{adjustRtime} on a \emph{xcms} result object @@ -368,7 +421,7 @@ rt data using the \emph{obiwarp} method (Prince (2006)). It is based on the alignment of multiple samples by aligning each against a \emph{center} sample. The alignment is performed directly on the \link{profile-matrix} and can hence be performed independently of the peak detection or peak grouping. -\item \code{PeakGroupsParam}: performs retention time correctoin based on the +\item \code{PeakGroupsParam}: performs retention time correction based on the alignment of features defined in all/most samples (corresponding to \emph{house keeping compounds} or marker compounds) (Smith 2006). First the retention time deviation of these features is described by fitting either a @@ -387,6 +440,33 @@ function is used to define this \code{matrix}. This function identifies peak groups (features) for alignment in \code{object} based on the parameters defined in \code{param}. See also \code{\link[=do_adjustRtime_peakGroups]{do_adjustRtime_peakGroups()}} for the core API function. +\item \code{LamaParama}: This function performs retention time correction by aligning +chromatographic data to an external reference dataset. The process +involves identifying and aligning peaks within the experimental +chromatographic data, represented as an \code{XcmsExperiment} object, to a +predefined set of landmark features called "lamas". These landmark features +are characterized by their mass-to-charge ratio (m/z) and retention time. + +The alignment algorithm matches chromatographic peaks from the experimental +data to the lamas, fitting a model based on this match to adjust their +retention times and minimize discrepancies. This adjustment is performed +file by file. Adjustable parameters such as \code{ppm}, \code{tolerance}, and +\code{toleranceRt} define acceptable deviations during the matching process. +It's crucial to note that only lamas and chromatographic peaks exhibiting a +one-to-one mapping are considered when estimating retention time shifts. If +a file has no ChromPeaks matching with lamas, no adjustment will be +performed, and the file will be returned as-is. Users can evaluate this +matching, for example, by checking the number of matches and ranges of the +matching ChromPeaks, by first running \verb{[matchLamasChromPeaks()]}. + +Different warping methods are available; users can choose to fit a loess +(\code{method = "loess"}, the default) or a gam (\code{method = "gam"}) between the +reference data points and observed matching ChromPeaks. Additional +parameters such as \code{span}, \code{weight}, \code{outlier_tolerance}, \code{zeroWeight}, +and \code{bs} are specific to these models. These parameters offer flexibility +in fine-tuning how the matching chromatographic peaks are fitted to the +lamas, thereby generating a model to align the overall retention time for +a single file. } } \section{Subset-based alignment}{ diff --git a/man/do_adjustRtime_peakGroups.Rd b/man/do_adjustRtime_peakGroups.Rd index 28e4297c2..996e42553 100644 --- a/man/do_adjustRtime_peakGroups.Rd +++ b/man/do_adjustRtime_peakGroups.Rd @@ -52,9 +52,9 @@ sample that are assigned to the group.} be used to interpolate corrected retention times for all peak groups. Can be either \code{"loess"} or \code{"linear"}.} -\item{span}{For \code{PeakGroupsParam}: \code{numeric(1)} defining the degree of -smoothing (if \code{smooth = "loess"}). This parameter is passed to the -internal call to \code{\link[=loess]{loess()}}.} +\item{span}{For \code{PeakGroupsParam} and \code{LamaParama}: \code{numeric(1)} defining +the degree of smoothing (if \code{smooth = "loess"} or \code{method = "loess"}). +This parameter is passed to the internal call to \code{\link[=loess]{loess()}}.} \item{family}{For \code{PeakGroupsParam}: \code{character(1)} defining the method for loess smoothing. Allowed values are \code{"gaussian"} and \code{"symmetric"}. See diff --git a/tests/testthat.R b/tests/testthat.R index 39c69e3d7..71624c6d0 100644 --- a/tests/testthat.R +++ b/tests/testthat.R @@ -75,6 +75,16 @@ pdp <- PeakDensityParam(sampleGroups = rep(1, 3)) xmseg <- groupChromPeaks(xmse, param = pdp, add = FALSE) expect_true(length(processHistory(xmseg)) == 2L) +## Data for LamaParama checks +library(mgcv) +library(MetaboCoreUtils) +ref <- loadXcmsData("xmse") +f <- sampleData(ref)$sample_type +f[f == "QC"] <- NA +ref <- filterFeatures(ref, PercentMissingFilter(threshold = 0, f = f)) +ref_mz_rt <- featureDefinitions(ref)[, c("mzmed","rtmed")] +tst <- loadXcmsData("faahko_sub2") + test_check("xcms") bpstop(prm) diff --git a/tests/testthat/test_XcmsExperiment.R b/tests/testthat/test_XcmsExperiment.R index f2b0e6303..d538a7623 100644 --- a/tests/testthat/test_XcmsExperiment.R +++ b/tests/testthat/test_XcmsExperiment.R @@ -506,6 +506,16 @@ test_that("adjustRtime,MsExperiment,PeakGroupsParam works", { expect_true(length(processHistory(res_3)) == 1L) }) + +test_that("LamaParama works", { + expect_no_error(LamaParama(lamas = ref_mz_rt)) + expect_error(LamaParama(), "cannot be empty") + param <- LamaParama(lamas = ref_mz_rt) + expect_equal(ncol(param@lamas), 2) + expect_true(inherits(param@lamas, "matrix")) + expect_equal(length(param@method), 1) +}) + test_that("findChromPeaks,XcmsExperiment,MatchedFilterParam works", { mfp <- MatchedFilterParam(binSize = 20, impute = "lin") ref <- findChromPeaks(faahko_od, param = mfp) @@ -1001,7 +1011,7 @@ test_that("manualChromPeaks,XcmsExperiment works", { res2 <- manualChromPeaks(tmp, pks, samples = 2) expect_equal(unname(chromPeaks(res2)), unname(pks_2)) - + }) test_that("filterChromPeaks,XcmsExperiment works", { diff --git a/tests/testthat/test_do_adjustRtime-functions.R b/tests/testthat/test_do_adjustRtime-functions.R index e8a3e6b02..8b9c216f7 100644 --- a/tests/testthat/test_do_adjustRtime-functions.R +++ b/tests/testthat/test_do_adjustRtime-functions.R @@ -265,3 +265,90 @@ test_that(".getPeakGroupsRtMatrix works with subsets", { extraPeaks = 1L) expect_true(!any(is.na(res))) }) + +test_that(".rt_model works", { + obs <- ref_mz_rt + rt_m <- data.frame(ref = obs[, "rtmed"], + obs = obs[, "rtmed"] + 2 + rnorm(nrow(obs), 0, 0.03)) + res <- .rt_model(rt_map = rt_m, method = "loess") + expect_true(is(res, "loess")) + expect_true(length(res$residuals) < nrow(obs)) + ## skip outlier removal + res <- .rt_model(rt_map = rt_m, method = "loess", resid_ratio = 100) + expect_true(is(res, "loess")) + expect_equal(length(res$residuals), nrow(obs)) + + ## gam + res <- .rt_model(rt_map = rt_m, method = "gam") + expect_true(is(res, "gam")) + expect_true(length(res$residuals) < nrow(obs)) + ## skip outlier removal + res <- .rt_model(rt_map = rt_m, method = "gam", resid_ratio = 100) + expect_true(is(res, "gam")) + expect_equal(length(res$residuals), nrow(obs)) +}) + +test_that(".match_reference_anchors works", { + a <- cbind(mz = c(200.1, 200.1, 200.1, 232.1, 233.1, 233.2), + rt = c(100, 150.1, 190, 190, 190, 192)) + b <- cbind(mz = c(200.2, 232, 233.1, 234), + rt = c(150, 190.4, 193, 240)) + + res <- .match_reference_anchors(a, b) + expect_true(is.data.frame(res)) + expect_equal(colnames(res), c("ref", "obs")) + expect_true(nrow(res) == 1L) + expect_equal(res$ref, 193.0) + expect_equal(res$obs, 190.0) + + ## no matches: + res <- .match_reference_anchors(a, b, tolerance = 0, toleranceRt = 0) + expect_true(is.data.frame(res)) + expect_equal(colnames(res), c("ref", "obs")) + expect_true(nrow(res) == 0L) + + ## skip multiple matches: rows 1 and 2 from `a` match row 1 from `b` and + ## rows 5 and 6 from `a` match row 3 from `b` + res <- .match_reference_anchors(a, b, tolerance = 0.1, toleranceRt = 52) + expect_true(is.data.frame(res)) + expect_equal(colnames(res), c("ref", "obs")) + expect_equal(res$ref, 190.4) + expect_equal(res$obs, 190.0) + + ## little relaxed matching: should match row 2 in `a` with row 1 in `b` and + ## row 4 in `a` with row 2 in `b`. rows 5 and 6 in `a` match both row 3 in + ## `b` and should thus not be reported. + res <- .match_reference_anchors(a, b, tolerance = 0.1, toleranceRt = 5) + expect_true(is.data.frame(res)) + expect_equal(colnames(res), c("ref", "obs")) + expect_equal(res$ref, c(150, 190.4)) + expect_equal(res$obs, c(150.1, 190.0)) + + ## Same but reducing toleranceRt to have also a match between row 6 in `a` + ## with row 3 in `b`. + res <- .match_reference_anchors(a, b, tolerance = 0.1, toleranceRt = 2) + expect_true(is.data.frame(res)) + expect_equal(colnames(res), c("ref", "obs")) + expect_equal(res$ref, c(150, 190.4, 193.0)) + expect_equal(res$obs, c(150.1, 190.0, 192.0)) +}) + +test_that(".adjust_rt_model works", { + ref_anchors <- ref_mz_rt + ## Filter the test data to the same rt range than the reference data + tst <- filterRt(tst, rt = c(2550, 4250)) + obs <- chromPeaks(tst[2]) + + rt_map <- .match_reference_anchors(obs[, c("mz", "rt")], ref_anchors, + tolerance = 0.01, + toleranceRt = 5) + + rt_raw <- rtime(tst[2]) + rt_adj <- .adjust_rt_model(rt_raw, method = "loess", rt_map = rt_map) + expect_equal(length(rt_raw), length(rt_adj)) + expect_true(!any(is.na(rt_adj))) + ## Adjusted retention times should be closer to the ones in the preprocessed + ## data set + rt_ref <- rtime(ref[2, keepAdjustedRtime = TRUE]) + expect_true(mean(abs(rt_adj - rt_ref)) < mean(abs(rt_raw - rt_ref))) +}) From fe33e108b6694399b0b7411876d1f820e275f6eb Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Thu, 7 Mar 2024 11:30:42 +0100 Subject: [PATCH 02/18] Update adjustRtime.Rd --- man/adjustRtime.Rd | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/man/adjustRtime.Rd b/man/adjustRtime.Rd index b447be3cc..7d179b525 100644 --- a/man/adjustRtime.Rd +++ b/man/adjustRtime.Rd @@ -1,7 +1,7 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/AllGenerics.R, R/XcmsExperiment.R, -% R/functions-Params.R, R/functions-XCMSnExp.R, R/methods-OnDiskMSnExp.R, -% R/methods-Params.R, R/methods-XCMSnExp.R +% R/do_adjustRtime-functions.R, R/functions-Params.R, R/functions-XCMSnExp.R, +% R/methods-OnDiskMSnExp.R, R/methods-Params.R, R/methods-XCMSnExp.R \name{adjustRtime} \alias{adjustRtime} \alias{ObiwarpParam-class} @@ -10,6 +10,7 @@ \alias{adjustRtime,MsExperiment,ObiwarpParam-method} \alias{adjustRtime,MsExperiment,PeakGroupsParam-method} \alias{adjustRtime,XcmsExperiment,LamaParama-method} +\alias{matchLamasChromPeaks} \alias{PeakGroupsParam} \alias{LamaParama} \alias{ObiwarpParam} @@ -99,6 +100,8 @@ adjustRtime(object, param, ...) \S4method{adjustRtime}{XcmsExperiment,LamaParama}(object, param, BPPARAM = bpparam(), ...) +matchLamasChromPeaks(object, param, BPPARAM = bpparam()) + PeakGroupsParam( minFraction = 0.9, extraPeaks = 1, @@ -226,11 +229,10 @@ adjustRtimePeakGroups(object, param = PeakGroupsParam(), msLevel = 1L) \S4method{adjustRtime}{XCMSnExp,ObiwarpParam}(object, param, msLevel = 1L) } \arguments{ -\item{object}{For \code{adjustRtime}: an \code{\link[=OnDiskMSnExp]{OnDiskMSnExp()}}, \code{\link[=XCMSnExp]{XCMSnExp()}}, -\code{\link[=MsExperiment]{MsExperiment()}} or \code{\link[=XcmsExperiment]{XcmsExperiment()}} object.} +\item{object}{An object of class `XcmsExperiment` with defined ChromPeaks.} -\item{param}{The parameter object defining the alignment method (and its -setting).} +\item{param}{An object of class `LamaParama` that will later be used for +adjustment using the [adjustRtime()] function.} \item{...}{ignored.} @@ -398,6 +400,9 @@ parameter object. \code{adjustRtimeGroups} returns a \code{matrix} with the retention times of \emph{marker} features in each sample (each row one feature, each row one sample). + +A list of matrices representing the 1:1 matches between Lamas +(ref) and ChromPeaks (obs). } \description{ The \code{adjustRtime} method(s) perform retention time correction (alignment) @@ -468,6 +473,14 @@ in fine-tuning how the matching chromatographic peaks are fitted to the lamas, thereby generating a model to align the overall retention time for a single file. } + +This function quickly matches each file's ChromPeaks to Lamas, allowing the +user to evaluate the matches for each file. +} +\note{ +If there are no matches, the file retention will not be adjusted when +calling [adjustRtime()] with the same `LamaParama` and `XcmsExperiment` +object. } \section{Subset-based alignment}{ From def1ba7345714848719d6ec3cb51e21b7e41d0f7 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Thu, 7 Mar 2024 11:53:54 +0100 Subject: [PATCH 03/18] quick fixes to docu --- R/AllGenerics.R | 21 +++++++++++---------- R/do_adjustRtime-functions.R | 8 ++++++++ inst/NEWS | 7 +++++-- man/adjustRtime.Rd | 23 +++++++++++++---------- 4 files changed, 37 insertions(+), 22 deletions(-) diff --git a/R/AllGenerics.R b/R/AllGenerics.R index b463b1a61..2d687d90a 100644 --- a/R/AllGenerics.R +++ b/R/AllGenerics.R @@ -61,11 +61,12 @@ setGeneric("addProcessHistory", function(object, ...) #' function. #' #' - `LamaParama`: This function performs retention time correction by aligning -#' chromatographic data to an external reference dataset. The process -#' involves identifying and aligning peaks within the experimental -#' chromatographic data, represented as an `XcmsExperiment` object, to a -#' predefined set of landmark features called "lamas". These landmark features -#' are characterized by their mass-to-charge ratio (m/z) and retention time. +#' chromatographic data to an external reference dataset (method by Carl +#' Brunius).The process involves identifying and aligning peaks within the +#' experimental chromatographic data, represented as an `XcmsExperiment` +#' object, to a predefined set of landmark features called "lamas". These +#' landmark features are characterized by their mass-to-charge ratio (m/z) +#' and retention time. #' #' The alignment algorithm matches chromatographic peaks from the experimental #' data to the lamas, fitting a model based on this match to adjust their @@ -74,10 +75,10 @@ setGeneric("addProcessHistory", function(object, ...) #' `toleranceRt` define acceptable deviations during the matching process. #' It's crucial to note that only lamas and chromatographic peaks exhibiting a #' one-to-one mapping are considered when estimating retention time shifts. If -#' a file has no ChromPeaks matching with lamas, no adjustment will be -#' performed, and the file will be returned as-is. Users can evaluate this -#' matching, for example, by checking the number of matches and ranges of the -#' matching ChromPeaks, by first running `[matchLamasChromPeaks()]`. +#' a file has no peaks matching with lamas, no adjustment will be performed, +#' and the file will be returned as-is. Users can evaluate this matching, for +#' example, by checking the number of matches and ranges of the matching +#' peaks, by first running `[matchLamasChromPeaks()]`. #' #' Different warping methods are available; users can choose to fit a loess #' (`method = "loess"`, the default) or a gam (`method = "gam"`) between the @@ -294,7 +295,7 @@ setGeneric("addProcessHistory", function(object, ...) #' #' @seealso [plotAdjustedRtime()] for visualization of alignment results. #' -#' @author Colin Smith, Johannes Rainer +#' @author Colin Smith, Johannes Rainer, Philippine Louail, Carl Brunius #' #' @references #' diff --git a/R/do_adjustRtime-functions.R b/R/do_adjustRtime-functions.R index fc44fe952..56a4ffdda 100644 --- a/R/do_adjustRtime-functions.R +++ b/R/do_adjustRtime-functions.R @@ -608,6 +608,8 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' times of the pairs of matched peaks. This `data.frame` can be used #' in `.adjust_rt_model`'s parameter `rt_raw`. #' +#' @author Johannes Rainer, Philippine Louail +#' #' @noRd #' #' @importFrom MetaboCoreUtils mclosest @@ -633,6 +635,8 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' *observed* retention times of matching peaks in the same sample from #' which the retention times in `rt_raw` are. #' +#' @author Carl Brunius +#' #' @noRd .adjust_rt_model <- function(rt_raw, method = c("loess", "gam"), @@ -672,6 +676,8 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' #' @importFrom stats loess predict resid #' +#' @author Carl Brunius, Philippine Louail +#' #' @noRd .rt_model <- function(method = c("loess", "gam"), rt_map, span = 0.5, @@ -737,6 +743,8 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' calling [adjustRtime()] with the same `LamaParama` and `XcmsExperiment` #' object. #' +#' @author Philippine Louail +#' #' @rdname adjustRtime matchLamasChromPeaks <- function(object, param, BPPARAM = bpparam()){ if(!hasChromPeaks(object)) diff --git a/inst/NEWS b/inst/NEWS index 8f524febb..4aa1c8f52 100644 --- a/inst/NEWS +++ b/inst/NEWS @@ -1,9 +1,12 @@ Changes in version 4.1.10 ---------------------- -- Implementation of the `LamaParama` class and method for the `AdjustRtime()` +- Implementation of the `LamaParama` class and method for the `adjustRtime()` function. Allowing alignment of a dataset based on landmarks (lamas) from an - external reference dataset + external reference dataset. +- Implementation of related user-level function `matchLamasChromPeaks()` which + allows for pre evaluation of matching between lamas and chromPeaks before + alignment. Changes in version 4.1.9 ---------------------- diff --git a/man/adjustRtime.Rd b/man/adjustRtime.Rd index 7d179b525..ffeed5ca5 100644 --- a/man/adjustRtime.Rd +++ b/man/adjustRtime.Rd @@ -446,11 +446,12 @@ groups (features) for alignment in \code{object} based on the parameters defined in \code{param}. See also \code{\link[=do_adjustRtime_peakGroups]{do_adjustRtime_peakGroups()}} for the core API function. \item \code{LamaParama}: This function performs retention time correction by aligning -chromatographic data to an external reference dataset. The process -involves identifying and aligning peaks within the experimental -chromatographic data, represented as an \code{XcmsExperiment} object, to a -predefined set of landmark features called "lamas". These landmark features -are characterized by their mass-to-charge ratio (m/z) and retention time. +chromatographic data to an external reference dataset (method by Carl +Brunius).The process involves identifying and aligning peaks within the +experimental chromatographic data, represented as an \code{XcmsExperiment} +object, to a predefined set of landmark features called "lamas". These +landmark features are characterized by their mass-to-charge ratio (m/z) +and retention time. The alignment algorithm matches chromatographic peaks from the experimental data to the lamas, fitting a model based on this match to adjust their @@ -459,10 +460,10 @@ file by file. Adjustable parameters such as \code{ppm}, \code{tolerance}, and \code{toleranceRt} define acceptable deviations during the matching process. It's crucial to note that only lamas and chromatographic peaks exhibiting a one-to-one mapping are considered when estimating retention time shifts. If -a file has no ChromPeaks matching with lamas, no adjustment will be -performed, and the file will be returned as-is. Users can evaluate this -matching, for example, by checking the number of matches and ranges of the -matching ChromPeaks, by first running \verb{[matchLamasChromPeaks()]}. +a file has no peaks matching with lamas, no adjustment will be performed, +and the file will be returned as-is. Users can evaluate this matching, for +example, by checking the number of matches and ranges of the matching +peaks, by first running \verb{[matchLamasChromPeaks()]}. Different warping methods are available; users can choose to fit a loess (\code{method = "loess"}, the default) or a gam (\code{method = "gam"}) between the @@ -522,6 +523,8 @@ Nonlinear Peak Alignment, Matching, and Identification" \emph{Anal. Chem.} \code{\link[=plotAdjustedRtime]{plotAdjustedRtime()}} for visualization of alignment results. } \author{ -Colin Smith, Johannes Rainer +Colin Smith, Johannes Rainer, Philippine Louail, Carl Brunius + +Philippine Louail } \concept{retention time correction methods} From b09be4465c673031e98918acfaa8ca60d0840450 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Fri, 8 Mar 2024 09:34:52 +0100 Subject: [PATCH 04/18] changes --- R/do_adjustRtime-functions.R | 17 ++++---- man/adjustRtime.Rd | 43 +++++++++++--------- vignettes/xcms.Rmd | 78 ++++++++++++++++++++++++++++++++++++ 3 files changed, 113 insertions(+), 25 deletions(-) diff --git a/R/do_adjustRtime-functions.R b/R/do_adjustRtime-functions.R index 56a4ffdda..b1d6a9597 100644 --- a/R/do_adjustRtime-functions.R +++ b/R/do_adjustRtime-functions.R @@ -685,8 +685,10 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, zero_weight = 10, bs = "tp"){ rt_map <- rt_map[order(rt_map$obs), ] + # add first row of c(0,0) to set a fix timepoint. + rt_map <- rbind(c(0,0), rt_map) weights <- rep(1, nrow(rt_map)) - weights[1] <- zero_weight # need to ask Carl about this, maybe drop? + weights[1L] <- zero_weight if (method == "gam") { .check_gam_library() @@ -700,7 +702,7 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, meanSSq <- mean(SSq) not_outlier <- (SSq / meanSSq) < resid_ratio - ## re-run only if there is outliers + ## re-run only if there is outliers and keep the zero. if (sum(not_outlier)){ not_outlier[1] <- TRUE rt_map <- rt_map[not_outlier, , drop = FALSE] @@ -746,15 +748,16 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' @author Philippine Louail #' #' @rdname adjustRtime -matchLamasChromPeaks <- function(object, param, BPPARAM = bpparam()){ +matchLamasChromPeaks <- function(object, lamas, ppm = 20, tolerance = 0, + toleranceRt = 5, BPPARAM = bpparam()){ if(!hasChromPeaks(object)) stop("'object' needs to have detected ChromPeaks. ", "Run 'findChromPeaks()' first.") cp_raw <- split.data.frame(chromPeaks(object)[, c("mz", "rt")], chromPeaks(object)[, "sample"]) - rt_map <- bplapply(cp_raw, FUN = function(x, param) { - .match_reference_anchors(obs_peaks = x, ref_anchors = param@lamas, - ppm = param@ppm, tolerance = param@tolerance, - toleranceRt = param@toleranceRt)}, + rt_map <- bplapply(cp_raw, FUN = function(x) { + .match_reference_anchors(obs_peaks = x, ref_anchors = lamas, + ppm = ppm, tolerance = tolerance, + toleranceRt = toleranceRt)}, BPPARAM = BPPARAM, MoreArgs = list(param = param)) } diff --git a/man/adjustRtime.Rd b/man/adjustRtime.Rd index ffeed5ca5..01b83cb78 100644 --- a/man/adjustRtime.Rd +++ b/man/adjustRtime.Rd @@ -100,7 +100,14 @@ adjustRtime(object, param, ...) \S4method{adjustRtime}{XcmsExperiment,LamaParama}(object, param, BPPARAM = bpparam(), ...) -matchLamasChromPeaks(object, param, BPPARAM = bpparam()) +matchLamasChromPeaks( + object, + lamas, + ppm = 20, + tolerance = 0, + toleranceRt = 5, + BPPARAM = bpparam() +) PeakGroupsParam( minFraction = 0.9, @@ -255,6 +262,23 @@ See \code{\link[=bpparam]{bpparam()}} for details.} \item{msLevel}{For \code{adjustRtime}: \code{integer(1)} defining the MS level on which the alignment should be performed.} +\item{lamas}{For \code{LamaParama}: \code{matrix} or \code{data.frame} with the m/z and +retention times values of features (as first and second column) from the +external dataset on which the alignment will be based on.} + +\item{ppm}{For \code{LamaParama}: \code{numeric(1)} defining the m/z-relative maximal +allowed difference in m/z between \code{lamas} and chromatographic peaks. Used +for the mapping of identified chromatographic peaks and lamas.} + +\item{tolerance}{For \code{LamaParama}: \code{numeric(1)} defining the absolute +acceptable difference in m/z between lamas and chromatographic peaks. +Used for the mapping of identified chromatographic peaks and \code{lamas}.} + +\item{toleranceRt}{For \code{LamaParama}: \code{numeric(1)} defining the absolute +acceptable difference in retention time between lamas and +chromatographic peaks. Used for the mapping of identified chromatographic +peaks and \code{lamas}.} + \item{minFraction}{For \code{PeakGroupsParam}: \code{numeric(1)} between 0 and 1 defining the minimum required proportion of samples in which peaks for the peak group were identified. Peak groups passing this criteria will @@ -303,10 +327,6 @@ specifying the method with which non-subset samples should be adjusted. Supported options are \code{"previous"} and \code{"average"} (default). See \emph{Subset-based alignment} section for details.} -\item{lamas}{For \code{LamaParama}: \code{matrix} or \code{data.frame} with the m/z and -retention times values of features (as first and second column) from the -external dataset on which the alignment will be based on.} - \item{method}{For \code{LamaParama}:\code{character(1)} with the type of warping. Either \code{method = "gam"} or \code{method = "loess"} (default).} @@ -321,19 +341,6 @@ first data point (i.e. retention times of the first lama-chromatographic peak pair). Values larger than 1 reduce warping problems in the early RT range.} -\item{ppm}{For \code{LamaParama}: \code{numeric(1)} defining the m/z-relative maximal -allowed difference in m/z between \code{lamas} and chromatographic peaks. Used -for the mapping of identified chromatographic peaks and lamas.} - -\item{tolerance}{For \code{LamaParama}: \code{numeric(1)} defining the absolute -acceptable difference in m/z between lamas and chromatographic peaks. -Used for the mapping of identified chromatographic peaks and \code{lamas}.} - -\item{toleranceRt}{For \code{LamaParama}: \code{numeric(1)} defining the absolute -acceptable difference in retention time between lamas and -chromatographic peaks. Used for the mapping of identified chromatographic -peaks and \code{lamas}.} - \item{bs}{For \code{LamaParama}: \code{character(1)} defining the GAM moothing method. (defaults to thin plate; NB: B- and P-splines have been shown to produce artefacts).} diff --git a/vignettes/xcms.Rmd b/vignettes/xcms.Rmd index 29e76a95b..4dac508e6 100644 --- a/vignettes/xcms.Rmd +++ b/vignettes/xcms.Rmd @@ -1277,6 +1277,84 @@ identification of e.g. features with significant different intensities/abundances it is suggested to use functionality provided in other R packages, such as Bioconductor's excellent `limma` package. +## Alignment to an external reference dataset + +In some experiment, there is a need to align two different dataset. it can be to compare run of the same samples ran across different laboraties or run with MS2 recorded after the initial MS1 run. across laboratories and time same samples can results in variation in runs. especially because the LC system can be quite unstable. +in these case an alignment step using the preivously described `adjustRtime()` function with the `LamaParam` parameter can allow the user to do this type of alignment. We will go through this stpe by step below. + +Let's load an already analysed dataset `ref` and our previous before analysis which will be `tst`. And restrict their retention time range to be the same as our dataset. + +```{r} +ref <- loadXcmsData("xmse") +tst <- loadXcmsData("faahko_sub2") + +range(rtime(tst)) +range(rtime(ref)) +``` + +So we will try to align these 2 samples to the previous dataset. The first step is to extract landmarks features (called lamas). For this we well determine the features that are present in every samples using the `PercentMissingFilter()` param in the `filterFeature()` function. + +```{r} +f <- sampleData(ref)$sample_type +f[f == "QC"] <- NA +ref <- filterFeatures(ref, PercentMissingFilter(threshold = 0, f = f)) +ref_mz_rt <- featureDefinitions(ref)[, c("mzmed","rtmed")] +ref_mz_rt +``` +This should be what the `lamas` input looks like for alignment. In term of how this method work, the alignment algorithm matches chromatographic peaks from the experimental data to the lamas, fitting a model based on this match to adjust their retention times and minimize discrepancies between the 2 dataset. +Now we can define our `param` object `LamaParama` to prepare the alignment. `tolerance`, `toelracneRt` and `ppm` relate to the matching between chromatogreaphic peaks and lamas. the other parameter are related to the type of fitting that is generated between these data point. More details on each parameter and the overall method can be found by searching `?adjustRtime`. Below is an example using defualt parameters. + +```{r} +param <- LamaParama(lamas = ref_mz_rt, method = "gam", span = 1, + outlierTolerance = 3, zeroWeight = 10, ppm = 20, + tolerance = 0, toleranceRt = 5, bs = "tp") + +#' input into adjustRtime +tst_adjusted <- adjustRtime(tst, param = param) +tst_adjusted <- applyAdjustedRtime(tst_adjusted) +``` + + +```{r fig.height=12, fig.width=5} +#' evaluate the results with BPC +bpc <- chromatogram(faahko, chromPeaks = "none") +bpc_tst_raw <- chromatogram(tst, chromPeaks = "none") +bpc_tst_adj <- chromatogram(tst_adjusted, chromPeaks = "none") +``` + + +```{r} +#' BPC of the first sample +par(mfrow = c(1, 1)) +plot(bpc[1, 1], col = "#00000080") +#' raw, red +points(rtime(bpc_tst_raw[1, 1]), intensity(bpc_tst_raw[1, 1]), type = "l", + col = "#ff000080") +``` + + +this can be expalin because of the peak matched distribution +the matchLamaChromPeaks() functions allows us to determine how well the lams match with chromatographic peaks of each files. Can be run berofre adjusting also. + +```{r} +rtMap <- matchLamasChromPeaks(tst, lamas = ref_mz_rt, ppm = 20, + tolerance = 0, toleranceRt = 5) + +#' BPC of the first sample +par(mfrow = c(1, 1)) +plot(bpc[1, 1], col = "#00000080") + +#' raw, red +points(rtime(bpc_tst_raw[1, 1]), intensity(bpc_tst_raw[1, 1]), type = "l", + col = "#ff000080") + +#' adjusted, blue +points(rtime(bpc_tst_adj[1, 1]), intensity(bpc_tst_adj[1, 1]), type = "l", + col = "#0000ff80") +grid() +abline(v = rtMap[[1]]$obs) +``` + # Additional details and notes From c27c2b92893f65d54d1f975c8a76f1eee8f14762 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Mon, 11 Mar 2024 14:02:05 +0100 Subject: [PATCH 05/18] interpolate unsorted rtime --- R/XcmsExperiment.R | 14 +-- R/do_adjustRtime-functions.R | 99 ++++++++++++++++--- .../testthat/test_do_adjustRtime-functions.R | 13 ++- vignettes/xcms.Rmd | 91 +++++++++++------ 4 files changed, 167 insertions(+), 50 deletions(-) diff --git a/R/XcmsExperiment.R b/R/XcmsExperiment.R index 4a4e5ac63..265ea6e06 100644 --- a/R/XcmsExperiment.R +++ b/R/XcmsExperiment.R @@ -1379,14 +1379,14 @@ setMethod( rt_map <- .match_reference_anchors( obs_peaks = x, ref_anchors = param@lamas, ppm = param@ppm, tolerance = param@tolerance, toleranceRt = param@toleranceRt) - if (nrow(rt_map)) { + if (nrow(rt_map) >= 10) { # too strict ? Gam always throws error when less than that and loess does not work that well either. .adjust_rt_model(y, method = param@method, rt_map = rt_map, span = param@span, resid_ratio = param@outlierTolerance, zero_weight = param@zeroWeight, bs = param@bs) } else { - warning("None of the chrom peaks could be assigned to external", + warning("Too few chrompeaks could be assigned to external", " reference peaks (lamas) for sample ", i, ". Skipping alignment for this sample.") y @@ -1394,17 +1394,17 @@ setMethod( }, SIMPLIFY = FALSE, BPPARAM = BPPARAM, MoreArgs = list(param = param)) pt <- vapply(object@processHistory, processType, character(1)) - idx_pg <- xcms:::.match_last(xcms:::.PROCSTEP.PEAK.GROUPING, pt, + idx_pg <- .match_last(.PROCSTEP.PEAK.GROUPING, pt, nomatch = -1L) if (idx_pg > 0) ph <- object@processHistory[idx_pg] else ph <- list() object <- dropFeatureDefinitions(object) object@spectra$rtime_adjusted <- unlist(rt_adj, use.names = FALSE) - object@chromPeaks <- xcms:::.applyRtAdjToChromPeaks( - xcms:::.chromPeaks(object), rtraw = rt_raw, rtadj = rt_adj) - xph <- xcms:::XProcessHistory( - param = param, type. = xcms:::.PROCSTEP.RTIME.CORRECTION, + object@chromPeaks <-.applyRtAdjToChromPeaks( + .chromPeaks(object), rtraw = rt_raw, rtadj = rt_adj) + xph <- XProcessHistory( + param = param, type. = .PROCSTEP.RTIME.CORRECTION, fileIndex = seq_along(object)) object@processHistory <- c(object@processHistory, ph, list(xph)) validObject(object) diff --git a/R/do_adjustRtime-functions.R b/R/do_adjustRtime-functions.R index b1d6a9597..c875dfec6 100644 --- a/R/do_adjustRtime-functions.R +++ b/R/do_adjustRtime-functions.R @@ -651,10 +651,11 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, zero_weight = zero_weight, bs = bs) adj <- predict(model, newdata = data.frame(obs = rt_raw)) - if (is.unsorted(adj, na.rm = TRUE)) - stop("Adjusted retention times are not sorted") # think of a solution - # in case this happens (hopefully not) - ## adjust values before and after adjusted values + if (is.unsorted(adj, na.rm = TRUE)){ + warning("Adjusted retention times are not sorted, linear ", + "interpolation will be performed for the unsorted data points") + adj <- .sort_rtime(adj) + } idx <- which(rt_raw < min(rt_map$obs)) lidx <- length(idx) if (lidx) @@ -668,11 +669,11 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' @description #' #' Get a model representing the differences between observed and reference -#' retention times (parameter `rt_map`). After an intial fit, the model is +#' retention times (parameter `rt_map`). After an initial fit, the model is #' re-fitted excluding potential outliers. #' #' @param rt_map `data.frame` with the observed (column `"obs"`) and reference -#' (columnn `"ref"`) retention time pairs. +#' (column `"ref"`) retention time pairs. #' #' @importFrom stats loess predict resid #' @@ -683,7 +684,7 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, rt_map, span = 0.5, resid_ratio = 3, zero_weight = 10, - bs = "tp"){ + bs = "tp", warnings = FALSE){ rt_map <- rt_map[order(rt_map$obs), ] # add first row of c(0,0) to set a fix timepoint. rt_map <- rbind(c(0,0), rt_map) @@ -695,7 +696,17 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, model <- mgcv::gam(ref ~ s(obs, bs = bs), weights = weights, data = rt_map) } else { - model <- loess(ref ~ obs, data = rt_map, span = span, weights = weights) + cw <- tryCatch( + model <- loess(ref ~ obs, data = rt_map, span = span, + weights = weights) , warning=function(w) w) + if(!inherits(cw, "loess")){ + warning("Warnings arose when fitting the loess model, this file ", + "might have too few datapoints we advise to relax the ", + "matching parameters, to see the warnings run ", + "'warnings = TRUE'") + if (warnings == TRUE) + message("The Loess Warnings are: ", cw) + } } ## compute outliers SSq <- resid(model)^2 @@ -703,7 +714,7 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, not_outlier <- (SSq / meanSSq) < resid_ratio ## re-run only if there is outliers and keep the zero. - if (sum(not_outlier)){ + if (sum(!not_outlier)){ not_outlier[1] <- TRUE rt_map <- rt_map[not_outlier, , drop = FALSE] weights <- weights[not_outlier] @@ -711,8 +722,8 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, model <- mgcv::gam(ref ~ s(obs, bs = "tp"), weights = weights, data = rt_map) } else { - model <- loess(ref ~ obs, data = rt_map, span = 0.5, - weights = weights) + suppressWarnings(model <- loess(ref ~ obs, data = rt_map, span = span, + weights = weights)) # should also check warnings here ? } } model @@ -759,5 +770,69 @@ matchLamasChromPeaks <- function(object, lamas, ppm = 20, tolerance = 0, .match_reference_anchors(obs_peaks = x, ref_anchors = lamas, ppm = ppm, tolerance = tolerance, toleranceRt = toleranceRt)}, - BPPARAM = BPPARAM, MoreArgs = list(param = param)) + BPPARAM = BPPARAM) } + +#' @title Perform linear interpolation for unsorted retention time. +#' +#' @description +#' This function performs linear interpolation on the non-sorted parts of an +#' input vector of retention time. TO see more details on the interpolation, +#' see [approx()] +#' +#' @param rtime `numeric` vector with the retention times for one file/sample. +#' +#' @return vector with sorted retention time. +#' +#' @examples +#' vec <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, 1.1, 1.04, 1.4, 1.6, NA, NA) +#' sorted_rtime <- .sort_rtime(vec) +#' is.unsorted(vec, na.rm = TRUE) +#' +#' @noRd +.sort_rtime <- function(rtime){ + # Select only the non-NA values + nna_idx <- which(!is.na(rtime)) + vec_temp <- rtime[nna_idx] + unsorted_idx <- which(vec_temp != sort(vec_temp)) + + while (is.unsorted(vec_temp)) { + ## phili: i'm thinking of adding a `& length(unsorted_idx) != 0` + ## check in the while loop. + idx <- unsorted_idx[1] + + # Find the adjacent values + idx <- max(1, idx - 1) + next_idx <- which(vec_temp > vec_temp[idx]) + if (length(next_idx) == 0) { + next_idx <- length(vec_temp) + } else { + next_idx <- min(next_idx) + } + + # Create data for linear interpolation + idx_range <- c(1:idx, next_idx:length(vec_temp)) + idx_interpolate <- setdiff(seq_len(length(vec_temp)), (idx_range)) + + # Perform linear interpolation + interpolated_value <- approx(x = idx_range, vec_temp[idx_range], + xout = idx_interpolate)$y + + # Update the vector with the interpolated value + vec_temp[idx_interpolate] <- round(interpolated_value, 2) + + # Remove the indices that have been sorted out. + sorted <- idx:next_idx + unsorted_idx <- unsorted_idx[!unsorted_idx %in% sorted] + + ## phili: also can it still be unsorted and the unsorted_idx empty + ## - linked to the comment above + # if (length(unsorted_idx) == 0 ) + # unsorted_idx <- which(vec_temp != sort(vec_temp)) + } + rtime[nna_idx] <- vec_temp + ## phili: here should we check for over-correction ? + ## checking median before and after ? + rtime +} + diff --git a/tests/testthat/test_do_adjustRtime-functions.R b/tests/testthat/test_do_adjustRtime-functions.R index 8b9c216f7..a17d190f2 100644 --- a/tests/testthat/test_do_adjustRtime-functions.R +++ b/tests/testthat/test_do_adjustRtime-functions.R @@ -276,7 +276,7 @@ test_that(".rt_model works", { ## skip outlier removal res <- .rt_model(rt_map = rt_m, method = "loess", resid_ratio = 100) expect_true(is(res, "loess")) - expect_equal(length(res$residuals), nrow(obs)) + expect_equal(length(res$residuals), nrow(obs) + 1) # for the c(0,0) extra row ## gam res <- .rt_model(rt_map = rt_m, method = "gam") @@ -285,7 +285,7 @@ test_that(".rt_model works", { ## skip outlier removal res <- .rt_model(rt_map = rt_m, method = "gam", resid_ratio = 100) expect_true(is(res, "gam")) - expect_equal(length(res$residuals), nrow(obs)) + expect_equal(length(res$residuals), nrow(obs) + 1) }) test_that(".match_reference_anchors works", { @@ -352,3 +352,12 @@ test_that(".adjust_rt_model works", { rt_ref <- rtime(ref[2, keepAdjustedRtime = TRUE]) expect_true(mean(abs(rt_adj - rt_ref)) < mean(abs(rt_raw - rt_ref))) }) + +test_that("linear_interpolate_vec interpolates correctly", { + vec <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, 1.1, 1.04, 1.4, 1.6, NA, NA) + # Expected result after interpolation + sorted <- c(NA, NA, NA, 1.2, 1.23, 1.25, 1.28, 1.3, 1.33, 1.37, + 1.4, 1.6, NA, NA) + result <- .sort_rtime(vec) + expect_equal(result, sorted) +}) diff --git a/vignettes/xcms.Rmd b/vignettes/xcms.Rmd index 4dac508e6..583dd3e53 100644 --- a/vignettes/xcms.Rmd +++ b/vignettes/xcms.Rmd @@ -1279,20 +1279,36 @@ packages, such as Bioconductor's excellent `limma` package. ## Alignment to an external reference dataset -In some experiment, there is a need to align two different dataset. it can be to compare run of the same samples ran across different laboraties or run with MS2 recorded after the initial MS1 run. across laboratories and time same samples can results in variation in runs. especially because the LC system can be quite unstable. -in these case an alignment step using the preivously described `adjustRtime()` function with the `LamaParam` parameter can allow the user to do this type of alignment. We will go through this stpe by step below. - -Let's load an already analysed dataset `ref` and our previous before analysis which will be `tst`. And restrict their retention time range to be the same as our dataset. +In certain experiments, aligning two different datasets is necessary. This +can involve comparing runs of the same samples conducted across different +laboratories or runs with MS2 recorded after the initial MS1 run. Across +laboratories and over time, the same samples may result in variation in +retention time, especially because the LC system can be quite unstable. In these +cases, an alignment step using the `adjustRtime()` function with the +`LamaParam` parameter can allow the user to perform this type of alignment. +We will go through this step by step below. + +Let's load an already analyzed dataset `ref` and our previous dataset before +alignment, which will be `tst`. We will first restrict their retention time +range to be the same for both dataset. ```{r} -ref <- loadXcmsData("xmse") +ref <- loadXcmsData("xmse") tst <- loadXcmsData("faahko_sub2") +# Check each dataset ranges. range(rtime(tst)) range(rtime(ref)) + +# Adjust so that they have the same. +tst <- filterRt(tst, rt = c(2547, 4265)) +ref <- filterRt(ref, c(2547, 4265)) ``` -So we will try to align these 2 samples to the previous dataset. The first step is to extract landmarks features (called lamas). For this we well determine the features that are present in every samples using the `PercentMissingFilter()` param in the `filterFeature()` function. +Now, we will try to align these two samples to the previous dataset. The first +step is to extract landmark features (called `lamas`). For this, we will +determine the features that are present in every sample fthe `ref` dataset +using the `PercentMissingFilter()` parameter in the `filterFeatures()` function. ```{r} f <- sampleData(ref)$sample_type @@ -1301,60 +1317,77 @@ ref <- filterFeatures(ref, PercentMissingFilter(threshold = 0, f = f)) ref_mz_rt <- featureDefinitions(ref)[, c("mzmed","rtmed")] ref_mz_rt ``` -This should be what the `lamas` input looks like for alignment. In term of how this method work, the alignment algorithm matches chromatographic peaks from the experimental data to the lamas, fitting a model based on this match to adjust their retention times and minimize discrepancies between the 2 dataset. -Now we can define our `param` object `LamaParama` to prepare the alignment. `tolerance`, `toelracneRt` and `ppm` relate to the matching between chromatogreaphic peaks and lamas. the other parameter are related to the type of fitting that is generated between these data point. More details on each parameter and the overall method can be found by searching `?adjustRtime`. Below is an example using defualt parameters. + +This is what the `lamas` input should look like for alignment. In terms of +how this method works, the alignment algorithm matches chromatographic peaks +from the experimental data to the lamas, fitting a model based on this +match to adjust their retention times and minimize discrepancies between +the two datasets. + +Now we can define our `param` object `LamaParama` to prepare for the +alignment. Parameters such as `tolerance`, `toleranceRt`, and `ppm` relate +to the matching between chromatographic peaks and lamas. Other parameters +are related to the type of fitting generated between these data points. +More details on each parameter and the overall method can be found by +searching `?adjustRtime`. Below is an example using default parameters. ```{r} -param <- LamaParama(lamas = ref_mz_rt, method = "gam", span = 1, +param <- LamaParama(lamas = ref_mz_rt, method = "gam", span = 0.5, outlierTolerance = 3, zeroWeight = 10, ppm = 20, - tolerance = 0, toleranceRt = 5, bs = "tp") + tolerance = 0, toleranceRt = 20, bs = "tp") -#' input into adjustRtime +#' input into `adjustRtime()` tst_adjusted <- adjustRtime(tst, param = param) tst_adjusted <- applyAdjustedRtime(tst_adjusted) ``` +We extract the base peak chromatogram (BPC) to visualize and evaluate the +alignment: ```{r fig.height=12, fig.width=5} #' evaluate the results with BPC -bpc <- chromatogram(faahko, chromPeaks = "none") +bpc <- chromatogram(ref, chromPeaks = "none") bpc_tst_raw <- chromatogram(tst, chromPeaks = "none") bpc_tst_adj <- chromatogram(tst_adjusted, chromPeaks = "none") ``` +We generate plots to visually compare the alignment to the reference +dataset (black) both before (red) and after (blue) adjustment: -```{r} -#' BPC of the first sample -par(mfrow = c(1, 1)) -plot(bpc[1, 1], col = "#00000080") -#' raw, red +```{r fig.height=4, fig.width=10} +#' BPC of a sample +par(mfrow = c(1, 2), mar = c(4, 2.5, 1, 0.5)) +plot(bpc[1, 1], col = "#00000080", main = "Before Alignment") points(rtime(bpc_tst_raw[1, 1]), intensity(bpc_tst_raw[1, 1]), type = "l", col = "#ff000080") -``` +grid() +plot(bpc[1, 1], col = "#00000080", main = "After Alignment") +points(rtime(bpc_tst_adj[1, 1]), intensity(bpc_tst_adj[1, 1]), type = "l", + col = "#0000ff80") +grid() +``` -this can be expalin because of the peak matched distribution -the matchLamaChromPeaks() functions allows us to determine how well the lams match with chromatographic peaks of each files. Can be run berofre adjusting also. +It seems that some areas aligned better (2500 to 3000 and 3500 to 4500 +seconds) than others. This can be explained by the distribution of matched +peaks (As seen below). The `matchLamaChromPeaks()` function allows us to +determine how well the `lamas` match with chromatographic peaks of each file. +It can be run before adjusting as well. ```{r} rtMap <- matchLamasChromPeaks(tst, lamas = ref_mz_rt, ppm = 20, - tolerance = 0, toleranceRt = 5) + tolerance = 0, toleranceRt = 20) -#' BPC of the first sample +#' BPC of the first sample with matches to lamas overlay par(mfrow = c(1, 1)) -plot(bpc[1, 1], col = "#00000080") - -#' raw, red -points(rtime(bpc_tst_raw[1, 1]), intensity(bpc_tst_raw[1, 1]), type = "l", - col = "#ff000080") - -#' adjusted, blue +plot(bpc[1, 1], col = "#00000080", main = "Distribution CP matched to Lamas") points(rtime(bpc_tst_adj[1, 1]), intensity(bpc_tst_adj[1, 1]), type = "l", col = "#0000ff80") grid() abline(v = rtMap[[1]]$obs) ``` +### add diagnostic part: see that later # Additional details and notes From 329572da56f49a85d061f6bdafaf53a80573dcc4 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Wed, 13 Mar 2024 15:45:20 +0100 Subject: [PATCH 06/18] add diagnostic functions --- NAMESPACE | 3 +- R/DataClasses.R | 10 +- R/XcmsExperiment.R | 21 ++- R/do_adjustRtime-functions.R | 171 ++++++++++++------ R/functions-Params.R | 8 +- man/adjustRtime.Rd | 52 +++--- man/summarizeLamaMatch.Rd | 46 +++++ .../testthat/test_do_adjustRtime-functions.R | 34 +++- vignettes/xcms.Rmd | 8 +- 9 files changed, 253 insertions(+), 100 deletions(-) create mode 100644 man/summarizeLamaMatch.Rd diff --git a/NAMESPACE b/NAMESPACE index 543953793..ac05fce6d 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -261,7 +261,8 @@ export( "estimatePrecursorIntensity", "featureArea", "loadXcmsData", - "matchLamasChromPeaks" + "matchLamasChromPeaks", + "summarizeLamaMatch" ) ## New analysis methods diff --git a/R/DataClasses.R b/R/DataClasses.R index a7ad484f3..af46beb80 100644 --- a/R/DataClasses.R +++ b/R/DataClasses.R @@ -1476,7 +1476,9 @@ setClass("LamaParama", ppm = "numeric", tolerance = "numeric", toleranceRt = "numeric", - bs = "character"), + bs = "character", + rtMap = "list", + nChromPeaks = "numeric"), contains = "Param", prototype = prototype( lamas = matrix(ncol = 2, nrow = 0), @@ -1487,12 +1489,14 @@ setClass("LamaParama", ppm = 20, tolerance = 0, toleranceRt = 20, - bs = "tp"), + bs = "tp", + rtMap = list(), + nChromPeaks = numeric()), validity = function(object) { msg <- NULL if (!nrow(object@lamas)) msg <- c(msg, paste0("'lamas' cannot be empty")) - else {## check columns of lamas + else { } if (length(object@method) > 1 | !all(object@method %in% c("gam", "loess"))) diff --git a/R/XcmsExperiment.R b/R/XcmsExperiment.R index 265ea6e06..ac7a8c988 100644 --- a/R/XcmsExperiment.R +++ b/R/XcmsExperiment.R @@ -1375,13 +1375,21 @@ setMethod( cp_raw <- split.data.frame(chromPeaks(object)[, c("mz", "rt")], chromPeaks(object)[, "sample"]) idx <- seq_along(object) - rt_adj <- bpmapply(cp_raw, rt_raw, idx, FUN = function(x, y, i, param) { - rt_map <- .match_reference_anchors( - obs_peaks = x, ref_anchors = param@lamas, ppm = param@ppm, - tolerance = param@tolerance, toleranceRt = param@toleranceRt) - if (nrow(rt_map) >= 10) { # too strict ? Gam always throws error when less than that and loess does not work that well either. + + # Check if user as ran matching lama vs chrompeaks beforehand + if(length(param@rtMap) == 0) + rtMap <- matchLamasChromPeaks(object, param) + else + rtMap <- param@rtMap + if(length(rtMap) != lenght(object)) + stop("The mismatch betweent the number of files matched to lamas ", + "and files in the object.") + + # Make model and adjust retention for each file + rt_adj <- bpmapply(rtMap, rt_raw, idx, FUN = function(x, y, i, param) { + if (nrow(x) >= 10) { # too strict ? Gam always throws error when less than that and loess does not work that well either. .adjust_rt_model(y, method = param@method, - rt_map = rt_map, span = param@span, + rt_map = x, span = param@span, resid_ratio = param@outlierTolerance, zero_weight = param@zeroWeight, bs = param@bs) @@ -1393,6 +1401,7 @@ setMethod( } }, SIMPLIFY = FALSE, BPPARAM = BPPARAM, MoreArgs = list(param = param)) + # post processing housekeeping steps pt <- vapply(object@processHistory, processType, character(1)) idx_pg <- .match_last(.PROCSTEP.PEAK.GROUPING, pt, nomatch = -1L) diff --git a/R/do_adjustRtime-functions.R b/R/do_adjustRtime-functions.R index c875dfec6..381a0b364 100644 --- a/R/do_adjustRtime-functions.R +++ b/R/do_adjustRtime-functions.R @@ -654,7 +654,7 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, if (is.unsorted(adj, na.rm = TRUE)){ warning("Adjusted retention times are not sorted, linear ", "interpolation will be performed for the unsorted data points") - adj <- .sort_rtime(adj) + adj <- .force_sorted(adj) } idx <- which(rt_raw < min(rt_map$obs)) lidx <- length(idx) @@ -749,8 +749,9 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' @param param An object of class `LamaParama` that will later be used for #' adjustment using the [adjustRtime()] function. #' -#' @return A list of matrices representing the 1:1 matches between Lamas -#' (ref) and ChromPeaks (obs). +#' @return A `LamaParama` object with new slot rtMap composed of a list of +#' matrices representing the 1:1 matches between Lamas (ref) and ChromPeaks +#' (obs). #' #' @note If there are no matches, the file retention will not be adjusted when #' calling [adjustRtime()] with the same `LamaParama` and `XcmsExperiment` @@ -759,18 +760,65 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' @author Philippine Louail #' #' @rdname adjustRtime -matchLamasChromPeaks <- function(object, lamas, ppm = 20, tolerance = 0, - toleranceRt = 5, BPPARAM = bpparam()){ - if(!hasChromPeaks(object)) +matchLamasChromPeaks <- function(object, param, BPPARAM = bpparam()){ + if (!hasChromPeaks(object)) stop("'object' needs to have detected ChromPeaks. ", "Run 'findChromPeaks()' first.") cp_raw <- split.data.frame(chromPeaks(object)[, c("mz", "rt")], chromPeaks(object)[, "sample"]) - rt_map <- bplapply(cp_raw, FUN = function(x) { - .match_reference_anchors(obs_peaks = x, ref_anchors = lamas, - ppm = ppm, tolerance = tolerance, - toleranceRt = toleranceRt)}, - BPPARAM = BPPARAM) + param@nChromPeaks <- vapply(cp_raw, nrow, numeric(1)) + param@rtMap <- bplapply(cp_raw, FUN = function(x) { + .match_reference_anchors(obs_peaks = x, ref_anchors = param@lamas, + ppm = param@ppm, tolerance = param@tolerance, + toleranceRt = param@toleranceRt)}, + BPPARAM = BPPARAM) + param +} + +#' @title Summary of LamaParama retention time alignment +#' +#' @description +#' Generates a summary of the LamaParama method. Composed of coverage % of the +#' chrompeaks match over the total chrompeaks of the object. as well as a +#' summary of the model that will be applied to the file to adjust the +#' retention times +#' +#' @param `LamaParama` same object that will be passed to the `adjustRtime()` +#' function. To run this function the `matchLamasChromPeaks()` need to be run +#' on this first. +#' +#' @return a data.frame +#' +#' @author Philippine Louail +#' +#' @rdname summarizeLamaMatch +summarizeLamaMatch <- function(param){ + if (!inherits(param, "LamaParama")) + stop("The input needs to be of class 'LamaParama'") + if (length(param@nChromPeaks) == 0 || length(param@rtMap) == 0) + stop("Summary inputs are missing. Please run `matchLamasChromPeaks` ", + "first.") + m <- lapply(param@rtMap, function(x){ + s <- summary(.rt_model(method = param@method, + rt_map= x, span = param@span, + resid_ratio = param@outlierTolerance, + zero_weight = param@zeroWeight, + bs = param@bs)) + if (param@method == "loess") + row <- c(Number_observation = s$n, Resid_sd = s$s, + Equivalent_numb_param = s$enp) # not super sure what are the best info to share + else + row <- c(Number_observation = s$n, Resid_sd = s$residual.df, + r2 = s$r.sq) + row + }) + df <- rbind( + Sample_number = seq_len(length(param@rtMap)), + Total_peaks = param@nChromPeaks, + Matched_peaks = vapply(param@rtMap, nrow, numeric(1)), + Total_lamas = nrow(param@lamas), + data.frame(m)) + t(df) } #' @title Perform linear interpolation for unsorted retention time. @@ -785,54 +833,67 @@ matchLamasChromPeaks <- function(object, lamas, ppm = 20, tolerance = 0, #' @return vector with sorted retention time. #' #' @examples -#' vec <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, 1.1, 1.04, 1.4, 1.6, NA, NA) -#' sorted_rtime <- .sort_rtime(vec) -#' is.unsorted(vec, na.rm = TRUE) +#' x <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, 1.1, 1.04, 1.4, 1.6, NA, NA) +#' sorted_rtime <- .force_sorted(x) +#' is.unsorted(x, na.rm = TRUE) #' #' @noRd -.sort_rtime <- function(rtime){ +.force_sorted <- function(x){ # Select only the non-NA values - nna_idx <- which(!is.na(rtime)) - vec_temp <- rtime[nna_idx] - unsorted_idx <- which(vec_temp != sort(vec_temp)) - - while (is.unsorted(vec_temp)) { - ## phili: i'm thinking of adding a `& length(unsorted_idx) != 0` - ## check in the while loop. - idx <- unsorted_idx[1] - - # Find the adjacent values - idx <- max(1, idx - 1) - next_idx <- which(vec_temp > vec_temp[idx]) - if (length(next_idx) == 0) { - next_idx <- length(vec_temp) - } else { - next_idx <- min(next_idx) + nna_idx <- which(!is.na(x)) + vec_temp <- x[nna_idx] + + while (any(diff(vec_temp) < 0)) { + # had to change because which.max gives 1 if the vector is all FALSE.. + idx <- which.max(diff(vec_temp) < 0) + # Find next biggest value + next_idx <- suppressWarnings(min(which(vec_temp > vec_temp[idx]))) + + if(next_idx == Inf){ # no very happy about that.. + l <- idx:length(vec_temp) + vec_temp[l] <- seq(vec_temp[idx], by = 0.000001, + length.out = length(l)) + warning("Found decreasing values at the end of vector, ", + "interpolation not possible. Replacing values. See help for more ", + "details") + break } - - # Create data for linear interpolation - idx_range <- c(1:idx, next_idx:length(vec_temp)) - idx_interpolate <- setdiff(seq_len(length(vec_temp)), (idx_range)) - - # Perform linear interpolation - interpolated_value <- approx(x = idx_range, vec_temp[idx_range], - xout = idx_interpolate)$y - - # Update the vector with the interpolated value - vec_temp[idx_interpolate] <- round(interpolated_value, 2) - - # Remove the indices that have been sorted out. - sorted <- idx:next_idx - unsorted_idx <- unsorted_idx[!unsorted_idx %in% sorted] - - ## phili: also can it still be unsorted and the unsorted_idx empty - ## - linked to the comment above - # if (length(unsorted_idx) == 0 ) - # unsorted_idx <- which(vec_temp != sort(vec_temp)) + # Interpolation + idx_range <- idx:next_idx + vec_temp[idx_range] <- seq(vec_temp[idx], vec_temp[next_idx], + length.out = length(idx_range)) } - rtime[nna_idx] <- vec_temp - ## phili: here should we check for over-correction ? - ## checking median before and after ? - rtime + x[nna_idx] <- vec_temp + x } +## phili: need to move that to a better file because its a method +#' @title Plot summary of information of matching lamas to chromPeaks +#' +#' @description +#' the `plot()` function for `LamaParama` object allows to plot the obs +#' chromatographic peaks versus the reference lamas as well as the fitting +#' line for the chosen model type. The user can decide what file to inspect by +#' specifying the assay number with the parameter `assay` +#' +#' @param assay `numeric(1)`, assay that should be plotted. +#' +#' @return A plot +#' +#' @rdname summarizeLamaMatch +setMethod("plot", "LamaParama", function(x, index = 1L, colPoints = "#00000060", + colFit = "#00000080", + xlab = "Matched Chromatographic peaks", + ylab = "Lamas", + main = NULL,...){ + model <- .rt_model(method = param@method, + rt_map= x@rtMap[[index]], span = param@span, + resid_ratio = param@outlierTolerance, + zero_weight = param@zeroWeight, + bs = param@bs) + x <- x@rtMap[[index]] + callNextMethod(x = x, col = colPoints, xlab = xlab, + ylab = ylab, main = main, ...) #not working and not sure why + #plot(obs, ref, type = type, xlab = xlab, ylab = ylab, col = "blue", main = main) + points(model, type = "l", col = "black") +}) diff --git a/R/functions-Params.R b/R/functions-Params.R index 59150f75c..be73a3427 100644 --- a/R/functions-Params.R +++ b/R/functions-Params.R @@ -284,7 +284,9 @@ LamaParama <- function(lamas = matrix(ncol = 2, nrow = 0, ppm = 20, tolerance = 0, toleranceRt = 5, - bs = "tp") { + bs = "tp", + rtMap = list(), + nChromPeaks = numeric()) { method <- match.arg(method) if (method == "gam") .check_gam_library() @@ -302,7 +304,9 @@ LamaParama <- function(lamas = matrix(ncol = 2, nrow = 0, ppm = ppm, tolerance = tolerance, toleranceRt = toleranceRt, - bs = bs) + bs = bs, + rtMap = rtMap, + nChromPeaks = nChromPeaks) } #' @rdname adjustRtime diff --git a/man/adjustRtime.Rd b/man/adjustRtime.Rd index 01b83cb78..6de6fbaa6 100644 --- a/man/adjustRtime.Rd +++ b/man/adjustRtime.Rd @@ -100,14 +100,7 @@ adjustRtime(object, param, ...) \S4method{adjustRtime}{XcmsExperiment,LamaParama}(object, param, BPPARAM = bpparam(), ...) -matchLamasChromPeaks( - object, - lamas, - ppm = 20, - tolerance = 0, - toleranceRt = 5, - BPPARAM = bpparam() -) +matchLamasChromPeaks(object, param, BPPARAM = bpparam()) PeakGroupsParam( minFraction = 0.9, @@ -129,7 +122,9 @@ LamaParama( ppm = 20, tolerance = 0, toleranceRt = 5, - bs = "tp" + bs = "tp", + rtMap = list(), + nChromPeaks = numeric() ) ObiwarpParam( @@ -262,23 +257,6 @@ See \code{\link[=bpparam]{bpparam()}} for details.} \item{msLevel}{For \code{adjustRtime}: \code{integer(1)} defining the MS level on which the alignment should be performed.} -\item{lamas}{For \code{LamaParama}: \code{matrix} or \code{data.frame} with the m/z and -retention times values of features (as first and second column) from the -external dataset on which the alignment will be based on.} - -\item{ppm}{For \code{LamaParama}: \code{numeric(1)} defining the m/z-relative maximal -allowed difference in m/z between \code{lamas} and chromatographic peaks. Used -for the mapping of identified chromatographic peaks and lamas.} - -\item{tolerance}{For \code{LamaParama}: \code{numeric(1)} defining the absolute -acceptable difference in m/z between lamas and chromatographic peaks. -Used for the mapping of identified chromatographic peaks and \code{lamas}.} - -\item{toleranceRt}{For \code{LamaParama}: \code{numeric(1)} defining the absolute -acceptable difference in retention time between lamas and -chromatographic peaks. Used for the mapping of identified chromatographic -peaks and \code{lamas}.} - \item{minFraction}{For \code{PeakGroupsParam}: \code{numeric(1)} between 0 and 1 defining the minimum required proportion of samples in which peaks for the peak group were identified. Peak groups passing this criteria will @@ -327,6 +305,10 @@ specifying the method with which non-subset samples should be adjusted. Supported options are \code{"previous"} and \code{"average"} (default). See \emph{Subset-based alignment} section for details.} +\item{lamas}{For \code{LamaParama}: \code{matrix} or \code{data.frame} with the m/z and +retention times values of features (as first and second column) from the +external dataset on which the alignment will be based on.} + \item{method}{For \code{LamaParama}:\code{character(1)} with the type of warping. Either \code{method = "gam"} or \code{method = "loess"} (default).} @@ -341,6 +323,19 @@ first data point (i.e. retention times of the first lama-chromatographic peak pair). Values larger than 1 reduce warping problems in the early RT range.} +\item{ppm}{For \code{LamaParama}: \code{numeric(1)} defining the m/z-relative maximal +allowed difference in m/z between \code{lamas} and chromatographic peaks. Used +for the mapping of identified chromatographic peaks and lamas.} + +\item{tolerance}{For \code{LamaParama}: \code{numeric(1)} defining the absolute +acceptable difference in m/z between lamas and chromatographic peaks. +Used for the mapping of identified chromatographic peaks and \code{lamas}.} + +\item{toleranceRt}{For \code{LamaParama}: \code{numeric(1)} defining the absolute +acceptable difference in retention time between lamas and +chromatographic peaks. Used for the mapping of identified chromatographic +peaks and \code{lamas}.} + \item{bs}{For \code{LamaParama}: \code{character(1)} defining the GAM moothing method. (defaults to thin plate; NB: B- and P-splines have been shown to produce artefacts).} @@ -408,8 +403,9 @@ parameter object. \code{adjustRtimeGroups} returns a \code{matrix} with the retention times of \emph{marker} features in each sample (each row one feature, each row one sample). -A list of matrices representing the 1:1 matches between Lamas -(ref) and ChromPeaks (obs). +A `LamaParama` object with new slot rtMap composed of a list of +matrices representing the 1:1 matches between Lamas (ref) and ChromPeaks +(obs). } \description{ The \code{adjustRtime} method(s) perform retention time correction (alignment) diff --git a/man/summarizeLamaMatch.Rd b/man/summarizeLamaMatch.Rd new file mode 100644 index 000000000..0a57dcc58 --- /dev/null +++ b/man/summarizeLamaMatch.Rd @@ -0,0 +1,46 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/do_adjustRtime-functions.R +\name{summarizeLamaMatch} +\alias{summarizeLamaMatch} +\alias{plot,LamaParama,ANY-method} +\title{Summary of LamaParama retention time alignment} +\usage{ +summarizeLamaMatch(param) + +\S4method{plot}{LamaParama,ANY}( + x, + index = 1L, + colPoints = "#00000060", + colFit = "#00000080", + xlab = "Matched Chromatographic peaks", + ylab = "Lamas", + main = NULL, + ... +) +} +\arguments{ +\item{`LamaParama`}{same object that will be passed to the `adjustRtime()` +function. To run this function the `matchLamasChromPeaks()` need to be run +on this first.} + +\item{assay}{`numeric(1)`, assay that should be plotted.} +} +\value{ +a data.frame + +A plot +} +\description{ +Generates a summary of the LamaParama method. Composed of coverage % of the +chrompeaks match over the total chrompeaks of the object. as well as a +summary of the model that will be applied to the file to adjust the +retention times + +the `plot()` function for `LamaParama` object allows to plot the obs +chromatographic peaks versus the reference lamas as well as the fitting +line for the chosen model type. The user can decide what file to inspect by +specifying the assay number with the parameter `assay` +} +\author{ +Philippine Louail +} diff --git a/tests/testthat/test_do_adjustRtime-functions.R b/tests/testthat/test_do_adjustRtime-functions.R index a17d190f2..25a38c0b3 100644 --- a/tests/testthat/test_do_adjustRtime-functions.R +++ b/tests/testthat/test_do_adjustRtime-functions.R @@ -356,8 +356,38 @@ test_that(".adjust_rt_model works", { test_that("linear_interpolate_vec interpolates correctly", { vec <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, 1.1, 1.04, 1.4, 1.6, NA, NA) # Expected result after interpolation - sorted <- c(NA, NA, NA, 1.2, 1.23, 1.25, 1.28, 1.3, 1.33, 1.37, + sorted <- c(NA, NA, NA, 1.2, 1.225, 1.25, 1.275, 1.3, 1.333, 1.367, 1.4, 1.6, NA, NA) - result <- .sort_rtime(vec) + result <- .force_sorted(vec) + expect_equal(result, sorted, tolerance = 0.001) + + # Test with decreasing values at the end + vec <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, 1.4, 1.04, 1.2, 1.04, NA) + expect_warning(result <- .force_sorted(vec), "Replacing") + sorted <- c(NA, NA, NA, 1.2, 1.225, 1.25, 1.275, 1.3, 1.4, 1.400001, + 1.400002, 1.400003, NA) expect_equal(result, sorted) + + # Test with sorted values + vec <- c(NA, NA, NA, 1.2, 1.3, 1.42, 1.46, 1.49, 1.498, 1.5, 1.6, 1.66, NA) + result <- .force_sorted(vec) + expect_equal(vec, result) +}) + +test_that("matchLamasChromPeaks works", { + param <- LamaParama(lamas = ref_mz_rt) + expect_equal(param@rtMap, list()) + param <- matchLamasChromPeaks(tst, param) + expect_true(inherits(param, "LamaParama")) + expect_equal(length(param@rtMap), length(object)) + expect_equal(length(param@nChromPeaks), length(object)) +}) + +test_that("summarizeLamaMatch works", { + param <- LamaParama(lamas = ref_mz_rt, toleranceRt = 10) + expect_error(summarizeLamaMatch(param), "missing") + param <- matchLamasChromPeaks(tst, param) + res <- summarizeLamaMatch(param) + expect_equal(nrow(res), length(tst)) + expect_equal(ncol(res), 7) }) diff --git a/vignettes/xcms.Rmd b/vignettes/xcms.Rmd index 2a4a61f7d..75904ee05 100644 --- a/vignettes/xcms.Rmd +++ b/vignettes/xcms.Rmd @@ -1340,7 +1340,7 @@ More details on each parameter and the overall method can be found by searching `?adjustRtime`. Below is an example using default parameters. ```{r} -param <- LamaParama(lamas = ref_mz_rt, method = "gam", span = 0.5, +param <- LamaParama(lamas = ref_mz_rt, method = "loess", span = 0.5, outlierTolerance = 3, zeroWeight = 10, ppm = 20, tolerance = 0, toleranceRt = 20, bs = "tp") @@ -1383,9 +1383,11 @@ determine how well the `lamas` match with chromatographic peaks of each file. It can be run before adjusting as well. ```{r} -rtMap <- matchLamasChromPeaks(tst, lamas = ref_mz_rt, ppm = 20, - tolerance = 0, toleranceRt = 20) +param <- matchLamasChromPeaks(tst, param = param) +summary <- summaryLama(param) + +plot(param) #' BPC of the first sample with matches to lamas overlay par(mfrow = c(1, 1)) plot(bpc[1, 1], col = "#00000080", main = "Distribution CP matched to Lamas") From f9220d711ed0ad74f6b56a59a419bf743feecbbe Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Thu, 14 Mar 2024 07:49:17 +0100 Subject: [PATCH 07/18] Update XcmsExperiment.R --- R/XcmsExperiment.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/XcmsExperiment.R b/R/XcmsExperiment.R index ac7a8c988..28cc92bd7 100644 --- a/R/XcmsExperiment.R +++ b/R/XcmsExperiment.R @@ -1381,7 +1381,7 @@ setMethod( rtMap <- matchLamasChromPeaks(object, param) else rtMap <- param@rtMap - if(length(rtMap) != lenght(object)) + if(length(rtMap) != length(object)) stop("The mismatch betweent the number of files matched to lamas ", "and files in the object.") From 0cddc6ce3df9b17d2022248441b0966b8c067ad3 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Thu, 14 Mar 2024 10:21:49 +0100 Subject: [PATCH 08/18] accessor function --- R/XcmsExperiment.R | 11 +++++------ R/do_adjustRtime-functions.R | 16 ++++++++++++---- tests/testthat/test_do_adjustRtime-functions.R | 8 ++++++++ vignettes/xcms.Rmd | 14 ++++++++------ 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/R/XcmsExperiment.R b/R/XcmsExperiment.R index 28cc92bd7..171f6defa 100644 --- a/R/XcmsExperiment.R +++ b/R/XcmsExperiment.R @@ -1378,17 +1378,16 @@ setMethod( # Check if user as ran matching lama vs chrompeaks beforehand if(length(param@rtMap) == 0) - rtMap <- matchLamasChromPeaks(object, param) - else - rtMap <- param@rtMap + param <- matchLamasChromPeaks(object, param) + rtMap <- param@rtMap if(length(rtMap) != length(object)) - stop("The mismatch betweent the number of files matched to lamas ", - "and files in the object.") + stop("Mismatch between the number of files matched to lamas: ", + length(rtMap), "and files in the object: ", length(object)) # Make model and adjust retention for each file rt_adj <- bpmapply(rtMap, rt_raw, idx, FUN = function(x, y, i, param) { if (nrow(x) >= 10) { # too strict ? Gam always throws error when less than that and loess does not work that well either. - .adjust_rt_model(y, method = param@method, + xcms:::.adjust_rt_model(y, method = param@method, rt_map = x, span = param@span, resid_ratio = param@outlierTolerance, zero_weight = param@zeroWeight, diff --git a/R/do_adjustRtime-functions.R b/R/do_adjustRtime-functions.R index 381a0b364..70007dd78 100644 --- a/R/do_adjustRtime-functions.R +++ b/R/do_adjustRtime-functions.R @@ -867,6 +867,15 @@ summarizeLamaMatch <- function(param){ x } +#' Function to access rtMap from `LamaParama` object +rtMap <- function(x){ + if(!inherits(x, "LamaParama")) + stop("The inputs need to be of class LamaParama") + rtMap <- param@rtMap + rtMap +} + + ## phili: need to move that to a better file because its a method #' @title Plot summary of information of matching lamas to chromPeaks #' @@ -886,14 +895,13 @@ setMethod("plot", "LamaParama", function(x, index = 1L, colPoints = "#00000060", xlab = "Matched Chromatographic peaks", ylab = "Lamas", main = NULL,...){ - model <- .rt_model(method = param@method, + model <- xcms:::.rt_model(method = param@method, rt_map= x@rtMap[[index]], span = param@span, resid_ratio = param@outlierTolerance, zero_weight = param@zeroWeight, bs = param@bs) x <- x@rtMap[[index]] - callNextMethod(x = x, col = colPoints, xlab = xlab, - ylab = ylab, main = main, ...) #not working and not sure why - #plot(obs, ref, type = type, xlab = xlab, ylab = ylab, col = "blue", main = main) + plot(x, type = "p", xlab = xlab, ylab = ylab, col = "blue", + main = main) points(model, type = "l", col = "black") }) diff --git a/tests/testthat/test_do_adjustRtime-functions.R b/tests/testthat/test_do_adjustRtime-functions.R index 25a38c0b3..6329eb585 100644 --- a/tests/testthat/test_do_adjustRtime-functions.R +++ b/tests/testthat/test_do_adjustRtime-functions.R @@ -391,3 +391,11 @@ test_that("summarizeLamaMatch works", { expect_equal(nrow(res), length(tst)) expect_equal(ncol(res), 7) }) + +test_that("Accessing rtMap from LamaParama object works", { + param <- LamaParama(lamas = ref_mz_rt, toleranceRt = 10) + param <- matchLamasChromPeaks(tst, param) + expect_error(rtMap(ObiwarpParam()), "class") + rtMap <- rtMap(param) + expect_equal(length(rtMap), length(param@rtMap)) +}) diff --git a/vignettes/xcms.Rmd b/vignettes/xcms.Rmd index 75904ee05..4878c15c4 100644 --- a/vignettes/xcms.Rmd +++ b/vignettes/xcms.Rmd @@ -136,7 +136,6 @@ performance. See the package vignette from the `r Biocpkg("Spectra")` package or the [SpectraTutorials](https://jorainer.github.io/SpectraTutorials) tutorial for more details on `Spectra` backends and how to change between them. - ## Initial data inspection The `MsExperiment` object is a simple and flexible container for MS @@ -1384,10 +1383,8 @@ It can be run before adjusting as well. ```{r} param <- matchLamasChromPeaks(tst, param = param) +rtMap <- rtMap(param) -summary <- summaryLama(param) - -plot(param) #' BPC of the first sample with matches to lamas overlay par(mfrow = c(1, 1)) plot(bpc[1, 1], col = "#00000080", main = "Distribution CP matched to Lamas") @@ -1395,9 +1392,14 @@ points(rtime(bpc_tst_adj[1, 1]), intensity(bpc_tst_adj[1, 1]), type = "l", col = "#0000ff80") grid() abline(v = rtMap[[1]]$obs) -``` -### add diagnostic part: see that later +#access summary of matches and model information +summary <- summarizeLamaMatch(param) +summary[1] + +# Plot obs vs. ref with fitting line +plot(param) +``` # Additional details and notes From e5fab92ef8fece076ea55dbc0b4d4d5cc7e20149 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Thu, 14 Mar 2024 13:34:50 +0100 Subject: [PATCH 09/18] reorganise --- NAMESPACE | 3 +- R/do_adjustRtime-functions.R | 68 +++---------------- R/functions-Params.R | 11 +++ R/methods-Params.R | 34 ++++++++++ man/adjustRtime.Rd | 28 ++------ ...izeLamaMatch.Rd => matchLamaChromPeaks.Rd} | 30 +++++++- .../testthat/test_do_adjustRtime-functions.R | 3 +- vignettes/xcms.Rmd | 30 ++++++-- 8 files changed, 115 insertions(+), 92 deletions(-) rename man/{summarizeLamaMatch.Rd => matchLamaChromPeaks.Rd} (54%) diff --git a/NAMESPACE b/NAMESPACE index ac05fce6d..d3ab67f72 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -262,7 +262,8 @@ export( "featureArea", "loadXcmsData", "matchLamasChromPeaks", - "summarizeLamaMatch" + "summarizeLamaMatch", + "rtMap" ) ## New analysis methods diff --git a/R/do_adjustRtime-functions.R b/R/do_adjustRtime-functions.R index 70007dd78..42f50ad65 100644 --- a/R/do_adjustRtime-functions.R +++ b/R/do_adjustRtime-functions.R @@ -759,7 +759,7 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' #' @author Philippine Louail #' -#' @rdname adjustRtime +#' @rdname matchLamaChromPeaks matchLamasChromPeaks <- function(object, param, BPPARAM = bpparam()){ if (!hasChromPeaks(object)) stop("'object' needs to have detected ChromPeaks. ", @@ -791,41 +791,32 @@ matchLamasChromPeaks <- function(object, param, BPPARAM = bpparam()){ #' #' @author Philippine Louail #' -#' @rdname summarizeLamaMatch +#' @rdname matchLamaChromPeaks summarizeLamaMatch <- function(param){ if (!inherits(param, "LamaParama")) stop("The input needs to be of class 'LamaParama'") if (length(param@nChromPeaks) == 0 || length(param@rtMap) == 0) stop("Summary inputs are missing. Please run `matchLamasChromPeaks` ", - "first.") - m <- lapply(param@rtMap, function(x){ + "first.") + res <- data.frame(Total_peaks = param@nChromPeaks, + Matched_peaks = vapply(param@rtMap, nrow, numeric(1)), + Total_lamas = nrow(param@lamas)) + res_model <- lapply(param@rtMap, function(x){ s <- summary(.rt_model(method = param@method, rt_map= x, span = param@span, resid_ratio = param@outlierTolerance, zero_weight = param@zeroWeight, bs = param@bs)) - if (param@method == "loess") - row <- c(Number_observation = s$n, Resid_sd = s$s, - Equivalent_numb_param = s$enp) # not super sure what are the best info to share - else - row <- c(Number_observation = s$n, Resid_sd = s$residual.df, - r2 = s$r.sq) - row }) - df <- rbind( - Sample_number = seq_len(length(param@rtMap)), - Total_peaks = param@nChromPeaks, - Matched_peaks = vapply(param@rtMap, nrow, numeric(1)), - Total_lamas = nrow(param@lamas), - data.frame(m)) - t(df) + res$model_summary <- res_model + res } #' @title Perform linear interpolation for unsorted retention time. #' #' @description #' This function performs linear interpolation on the non-sorted parts of an -#' input vector of retention time. TO see more details on the interpolation, +#' input vector of retention time. To see more details on the interpolation, #' see [approx()] #' #' @param rtime `numeric` vector with the retention times for one file/sample. @@ -866,42 +857,3 @@ summarizeLamaMatch <- function(param){ x[nna_idx] <- vec_temp x } - -#' Function to access rtMap from `LamaParama` object -rtMap <- function(x){ - if(!inherits(x, "LamaParama")) - stop("The inputs need to be of class LamaParama") - rtMap <- param@rtMap - rtMap -} - - -## phili: need to move that to a better file because its a method -#' @title Plot summary of information of matching lamas to chromPeaks -#' -#' @description -#' the `plot()` function for `LamaParama` object allows to plot the obs -#' chromatographic peaks versus the reference lamas as well as the fitting -#' line for the chosen model type. The user can decide what file to inspect by -#' specifying the assay number with the parameter `assay` -#' -#' @param assay `numeric(1)`, assay that should be plotted. -#' -#' @return A plot -#' -#' @rdname summarizeLamaMatch -setMethod("plot", "LamaParama", function(x, index = 1L, colPoints = "#00000060", - colFit = "#00000080", - xlab = "Matched Chromatographic peaks", - ylab = "Lamas", - main = NULL,...){ - model <- xcms:::.rt_model(method = param@method, - rt_map= x@rtMap[[index]], span = param@span, - resid_ratio = param@outlierTolerance, - zero_weight = param@zeroWeight, - bs = param@bs) - x <- x@rtMap[[index]] - plot(x, type = "p", xlab = xlab, ylab = ylab, col = "blue", - main = main) - points(model, type = "l", col = "black") -}) diff --git a/R/functions-Params.R b/R/functions-Params.R index be73a3427..fcc1fc7c6 100644 --- a/R/functions-Params.R +++ b/R/functions-Params.R @@ -309,6 +309,17 @@ LamaParama <- function(lamas = matrix(ncol = 2, nrow = 0, nChromPeaks = nChromPeaks) } +#' Function to access rtMap from `LamaParama` object +#' @export +#' +#' @rdname matchLamaChromPeaks +rtMap <- function(x){ + if(!inherits(x, "LamaParama")) + stop("The inputs need to be of class LamaParama") + rtMap <- param@rtMap + rtMap +} + #' @rdname adjustRtime ObiwarpParam <- function(binSize = 1, centerSample = integer(), response = 1L, distFun = "cor_opt", gapInit = numeric(), diff --git a/R/methods-Params.R b/R/methods-Params.R index d29016e79..70a378bfb 100644 --- a/R/methods-Params.R +++ b/R/methods-Params.R @@ -1249,6 +1249,40 @@ setReplaceMethod("subsetAdjust", "PeakGroupsParam", function(object, value) { return(object) }) +############################################################ +## LamaParama + +#' @title Plot summary of information of matching lamas to chromPeaks +#' +#' @description +#' the `plot()` function for `LamaParama` object allows to plot the obs +#' chromatographic peaks versus the reference lamas as well as the fitting +#' line for the chosen model type. The user can decide what file to inspect by +#' specifying the assay number with the parameter `assay` +#' +#' @param assay `numeric(1)`, assay that should be plotted. +#' +#' @return A plot +#' +#' @export +#' +#' @rdname matchLamaChromPeaks +setMethod("plot", "LamaParama", function(x, index = 1L, colPoints = "#00000060", + colFit = "#00000080", + xlab = "Matched Chromatographic peaks", + ylab = "Lamas", + main = NULL,...){ + model <- xcms:::.rt_model(method = param@method, + rt_map= x@rtMap[[index]], span = param@span, + resid_ratio = param@outlierTolerance, + zero_weight = param@zeroWeight, + bs = param@bs) + x <- x@rtMap[[index]] + plot(x, type = "p", xlab = xlab, ylab = ylab, col = "blue", + main = main) + points(model, type = "l", col = "black") +}) + ############################################################ ## ObiwarpParam diff --git a/man/adjustRtime.Rd b/man/adjustRtime.Rd index 6de6fbaa6..a1ea7b5d4 100644 --- a/man/adjustRtime.Rd +++ b/man/adjustRtime.Rd @@ -1,7 +1,7 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/AllGenerics.R, R/XcmsExperiment.R, -% R/do_adjustRtime-functions.R, R/functions-Params.R, R/functions-XCMSnExp.R, -% R/methods-OnDiskMSnExp.R, R/methods-Params.R, R/methods-XCMSnExp.R +% R/functions-Params.R, R/functions-XCMSnExp.R, R/methods-OnDiskMSnExp.R, +% R/methods-Params.R, R/methods-XCMSnExp.R \name{adjustRtime} \alias{adjustRtime} \alias{ObiwarpParam-class} @@ -10,7 +10,6 @@ \alias{adjustRtime,MsExperiment,ObiwarpParam-method} \alias{adjustRtime,MsExperiment,PeakGroupsParam-method} \alias{adjustRtime,XcmsExperiment,LamaParama-method} -\alias{matchLamasChromPeaks} \alias{PeakGroupsParam} \alias{LamaParama} \alias{ObiwarpParam} @@ -100,8 +99,6 @@ adjustRtime(object, param, ...) \S4method{adjustRtime}{XcmsExperiment,LamaParama}(object, param, BPPARAM = bpparam(), ...) -matchLamasChromPeaks(object, param, BPPARAM = bpparam()) - PeakGroupsParam( minFraction = 0.9, extraPeaks = 1, @@ -231,10 +228,11 @@ adjustRtimePeakGroups(object, param = PeakGroupsParam(), msLevel = 1L) \S4method{adjustRtime}{XCMSnExp,ObiwarpParam}(object, param, msLevel = 1L) } \arguments{ -\item{object}{An object of class `XcmsExperiment` with defined ChromPeaks.} +\item{object}{For \code{adjustRtime}: an \code{\link[=OnDiskMSnExp]{OnDiskMSnExp()}}, \code{\link[=XCMSnExp]{XCMSnExp()}}, +\code{\link[=MsExperiment]{MsExperiment()}} or \code{\link[=XcmsExperiment]{XcmsExperiment()}} object.} -\item{param}{An object of class `LamaParama` that will later be used for -adjustment using the [adjustRtime()] function.} +\item{param}{The parameter object defining the alignment method (and its +setting).} \item{...}{ignored.} @@ -402,10 +400,6 @@ parameter object. \code{adjustRtimeGroups} returns a \code{matrix} with the retention times of \emph{marker} features in each sample (each row one feature, each row one sample). - -A `LamaParama` object with new slot rtMap composed of a list of -matrices representing the 1:1 matches between Lamas (ref) and ChromPeaks -(obs). } \description{ The \code{adjustRtime} method(s) perform retention time correction (alignment) @@ -477,14 +471,6 @@ in fine-tuning how the matching chromatographic peaks are fitted to the lamas, thereby generating a model to align the overall retention time for a single file. } - -This function quickly matches each file's ChromPeaks to Lamas, allowing the -user to evaluate the matches for each file. -} -\note{ -If there are no matches, the file retention will not be adjusted when -calling [adjustRtime()] with the same `LamaParama` and `XcmsExperiment` -object. } \section{Subset-based alignment}{ @@ -527,7 +513,5 @@ Nonlinear Peak Alignment, Matching, and Identification" \emph{Anal. Chem.} } \author{ Colin Smith, Johannes Rainer, Philippine Louail, Carl Brunius - -Philippine Louail } \concept{retention time correction methods} diff --git a/man/summarizeLamaMatch.Rd b/man/matchLamaChromPeaks.Rd similarity index 54% rename from man/summarizeLamaMatch.Rd rename to man/matchLamaChromPeaks.Rd index 0a57dcc58..9ae2e4c70 100644 --- a/man/summarizeLamaMatch.Rd +++ b/man/matchLamaChromPeaks.Rd @@ -1,12 +1,19 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/do_adjustRtime-functions.R -\name{summarizeLamaMatch} +% Please edit documentation in R/do_adjustRtime-functions.R, +% R/functions-Params.R, R/methods-Params.R +\name{matchLamasChromPeaks} +\alias{matchLamasChromPeaks} \alias{summarizeLamaMatch} +\alias{rtMap} \alias{plot,LamaParama,ANY-method} -\title{Summary of LamaParama retention time alignment} +\title{Match reference Lamas to ChromPeaks for evaluation prior to alignment} \usage{ +matchLamasChromPeaks(object, param, BPPARAM = bpparam()) + summarizeLamaMatch(param) +rtMap(x) + \S4method{plot}{LamaParama,ANY}( x, index = 1L, @@ -19,6 +26,11 @@ summarizeLamaMatch(param) ) } \arguments{ +\item{object}{An object of class `XcmsExperiment` with defined ChromPeaks.} + +\item{param}{An object of class `LamaParama` that will later be used for +adjustment using the [adjustRtime()] function.} + \item{`LamaParama`}{same object that will be passed to the `adjustRtime()` function. To run this function the `matchLamasChromPeaks()` need to be run on this first.} @@ -26,11 +38,18 @@ on this first.} \item{assay}{`numeric(1)`, assay that should be plotted.} } \value{ +A `LamaParama` object with new slot rtMap composed of a list of +matrices representing the 1:1 matches between Lamas (ref) and ChromPeaks +(obs). + a data.frame A plot } \description{ +This function quickly matches each file's ChromPeaks to Lamas, allowing the +user to evaluate the matches for each file. + Generates a summary of the LamaParama method. Composed of coverage % of the chrompeaks match over the total chrompeaks of the object. as well as a summary of the model that will be applied to the file to adjust the @@ -41,6 +60,11 @@ chromatographic peaks versus the reference lamas as well as the fitting line for the chosen model type. The user can decide what file to inspect by specifying the assay number with the parameter `assay` } +\note{ +If there are no matches, the file retention will not be adjusted when +calling [adjustRtime()] with the same `LamaParama` and `XcmsExperiment` +object. +} \author{ Philippine Louail } diff --git a/tests/testthat/test_do_adjustRtime-functions.R b/tests/testthat/test_do_adjustRtime-functions.R index 6329eb585..09fa99ac0 100644 --- a/tests/testthat/test_do_adjustRtime-functions.R +++ b/tests/testthat/test_do_adjustRtime-functions.R @@ -389,7 +389,8 @@ test_that("summarizeLamaMatch works", { param <- matchLamasChromPeaks(tst, param) res <- summarizeLamaMatch(param) expect_equal(nrow(res), length(tst)) - expect_equal(ncol(res), 7) + expect_equal(ncol(res), 4) + expect_true(inherits(res$model_summary[[1]], "summary.loess")) }) test_that("Accessing rtMap from LamaParama object works", { diff --git a/vignettes/xcms.Rmd b/vignettes/xcms.Rmd index 4878c15c4..afdf0f4e6 100644 --- a/vignettes/xcms.Rmd +++ b/vignettes/xcms.Rmd @@ -1375,11 +1375,12 @@ points(rtime(bpc_tst_adj[1, 1]), intensity(bpc_tst_adj[1, 1]), type = "l", grid() ``` -It seems that some areas aligned better (2500 to 3000 and 3500 to 4500 -seconds) than others. This can be explained by the distribution of matched -peaks (As seen below). The `matchLamaChromPeaks()` function allows us to -determine how well the `lamas` match with chromatographic peaks of each file. -It can be run before adjusting as well. +It appears that certain time intervals (2500 to 3000 and 3500 to 4500 seconds) +exhibit better alignment than others. This variance can be elucidated by +examining the distribution of matched peaks, as illustrated below. The +`matchLamaChromPeaks()` function facilitates the assessment of how well the +`lamas` correspond with the chromatographic peaks in each file. This analysis +can be conducted prior to any adjustments. ```{r} param <- matchLamasChromPeaks(tst, param = param) @@ -1392,13 +1393,28 @@ points(rtime(bpc_tst_adj[1, 1]), intensity(bpc_tst_adj[1, 1]), type = "l", col = "#0000ff80") grid() abline(v = rtMap[[1]]$obs) +``` + +The overlay of BPC above provides insight into the correlation between accurate +alignment and the presence of peaks matching with `lamas.` Furthermore, a more +detailed examination of the matching and the model used for fitting each file +is possible. Numerical information can be obtained using the +`summarizeLamaMatch()` function. From this, the percentage of chromatographic +peaks utilized for alignment can be computed relative to the total number of +peaks in the file. Additionally, it is feasible to directly `plot()` the +`param` object for the file of interest, showcasing the distribution of these +chromatographic peaks along with the fitted model line. +```{r} #access summary of matches and model information summary <- summarizeLamaMatch(param) -summary[1] +summary + +#access the information on the model of for the first file +summary$model_summary[[1]] # Plot obs vs. ref with fitting line -plot(param) +plot(param, index = 1L, main = "ChromPeaks versur lamas for the first file") ``` # Additional details and notes From 4c4caa796fed95c869fc35ee610ad66b27250f0d Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Thu, 14 Mar 2024 13:55:55 +0100 Subject: [PATCH 10/18] fixes --- R/AllGenerics.R | 6 ++--- R/do_adjustRtime-functions.R | 27 +++++++++++-------- R/functions-Params.R | 4 +-- inst/NEWS | 6 ++--- man/adjustRtime.Rd | 6 ++--- man/matchLamaChromPeaks.Rd | 25 ++++++++++------- .../testthat/test_do_adjustRtime-functions.R | 2 +- vignettes/xcms.Rmd | 3 +++ 8 files changed, 46 insertions(+), 33 deletions(-) diff --git a/R/AllGenerics.R b/R/AllGenerics.R index 2d687d90a..2d1acdf10 100644 --- a/R/AllGenerics.R +++ b/R/AllGenerics.R @@ -80,10 +80,10 @@ setGeneric("addProcessHistory", function(object, ...) #' example, by checking the number of matches and ranges of the matching #' peaks, by first running `[matchLamasChromPeaks()]`. #' -#' Different warping methods are available; users can choose to fit a loess -#' (`method = "loess"`, the default) or a gam (`method = "gam"`) between the +#' Different warping methods are available; users can choose to fit a *loess* +#' (`method = "loess"`, the default) or a *gam* (`method = "gam"`) between the #' reference data points and observed matching ChromPeaks. Additional -#' parameters such as `span`, `weight`, `outlier_tolerance`, `zeroWeight`, +#' parameters such as `span`, `weight`, `outlierTolerance`, `zeroWeight`, #' and `bs` are specific to these models. These parameters offer flexibility #' in fine-tuning how the matching chromatographic peaks are fitted to the #' lamas, thereby generating a model to align the overall retention time for diff --git a/R/do_adjustRtime-functions.R b/R/do_adjustRtime-functions.R index 42f50ad65..6e22656a4 100644 --- a/R/do_adjustRtime-functions.R +++ b/R/do_adjustRtime-functions.R @@ -741,13 +741,13 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' @title Match reference Lamas to ChromPeaks for evaluation prior to alignment #' #' @description -#' This function quickly matches each file's ChromPeaks to Lamas, allowing the -#' user to evaluate the matches for each file. +#' The `matchLamasChromPeaks()` function quickly matches each file's ChromPeaks +#' to Lamas, allowing the user to evaluate the matches for each file. #' #' @param object An object of class `XcmsExperiment` with defined ChromPeaks. #' #' @param param An object of class `LamaParama` that will later be used for -#' adjustment using the [adjustRtime()] function. +#' adjustment using the `[adjustRtime()]` function. #' #' @return A `LamaParama` object with new slot rtMap composed of a list of #' matrices representing the 1:1 matches between Lamas (ref) and ChromPeaks @@ -757,7 +757,7 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' calling [adjustRtime()] with the same `LamaParama` and `XcmsExperiment` #' object. #' -#' @author Philippine Louail +#' @author Philippine Louail, Carl Brunius #' #' @rdname matchLamaChromPeaks matchLamasChromPeaks <- function(object, param, BPPARAM = bpparam()){ @@ -778,18 +778,23 @@ matchLamasChromPeaks <- function(object, param, BPPARAM = bpparam()){ #' @title Summary of LamaParama retention time alignment #' #' @description -#' Generates a summary of the LamaParama method. Composed of coverage % of the -#' chrompeaks match over the total chrompeaks of the object. as well as a -#' summary of the model that will be applied to the file to adjust the -#' retention times +#' The `summarizeLamaMatch()` generates a summary of the LamaParama method. +#' Composed of coverage % of the chrompeaks match over the total chrompeaks of +#' the object. as well as a summary of the model that will be applied to the +#' file to adjust the retention times #' #' @param `LamaParama` same object that will be passed to the `adjustRtime()` #' function. To run this function the `matchLamasChromPeaks()` need to be run #' on this first. #' -#' @return a data.frame +#' @return A `data.frame` with: #' -#' @author Philippine Louail +#' - Total_peaks: total number of chromatographic peaks in the file +#' - Matched_peak: The number of matched peaks to Lamas +#' - Total_Lamas: Total number of Lamas +#' - Model_summary: `summary.loess` or `summary.gam` object for each file. +#' +#' @author Philippine Louail, Carl Brunius #' #' @rdname matchLamaChromPeaks summarizeLamaMatch <- function(param){ @@ -808,7 +813,7 @@ summarizeLamaMatch <- function(param){ zero_weight = param@zeroWeight, bs = param@bs)) }) - res$model_summary <- res_model + res$Model_summary <- res_model res } diff --git a/R/functions-Params.R b/R/functions-Params.R index fcc1fc7c6..73f9ad0e8 100644 --- a/R/functions-Params.R +++ b/R/functions-Params.R @@ -313,8 +313,8 @@ LamaParama <- function(lamas = matrix(ncol = 2, nrow = 0, #' @export #' #' @rdname matchLamaChromPeaks -rtMap <- function(x){ - if(!inherits(x, "LamaParama")) +rtMap <- function(param){ + if(!inherits(param, "LamaParama")) stop("The inputs need to be of class LamaParama") rtMap <- param@rtMap rtMap diff --git a/inst/NEWS b/inst/NEWS index 4aa1c8f52..5e04e5189 100644 --- a/inst/NEWS +++ b/inst/NEWS @@ -4,9 +4,9 @@ Changes in version 4.1.10 - Implementation of the `LamaParama` class and method for the `adjustRtime()` function. Allowing alignment of a dataset based on landmarks (lamas) from an external reference dataset. -- Implementation of related user-level function `matchLamasChromPeaks()` which - allows for pre evaluation of matching between lamas and chromPeaks before - alignment. +- Implementation of related user-level function `matchLamasChromPeaks()`, + `summarizeMatchLama()` and `plot(LamaParama)` which allows for evaluation of + matching between lamas and chromPeaks. Changes in version 4.1.9 ---------------------- diff --git a/man/adjustRtime.Rd b/man/adjustRtime.Rd index a1ea7b5d4..ae6c41681 100644 --- a/man/adjustRtime.Rd +++ b/man/adjustRtime.Rd @@ -462,10 +462,10 @@ and the file will be returned as-is. Users can evaluate this matching, for example, by checking the number of matches and ranges of the matching peaks, by first running \verb{[matchLamasChromPeaks()]}. -Different warping methods are available; users can choose to fit a loess -(\code{method = "loess"}, the default) or a gam (\code{method = "gam"}) between the +Different warping methods are available; users can choose to fit a \emph{loess} +(\code{method = "loess"}, the default) or a \emph{gam} (\code{method = "gam"}) between the reference data points and observed matching ChromPeaks. Additional -parameters such as \code{span}, \code{weight}, \code{outlier_tolerance}, \code{zeroWeight}, +parameters such as \code{span}, \code{weight}, \code{outlierTolerance}, \code{zeroWeight}, and \code{bs} are specific to these models. These parameters offer flexibility in fine-tuning how the matching chromatographic peaks are fitted to the lamas, thereby generating a model to align the overall retention time for diff --git a/man/matchLamaChromPeaks.Rd b/man/matchLamaChromPeaks.Rd index 9ae2e4c70..d1867b8c4 100644 --- a/man/matchLamaChromPeaks.Rd +++ b/man/matchLamaChromPeaks.Rd @@ -12,7 +12,7 @@ matchLamasChromPeaks(object, param, BPPARAM = bpparam()) summarizeLamaMatch(param) -rtMap(x) +rtMap(param) \S4method{plot}{LamaParama,ANY}( x, @@ -29,7 +29,7 @@ rtMap(x) \item{object}{An object of class `XcmsExperiment` with defined ChromPeaks.} \item{param}{An object of class `LamaParama` that will later be used for -adjustment using the [adjustRtime()] function.} +adjustment using the `[adjustRtime()]` function.} \item{`LamaParama`}{same object that will be passed to the `adjustRtime()` function. To run this function the `matchLamasChromPeaks()` need to be run @@ -42,18 +42,23 @@ A `LamaParama` object with new slot rtMap composed of a list of matrices representing the 1:1 matches between Lamas (ref) and ChromPeaks (obs). -a data.frame +A `data.frame` with: + +- Total_peaks: total number of chromatographic peaks in the file +- Matched_peak: The number of matched peaks to Lamas +- Total_Lamas: Total number of Lamas +- Model_summary: `summary.loess` or `summary.gam` object for each file. A plot } \description{ -This function quickly matches each file's ChromPeaks to Lamas, allowing the -user to evaluate the matches for each file. +The `matchLamasChromPeaks()` function quickly matches each file's ChromPeaks +to Lamas, allowing the user to evaluate the matches for each file. -Generates a summary of the LamaParama method. Composed of coverage % of the -chrompeaks match over the total chrompeaks of the object. as well as a -summary of the model that will be applied to the file to adjust the -retention times +The `summarizeLamaMatch()` generates a summary of the LamaParama method. +Composed of coverage % of the chrompeaks match over the total chrompeaks of +the object. as well as a summary of the model that will be applied to the +file to adjust the retention times the `plot()` function for `LamaParama` object allows to plot the obs chromatographic peaks versus the reference lamas as well as the fitting @@ -66,5 +71,5 @@ calling [adjustRtime()] with the same `LamaParama` and `XcmsExperiment` object. } \author{ -Philippine Louail +Philippine Louail, Carl Brunius } diff --git a/tests/testthat/test_do_adjustRtime-functions.R b/tests/testthat/test_do_adjustRtime-functions.R index 09fa99ac0..ef8545469 100644 --- a/tests/testthat/test_do_adjustRtime-functions.R +++ b/tests/testthat/test_do_adjustRtime-functions.R @@ -390,7 +390,7 @@ test_that("summarizeLamaMatch works", { res <- summarizeLamaMatch(param) expect_equal(nrow(res), length(tst)) expect_equal(ncol(res), 4) - expect_true(inherits(res$model_summary[[1]], "summary.loess")) + expect_true(inherits(res$Model_summary[[1]], "summary.loess")) }) test_that("Accessing rtMap from LamaParama object works", { diff --git a/vignettes/xcms.Rmd b/vignettes/xcms.Rmd index afdf0f4e6..0fcfe8934 100644 --- a/vignettes/xcms.Rmd +++ b/vignettes/xcms.Rmd @@ -1410,6 +1410,9 @@ chromatographic peaks along with the fitted model line. summary <- summarizeLamaMatch(param) summary +# coverage for each file +summary$Matched_peaks / summary$Total_peaks * 100 + #access the information on the model of for the first file summary$model_summary[[1]] From 3b1bea1451f3e3e3a5bc4d4d6c93d5bf07c5cd7f Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Thu, 14 Mar 2024 14:43:57 +0100 Subject: [PATCH 11/18] fix --- R/DataClasses.R | 2 + R/do_adjustRtime-functions.R | 4 +- R/functions-Params.R | 2 +- R/methods-Params.R | 2 +- man/adjustRtime.Rd | 60 +++++++++++++++++++++++++---- man/matchLamaChromPeaks.Rd | 75 ------------------------------------ 6 files changed, 59 insertions(+), 86 deletions(-) delete mode 100644 man/matchLamaChromPeaks.Rd diff --git a/R/DataClasses.R b/R/DataClasses.R index af46beb80..e2eb635b5 100644 --- a/R/DataClasses.R +++ b/R/DataClasses.R @@ -1467,6 +1467,8 @@ setClass("PeakGroupsParam", else TRUE }) +#' @slot rtMap,nChrompeaks slots that should not be accessed by the user. +#' @rdname adjustRtime setClass("LamaParama", slots = c(lamas = "matrix", method = "character", diff --git a/R/do_adjustRtime-functions.R b/R/do_adjustRtime-functions.R index 6e22656a4..ce2ae33b9 100644 --- a/R/do_adjustRtime-functions.R +++ b/R/do_adjustRtime-functions.R @@ -759,7 +759,7 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' #' @author Philippine Louail, Carl Brunius #' -#' @rdname matchLamaChromPeaks +#' @rdname adjustRtime matchLamasChromPeaks <- function(object, param, BPPARAM = bpparam()){ if (!hasChromPeaks(object)) stop("'object' needs to have detected ChromPeaks. ", @@ -796,7 +796,7 @@ matchLamasChromPeaks <- function(object, param, BPPARAM = bpparam()){ #' #' @author Philippine Louail, Carl Brunius #' -#' @rdname matchLamaChromPeaks +#' @rdname adjustRtime summarizeLamaMatch <- function(param){ if (!inherits(param, "LamaParama")) stop("The input needs to be of class 'LamaParama'") diff --git a/R/functions-Params.R b/R/functions-Params.R index 73f9ad0e8..d67a414d2 100644 --- a/R/functions-Params.R +++ b/R/functions-Params.R @@ -312,7 +312,7 @@ LamaParama <- function(lamas = matrix(ncol = 2, nrow = 0, #' Function to access rtMap from `LamaParama` object #' @export #' -#' @rdname matchLamaChromPeaks +#' @rdname adjustRtime rtMap <- function(param){ if(!inherits(param, "LamaParama")) stop("The inputs need to be of class LamaParama") diff --git a/R/methods-Params.R b/R/methods-Params.R index 70a378bfb..a358450c7 100644 --- a/R/methods-Params.R +++ b/R/methods-Params.R @@ -1266,7 +1266,7 @@ setReplaceMethod("subsetAdjust", "PeakGroupsParam", function(object, value) { #' #' @export #' -#' @rdname matchLamaChromPeaks +#' @noRd setMethod("plot", "LamaParama", function(x, index = 1L, colPoints = "#00000060", colFit = "#00000080", xlab = "Matched Chromatographic peaks", diff --git a/man/adjustRtime.Rd b/man/adjustRtime.Rd index ae6c41681..11712f6f5 100644 --- a/man/adjustRtime.Rd +++ b/man/adjustRtime.Rd @@ -1,7 +1,9 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/AllGenerics.R, R/XcmsExperiment.R, -% R/functions-Params.R, R/functions-XCMSnExp.R, R/methods-OnDiskMSnExp.R, -% R/methods-Params.R, R/methods-XCMSnExp.R +% Please edit documentation in R/AllGenerics.R, R/DataClasses.R, +% R/XcmsExperiment.R, R/do_adjustRtime-functions.R, R/functions-Params.R, +% R/functions-XCMSnExp.R, R/methods-OnDiskMSnExp.R, R/methods-Params.R, +% R/methods-XCMSnExp.R +\docType{class} \name{adjustRtime} \alias{adjustRtime} \alias{ObiwarpParam-class} @@ -10,8 +12,11 @@ \alias{adjustRtime,MsExperiment,ObiwarpParam-method} \alias{adjustRtime,MsExperiment,PeakGroupsParam-method} \alias{adjustRtime,XcmsExperiment,LamaParama-method} +\alias{matchLamasChromPeaks} +\alias{summarizeLamaMatch} \alias{PeakGroupsParam} \alias{LamaParama} +\alias{rtMap} \alias{ObiwarpParam} \alias{adjustRtimePeakGroups} \alias{adjustRtime,OnDiskMSnExp,ObiwarpParam-method} @@ -99,6 +104,10 @@ adjustRtime(object, param, ...) \S4method{adjustRtime}{XcmsExperiment,LamaParama}(object, param, BPPARAM = bpparam(), ...) +matchLamasChromPeaks(object, param, BPPARAM = bpparam()) + +summarizeLamaMatch(param) + PeakGroupsParam( minFraction = 0.9, extraPeaks = 1, @@ -124,6 +133,8 @@ LamaParama( nChromPeaks = numeric() ) +rtMap(param) + ObiwarpParam( binSize = 1, centerSample = integer(), @@ -228,11 +239,10 @@ adjustRtimePeakGroups(object, param = PeakGroupsParam(), msLevel = 1L) \S4method{adjustRtime}{XCMSnExp,ObiwarpParam}(object, param, msLevel = 1L) } \arguments{ -\item{object}{For \code{adjustRtime}: an \code{\link[=OnDiskMSnExp]{OnDiskMSnExp()}}, \code{\link[=XCMSnExp]{XCMSnExp()}}, -\code{\link[=MsExperiment]{MsExperiment()}} or \code{\link[=XcmsExperiment]{XcmsExperiment()}} object.} +\item{object}{An object of class `XcmsExperiment` with defined ChromPeaks.} -\item{param}{The parameter object defining the alignment method (and its -setting).} +\item{param}{An object of class `LamaParama` that will later be used for +adjustment using the `[adjustRtime()]` function.} \item{...}{ignored.} @@ -386,6 +396,10 @@ initiating an alignment (for local alignment only).} \item{value}{The value for the slot.} \item{x}{An \code{ObiwarpParam}, \code{PeakGroupsParam} or \code{LamaParama} object.} + +\item{`LamaParama`}{same object that will be passed to the `adjustRtime()` +function. To run this function the `matchLamasChromPeaks()` need to be run +on this first.} } \value{ \code{adjustRtime} on an \code{OnDiskMSnExp} or \code{XCMSnExp} object will return an @@ -400,6 +414,17 @@ parameter object. \code{adjustRtimeGroups} returns a \code{matrix} with the retention times of \emph{marker} features in each sample (each row one feature, each row one sample). + +A `LamaParama` object with new slot rtMap composed of a list of +matrices representing the 1:1 matches between Lamas (ref) and ChromPeaks +(obs). + +A `data.frame` with: + +- Total_peaks: total number of chromatographic peaks in the file +- Matched_peak: The number of matched peaks to Lamas +- Total_Lamas: Total number of Lamas +- Model_summary: `summary.loess` or `summary.gam` object for each file. } \description{ The \code{adjustRtime} method(s) perform retention time correction (alignment) @@ -471,6 +496,25 @@ in fine-tuning how the matching chromatographic peaks are fitted to the lamas, thereby generating a model to align the overall retention time for a single file. } + +The `matchLamasChromPeaks()` function quickly matches each file's ChromPeaks +to Lamas, allowing the user to evaluate the matches for each file. + +The `summarizeLamaMatch()` generates a summary of the LamaParama method. +Composed of coverage % of the chrompeaks match over the total chrompeaks of +the object. as well as a summary of the model that will be applied to the +file to adjust the retention times +} +\section{Slots}{ + +\describe{ +\item{\code{rtMap,nChrompeaks}}{slots that should not be accessed by the user.} +}} + +\note{ +If there are no matches, the file retention will not be adjusted when +calling [adjustRtime()] with the same `LamaParama` and `XcmsExperiment` +object. } \section{Subset-based alignment}{ @@ -513,5 +557,7 @@ Nonlinear Peak Alignment, Matching, and Identification" \emph{Anal. Chem.} } \author{ Colin Smith, Johannes Rainer, Philippine Louail, Carl Brunius + +Philippine Louail, Carl Brunius } \concept{retention time correction methods} diff --git a/man/matchLamaChromPeaks.Rd b/man/matchLamaChromPeaks.Rd deleted file mode 100644 index d1867b8c4..000000000 --- a/man/matchLamaChromPeaks.Rd +++ /dev/null @@ -1,75 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/do_adjustRtime-functions.R, -% R/functions-Params.R, R/methods-Params.R -\name{matchLamasChromPeaks} -\alias{matchLamasChromPeaks} -\alias{summarizeLamaMatch} -\alias{rtMap} -\alias{plot,LamaParama,ANY-method} -\title{Match reference Lamas to ChromPeaks for evaluation prior to alignment} -\usage{ -matchLamasChromPeaks(object, param, BPPARAM = bpparam()) - -summarizeLamaMatch(param) - -rtMap(param) - -\S4method{plot}{LamaParama,ANY}( - x, - index = 1L, - colPoints = "#00000060", - colFit = "#00000080", - xlab = "Matched Chromatographic peaks", - ylab = "Lamas", - main = NULL, - ... -) -} -\arguments{ -\item{object}{An object of class `XcmsExperiment` with defined ChromPeaks.} - -\item{param}{An object of class `LamaParama` that will later be used for -adjustment using the `[adjustRtime()]` function.} - -\item{`LamaParama`}{same object that will be passed to the `adjustRtime()` -function. To run this function the `matchLamasChromPeaks()` need to be run -on this first.} - -\item{assay}{`numeric(1)`, assay that should be plotted.} -} -\value{ -A `LamaParama` object with new slot rtMap composed of a list of -matrices representing the 1:1 matches between Lamas (ref) and ChromPeaks -(obs). - -A `data.frame` with: - -- Total_peaks: total number of chromatographic peaks in the file -- Matched_peak: The number of matched peaks to Lamas -- Total_Lamas: Total number of Lamas -- Model_summary: `summary.loess` or `summary.gam` object for each file. - -A plot -} -\description{ -The `matchLamasChromPeaks()` function quickly matches each file's ChromPeaks -to Lamas, allowing the user to evaluate the matches for each file. - -The `summarizeLamaMatch()` generates a summary of the LamaParama method. -Composed of coverage % of the chrompeaks match over the total chrompeaks of -the object. as well as a summary of the model that will be applied to the -file to adjust the retention times - -the `plot()` function for `LamaParama` object allows to plot the obs -chromatographic peaks versus the reference lamas as well as the fitting -line for the chosen model type. The user can decide what file to inspect by -specifying the assay number with the parameter `assay` -} -\note{ -If there are no matches, the file retention will not be adjusted when -calling [adjustRtime()] with the same `LamaParama` and `XcmsExperiment` -object. -} -\author{ -Philippine Louail, Carl Brunius -} From 95bd8826419d4379bbe8eff0347a2173a2098b09 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Fri, 15 Mar 2024 17:51:58 +0100 Subject: [PATCH 12/18] Fix johannes feedback --- NAMESPACE | 2 +- R/AllGenerics.R | 34 ++---- R/DataClasses.R | 2 - R/XcmsExperiment.R | 8 +- R/do_adjustRtime-functions.R | 216 ++++++++++++++++++++++++----------- R/functions-Params.R | 11 -- man/LamaParama.Rd | 135 ++++++++++++++++++++++ man/adjustRtime.Rd | 94 +++------------ vignettes/xcms.Rmd | 16 +-- 9 files changed, 315 insertions(+), 203 deletions(-) create mode 100644 man/LamaParama.Rd diff --git a/NAMESPACE b/NAMESPACE index d3ab67f72..b59faa1a4 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -263,7 +263,7 @@ export( "loadXcmsData", "matchLamasChromPeaks", "summarizeLamaMatch", - "rtMap" + "matchedRtimes" ) ## New analysis methods diff --git a/R/AllGenerics.R b/R/AllGenerics.R index 2d1acdf10..213219483 100644 --- a/R/AllGenerics.R +++ b/R/AllGenerics.R @@ -61,33 +61,13 @@ setGeneric("addProcessHistory", function(object, ...) #' function. #' #' - `LamaParama`: This function performs retention time correction by aligning -#' chromatographic data to an external reference dataset (method by Carl -#' Brunius).The process involves identifying and aligning peaks within the -#' experimental chromatographic data, represented as an `XcmsExperiment` -#' object, to a predefined set of landmark features called "lamas". These -#' landmark features are characterized by their mass-to-charge ratio (m/z) -#' and retention time. -#' -#' The alignment algorithm matches chromatographic peaks from the experimental -#' data to the lamas, fitting a model based on this match to adjust their -#' retention times and minimize discrepancies. This adjustment is performed -#' file by file. Adjustable parameters such as `ppm`, `tolerance`, and -#' `toleranceRt` define acceptable deviations during the matching process. -#' It's crucial to note that only lamas and chromatographic peaks exhibiting a -#' one-to-one mapping are considered when estimating retention time shifts. If -#' a file has no peaks matching with lamas, no adjustment will be performed, -#' and the file will be returned as-is. Users can evaluate this matching, for -#' example, by checking the number of matches and ranges of the matching -#' peaks, by first running `[matchLamasChromPeaks()]`. -#' -#' Different warping methods are available; users can choose to fit a *loess* -#' (`method = "loess"`, the default) or a *gam* (`method = "gam"`) between the -#' reference data points and observed matching ChromPeaks. Additional -#' parameters such as `span`, `weight`, `outlierTolerance`, `zeroWeight`, -#' and `bs` are specific to these models. These parameters offer flexibility -#' in fine-tuning how the matching chromatographic peaks are fitted to the -#' lamas, thereby generating a model to align the overall retention time for -#' a single file. +#' chromatographic data to an external reference dataset (concept and initial +#' implementation by Carl Brunius). The process involves identifying and +#' aligning peaks within the experimental chromatographic data, represented +#' as an `XcmsExperiment` object, to a predefined set of landmark features +#' called "lamas". These landmark features are characterized by their +#' mass-to-charge ratio (m/z) and retention time. see [LamaParama()] for more +#' information on the method. #' #' @section Subset-based alignment: #' diff --git a/R/DataClasses.R b/R/DataClasses.R index e2eb635b5..af46beb80 100644 --- a/R/DataClasses.R +++ b/R/DataClasses.R @@ -1467,8 +1467,6 @@ setClass("PeakGroupsParam", else TRUE }) -#' @slot rtMap,nChrompeaks slots that should not be accessed by the user. -#' @rdname adjustRtime setClass("LamaParama", slots = c(lamas = "matrix", method = "character", diff --git a/R/XcmsExperiment.R b/R/XcmsExperiment.R index 171f6defa..c769c3674 100644 --- a/R/XcmsExperiment.R +++ b/R/XcmsExperiment.R @@ -1361,7 +1361,7 @@ setMethod( setMethod( "adjustRtime", signature(object = "XcmsExperiment", param = "LamaParama"), function(object, param, BPPARAM = bpparam(), ...) { - if(!hasChromPeaks(object)) + if (!hasChromPeaks(object)) stop("'object' needs to have detected chromPeaks. ", "Run 'findChromPeaks()' first") if (hasAdjustedRtime(object)) @@ -1372,15 +1372,13 @@ setMethod( "alignment.") fidx <- as.factor(fromFile(object)) rt_raw <- split(rtime(object), fidx) - cp_raw <- split.data.frame(chromPeaks(object)[, c("mz", "rt")], - chromPeaks(object)[, "sample"]) idx <- seq_along(object) # Check if user as ran matching lama vs chrompeaks beforehand - if(length(param@rtMap) == 0) + if (length(param@rtMap) == 0) param <- matchLamasChromPeaks(object, param) rtMap <- param@rtMap - if(length(rtMap) != length(object)) + if (length(rtMap) != length(object)) stop("Mismatch between the number of files matched to lamas: ", length(rtMap), "and files in the object: ", length(object)) diff --git a/R/do_adjustRtime-functions.R b/R/do_adjustRtime-functions.R index ce2ae33b9..ffed94d6f 100644 --- a/R/do_adjustRtime-functions.R +++ b/R/do_adjustRtime-functions.R @@ -583,6 +583,133 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, rtadj } +########################################################### +###### LamaParama + +#' @title Landmark-based alignment: aligning a dataset against an external +#' reference +#' +#' @aliases LamaParama-class +#' +#' @description +#' Alignment is achieved using the ['adjustRtime()'] method with a `param` of +#' class `LamaParama`. This method #' corrects retention time by aligning +#' chromatographic data with an external reference dataset. Peaks in the +#' experimental chromatographic data are aligned to predefined landmark +#' features called "lamas" based on their mass-to-charge ratio (m/z) and +#' retention time. +#' +#' This alignment algorithm matches chromatographic peaks from the experimental +#' data to the lamas, fitting a model based on this match to adjust their +#' retention times and minimize discrepancies. This adjustment is performed +#' file by file. Adjustable parameters such as `ppm`, `tolerance`, and +#' `toleranceRt` define acceptable deviations during the matching process. +#' It's crucial to note that only lamas and chromatographic peaks exhibiting a +#' one-to-one mapping are considered when estimating retention time shifts. If +#' a file has no peaks matching with lamas, no adjustment will be performed, +#' and the file will be returned as-is. Users can evaluate this matching, for +#' example, by checking the number of matches and ranges of the matching +#' peaks, by first running `[matchLamasChromPeaks()]`. +#' +#' Different warping methods are available; users can choose to fit a *loess* +#' (`method = "loess"`, the default) or a *gam* (`method = "gam"`) between the +#' reference data points and observed matching ChromPeaks. Additional +#' parameters such as `span`, `weight`, `outlierTolerance`, `zeroWeight`, +#' and `bs` are specific to these models. These parameters offer flexibility +#' in fine-tuning how the matching chromatographic peaks are fitted to the +#' lamas, thereby generating a model to align the overall retention time for +#' a single file. +#' +#' Other functions related to this method: +#' +#' - `LamaParama()`: create the parameter object for alignment using +#' `adjustRtime()` function. Is also the input for functions listed below. +#' +#' - `matchLamasChromPeaks()`: quickly matches each file's ChromPeaks +#' to Lamas, allowing the user to evaluate the matches for each file. +#' +#' - `summarizeLamaMatch()`: generates a summary of the `LamaParama` method. +#' See below for the details of the return object. +#' +#' - `matchedRtimes()`: Access the list of `data.frame` saved in the +#' `LamaParama` object, generated by the `matchLamasChromPeaks()` function. +#' +#' +#' @param BPPARAM For `matchLamasChromPeaks()`: parallel processing setup. +#' Defaults to `BPPARAM = bpparam()`. See [bpparam()] for more information. +#' +#' @param object An object of class `XcmsExperiment` with defined ChromPeaks. +#' +#' @param param An object of class `LamaParama` that will later be used for +#' adjustment using the `[adjustRtime()]` function. +#' +#' @param LamaParama same object that will be passed to the `adjustRtime()` +#' function. To run this function the `matchLamasChromPeaks()` need to be run +#' on this first. +#' +#' @return +#' For `matchLamasChromPeaks()`: A `LamaParama` object with new slot `rtMap` +#' composed of a list of matrices representing the 1:1 matches between Lamas +#' (ref) and ChromPeaks (obs). To access this, `matchedRtimes()` can be used. +#' +#' For `matchedRtimes()`: A list of `data.frame` representing matches +#' between chromPeaks and `lamas` for each files. +#' +#' For `summarizeLamaMatch()`:A `data.frame` with: +#' +#' - "Total_peaks": total number of chromatographic peaks in the file. +#' +#' - "Matched_peak": The number of matched peaks to Lamas. +#' +#' - "Total_Lamas": Total number of Lamas. +#' +#' - "Model_summary": `summary.loess` or `summary.gam` object for each file. +#' +#' @examples +#' ## load test and reference datasets +#' ref <- loadXcmsData("xmse") +#' tst <- loadXcmsData("faahko_sub2") +#' +#' ## create lamas input from the reference dataset +#' f <- sampleData(ref)$sample_type +#' f[f == "QC"] <- NA +#' ref <- filterFeatures(ref, PercentMissingFilter(threshold = 0, f = f)) +#' ref_mz_rt <- featureDefinitions(ref)[, c("mzmed","rtmed")] +#' +#' ## Set up the LamaParama object +#' param <- LamaParama(lamas = ref_mz_rt, method = "loess", span = 0.5, +#' outlierTolerance = 3, zeroWeight = 10, ppm = 20, +#' tolerance = 0, toleranceRt = 20, bs = "tp") +#' +#' ## input into `adjustRtime()` +#' tst_adjusted <- adjustRtime(tst, param = param) +#' +#' ## run diagnostic functions to pre-evaluate alignment +#' param <- matchLamasChromPeaks(tst, param = param) +#' mtch <- matchedRtimes(param) +#' +#' ## Access summary of matches and model information +#' summary <- summarizeLamaMatch(param) +#' +#' ##coverage for each file +#' summary$Matched_peaks / summary$Total_peaks * 100 +#' +#' ## Access the information on the model of for the first file +#' summary$model_summary[[1]] +#' +#' @note +#' If there are no matches when using `matchLamasChromPeaks()`, the file +#' retention will not be adjusted when calling [adjustRtime()] with the same +#' `LamaParama` and `XcmsExperiment` object. +#' +#' To see examples on how to utilize this methods and its functionality, +#' see the vignette. +#' +#' @author Carl Brunius, Philippine Louail +#' +#' @name LamaParama +NULL + #' @description #' #' Match anchor (reference) peaks to chrompeaks based on rt and m/z. Peaks with @@ -635,7 +762,7 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' *observed* retention times of matching peaks in the same sample from #' which the retention times in `rt_raw` are. #' -#' @author Carl Brunius +#' @author Carl Brunius, Philippine Louail #' #' @noRd .adjust_rt_model <- function(rt_raw, @@ -684,7 +811,7 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, rt_map, span = 0.5, resid_ratio = 3, zero_weight = 10, - bs = "tp", warnings = FALSE){ + bs = "tp"){ rt_map <- rt_map[order(rt_map$obs), ] # add first row of c(0,0) to set a fix timepoint. rt_map <- rbind(c(0,0), rt_map) @@ -695,26 +822,16 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, .check_gam_library() model <- mgcv::gam(ref ~ s(obs, bs = bs), weights = weights, data = rt_map) - } else { - cw <- tryCatch( + } else model <- loess(ref ~ obs, data = rt_map, span = span, - weights = weights) , warning=function(w) w) - if(!inherits(cw, "loess")){ - warning("Warnings arose when fitting the loess model, this file ", - "might have too few datapoints we advise to relax the ", - "matching parameters, to see the warnings run ", - "'warnings = TRUE'") - if (warnings == TRUE) - message("The Loess Warnings are: ", cw) - } - } + weights = weights) ## compute outliers SSq <- resid(model)^2 meanSSq <- mean(SSq) not_outlier <- (SSq / meanSSq) < resid_ratio ## re-run only if there is outliers and keep the zero. - if (sum(!not_outlier)){ + if (any(!not_outlier)){ not_outlier[1] <- TRUE rt_map <- rt_map[not_outlier, , drop = FALSE] weights <- weights[not_outlier] @@ -722,8 +839,8 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, model <- mgcv::gam(ref ~ s(obs, bs = "tp"), weights = weights, data = rt_map) } else { - suppressWarnings(model <- loess(ref ~ obs, data = rt_map, span = span, - weights = weights)) # should also check warnings here ? + model <- loess(ref ~ obs, data = rt_map, span = span, + weights = weights) } } model @@ -738,34 +855,14 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, "install with 'BiocInstaller::install(\"mgcv\")'") } -#' @title Match reference Lamas to ChromPeaks for evaluation prior to alignment -#' -#' @description -#' The `matchLamasChromPeaks()` function quickly matches each file's ChromPeaks -#' to Lamas, allowing the user to evaluate the matches for each file. -#' -#' @param object An object of class `XcmsExperiment` with defined ChromPeaks. -#' -#' @param param An object of class `LamaParama` that will later be used for -#' adjustment using the `[adjustRtime()]` function. -#' -#' @return A `LamaParama` object with new slot rtMap composed of a list of -#' matrices representing the 1:1 matches between Lamas (ref) and ChromPeaks -#' (obs). -#' -#' @note If there are no matches, the file retention will not be adjusted when -#' calling [adjustRtime()] with the same `LamaParama` and `XcmsExperiment` -#' object. -#' -#' @author Philippine Louail, Carl Brunius -#' -#' @rdname adjustRtime +#' @export +#' @rdname LamaParama matchLamasChromPeaks <- function(object, param, BPPARAM = bpparam()){ if (!hasChromPeaks(object)) stop("'object' needs to have detected ChromPeaks. ", "Run 'findChromPeaks()' first.") - cp_raw <- split.data.frame(chromPeaks(object)[, c("mz", "rt")], - chromPeaks(object)[, "sample"]) + f <- as.factor(chromPeaks(object)[, "sample"], levels = seq_along(object)) + cp_raw <- split.data.frame(chromPeaks(object)[, c("mz", "rt")], f) param@nChromPeaks <- vapply(cp_raw, nrow, numeric(1)) param@rtMap <- bplapply(cp_raw, FUN = function(x) { .match_reference_anchors(obs_peaks = x, ref_anchors = param@lamas, @@ -775,28 +872,8 @@ matchLamasChromPeaks <- function(object, param, BPPARAM = bpparam()){ param } -#' @title Summary of LamaParama retention time alignment -#' -#' @description -#' The `summarizeLamaMatch()` generates a summary of the LamaParama method. -#' Composed of coverage % of the chrompeaks match over the total chrompeaks of -#' the object. as well as a summary of the model that will be applied to the -#' file to adjust the retention times -#' -#' @param `LamaParama` same object that will be passed to the `adjustRtime()` -#' function. To run this function the `matchLamasChromPeaks()` need to be run -#' on this first. -#' -#' @return A `data.frame` with: -#' -#' - Total_peaks: total number of chromatographic peaks in the file -#' - Matched_peak: The number of matched peaks to Lamas -#' - Total_Lamas: Total number of Lamas -#' - Model_summary: `summary.loess` or `summary.gam` object for each file. -#' -#' @author Philippine Louail, Carl Brunius -#' -#' @rdname adjustRtime +#' @export +#' @rdname LamaParama summarizeLamaMatch <- function(param){ if (!inherits(param, "LamaParama")) stop("The input needs to be of class 'LamaParama'") @@ -843,9 +920,9 @@ summarizeLamaMatch <- function(param){ # had to change because which.max gives 1 if the vector is all FALSE.. idx <- which.max(diff(vec_temp) < 0) # Find next biggest value - next_idx <- suppressWarnings(min(which(vec_temp > vec_temp[idx]))) + next_idx <- which(vec_temp > vec_temp[idx])[1L] - if(next_idx == Inf){ # no very happy about that.. + if (is.na(next_idx)){ l <- idx:length(vec_temp) vec_temp[l] <- seq(vec_temp[idx], by = 0.000001, length.out = length(l)) @@ -862,3 +939,12 @@ summarizeLamaMatch <- function(param){ x[nna_idx] <- vec_temp x } + +#' @export +#' @rdname LamaParama +matchedRtimes <- function(param){ + if(!inherits(param, "LamaParama")) + stop("The inputs need to be of class 'LamaParama'") + rtMap <- param@rtMap + rtMap +} diff --git a/R/functions-Params.R b/R/functions-Params.R index d67a414d2..be73a3427 100644 --- a/R/functions-Params.R +++ b/R/functions-Params.R @@ -309,17 +309,6 @@ LamaParama <- function(lamas = matrix(ncol = 2, nrow = 0, nChromPeaks = nChromPeaks) } -#' Function to access rtMap from `LamaParama` object -#' @export -#' -#' @rdname adjustRtime -rtMap <- function(param){ - if(!inherits(param, "LamaParama")) - stop("The inputs need to be of class LamaParama") - rtMap <- param@rtMap - rtMap -} - #' @rdname adjustRtime ObiwarpParam <- function(binSize = 1, centerSample = integer(), response = 1L, distFun = "cor_opt", gapInit = numeric(), diff --git a/man/LamaParama.Rd b/man/LamaParama.Rd new file mode 100644 index 000000000..e2d79f7b3 --- /dev/null +++ b/man/LamaParama.Rd @@ -0,0 +1,135 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/do_adjustRtime-functions.R +\name{LamaParama} +\alias{LamaParama} +\alias{LamaParama-class} +\alias{matchLamasChromPeaks} +\alias{summarizeLamaMatch} +\alias{matchedRtimes} +\title{Landmark-based alignment: aligning a dataset against an external +reference} +\usage{ +matchLamasChromPeaks(object, param, BPPARAM = bpparam()) + +summarizeLamaMatch(param) + +matchedRtimes(param) +} +\arguments{ +\item{object}{An object of class `XcmsExperiment` with defined ChromPeaks.} + +\item{param}{An object of class `LamaParama` that will later be used for +adjustment using the `[adjustRtime()]` function.} + +\item{BPPARAM}{For `matchLamasChromPeaks()`: parallel processing setup. +Defaults to `BPPARAM = bpparam()`. See [bpparam()] for more information.} + +\item{LamaParama}{same object that will be passed to the `adjustRtime()` +function. To run this function the `matchLamasChromPeaks()` need to be run +on this first.} +} +\value{ +For `matchLamasChromPeaks()`: A `LamaParama` object with new slot `rtMap` +composed of a list of matrices representing the 1:1 matches between Lamas +(ref) and ChromPeaks (obs). To access this, `matchedRtimes()` can be used. + +For `matchedRtimes()`: A list of `data.frame` representing matches +between chromPeaks and `lamas` for each files. + +For `summarizeLamaMatch()`:A `data.frame` with: + +- "Total_peaks": total number of chromatographic peaks in the file. + +- "Matched_peak": The number of matched peaks to Lamas. + +- "Total_Lamas": Total number of Lamas. + +- "Model_summary": `summary.loess` or `summary.gam` object for each file. +} +\description{ +Alignment is achieved using the ['adjustRtime()'] method with a `param` of +class `LamaParama`. This method #' corrects retention time by aligning +chromatographic data with an external reference dataset. Peaks in the +experimental chromatographic data are aligned to predefined landmark +features called "lamas" based on their mass-to-charge ratio (m/z) and +retention time. + +This alignment algorithm matches chromatographic peaks from the experimental +data to the lamas, fitting a model based on this match to adjust their +retention times and minimize discrepancies. This adjustment is performed +file by file. Adjustable parameters such as `ppm`, `tolerance`, and +`toleranceRt` define acceptable deviations during the matching process. +It's crucial to note that only lamas and chromatographic peaks exhibiting a +one-to-one mapping are considered when estimating retention time shifts. If +a file has no peaks matching with lamas, no adjustment will be performed, +and the file will be returned as-is. Users can evaluate this matching, for +example, by checking the number of matches and ranges of the matching +peaks, by first running `[matchLamasChromPeaks()]`. + +Different warping methods are available; users can choose to fit a *loess* +(`method = "loess"`, the default) or a *gam* (`method = "gam"`) between the +reference data points and observed matching ChromPeaks. Additional +parameters such as `span`, `weight`, `outlierTolerance`, `zeroWeight`, +and `bs` are specific to these models. These parameters offer flexibility +in fine-tuning how the matching chromatographic peaks are fitted to the +lamas, thereby generating a model to align the overall retention time for +a single file. + +Other functions related to this method: + + - `LamaParama()`: create the parameter object for alignment using + `adjustRtime()` function. Is also the input for functions listed below. + + - `matchLamasChromPeaks()`: quickly matches each file's ChromPeaks + to Lamas, allowing the user to evaluate the matches for each file. + + - `summarizeLamaMatch()`: generates a summary of the `LamaParama` method. + See below for the details of the return object. + + - `matchedRtimes()`: Access the list of `data.frame` saved in the + `LamaParama` object, generated by the `matchLamasChromPeaks()` function. +} +\note{ +If there are no matches when using `matchLamasChromPeaks()`, the file +retention will not be adjusted when calling [adjustRtime()] with the same +`LamaParama` and `XcmsExperiment` object. + +To see examples on how to utilize this methods and its functionality, +see the vignette. +} +\examples{ +## load test and reference datasets +ref <- loadXcmsData("xmse") +tst <- loadXcmsData("faahko_sub2") + +## create lamas input from the reference dataset +f <- sampleData(ref)$sample_type +f[f == "QC"] <- NA +ref <- filterFeatures(ref, PercentMissingFilter(threshold = 0, f = f)) +ref_mz_rt <- featureDefinitions(ref)[, c("mzmed","rtmed")] + +## Set up the LamaParama object +param <- LamaParama(lamas = ref_mz_rt, method = "loess", span = 0.5, + outlierTolerance = 3, zeroWeight = 10, ppm = 20, + tolerance = 0, toleranceRt = 20, bs = "tp") + +## input into `adjustRtime()` +tst_adjusted <- adjustRtime(tst, param = param) + +## run diagnostic functions to pre-evaluate alignment +param <- matchLamasChromPeaks(tst, param = param) +mtch <- matchedRtimes(param) + +## Access summary of matches and model information +summary <- summarizeLamaMatch(param) + +##coverage for each file +summary$Matched_peaks / summary$Total_peaks * 100 + +## Access the information on the model of for the first file +summary$model_summary[[1]] + +} +\author{ +Carl Brunius, Philippine Louail +} diff --git a/man/adjustRtime.Rd b/man/adjustRtime.Rd index 11712f6f5..f6904aaf0 100644 --- a/man/adjustRtime.Rd +++ b/man/adjustRtime.Rd @@ -1,9 +1,7 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/AllGenerics.R, R/DataClasses.R, -% R/XcmsExperiment.R, R/do_adjustRtime-functions.R, R/functions-Params.R, -% R/functions-XCMSnExp.R, R/methods-OnDiskMSnExp.R, R/methods-Params.R, -% R/methods-XCMSnExp.R -\docType{class} +% Please edit documentation in R/AllGenerics.R, R/XcmsExperiment.R, +% R/functions-Params.R, R/functions-XCMSnExp.R, R/methods-OnDiskMSnExp.R, +% R/methods-Params.R, R/methods-XCMSnExp.R \name{adjustRtime} \alias{adjustRtime} \alias{ObiwarpParam-class} @@ -12,11 +10,8 @@ \alias{adjustRtime,MsExperiment,ObiwarpParam-method} \alias{adjustRtime,MsExperiment,PeakGroupsParam-method} \alias{adjustRtime,XcmsExperiment,LamaParama-method} -\alias{matchLamasChromPeaks} -\alias{summarizeLamaMatch} \alias{PeakGroupsParam} \alias{LamaParama} -\alias{rtMap} \alias{ObiwarpParam} \alias{adjustRtimePeakGroups} \alias{adjustRtime,OnDiskMSnExp,ObiwarpParam-method} @@ -104,10 +99,6 @@ adjustRtime(object, param, ...) \S4method{adjustRtime}{XcmsExperiment,LamaParama}(object, param, BPPARAM = bpparam(), ...) -matchLamasChromPeaks(object, param, BPPARAM = bpparam()) - -summarizeLamaMatch(param) - PeakGroupsParam( minFraction = 0.9, extraPeaks = 1, @@ -133,8 +124,6 @@ LamaParama( nChromPeaks = numeric() ) -rtMap(param) - ObiwarpParam( binSize = 1, centerSample = integer(), @@ -239,10 +228,11 @@ adjustRtimePeakGroups(object, param = PeakGroupsParam(), msLevel = 1L) \S4method{adjustRtime}{XCMSnExp,ObiwarpParam}(object, param, msLevel = 1L) } \arguments{ -\item{object}{An object of class `XcmsExperiment` with defined ChromPeaks.} +\item{object}{For \code{adjustRtime}: an \code{\link[=OnDiskMSnExp]{OnDiskMSnExp()}}, \code{\link[=XCMSnExp]{XCMSnExp()}}, +\code{\link[=MsExperiment]{MsExperiment()}} or \code{\link[=XcmsExperiment]{XcmsExperiment()}} object.} -\item{param}{An object of class `LamaParama` that will later be used for -adjustment using the `[adjustRtime()]` function.} +\item{param}{The parameter object defining the alignment method (and its +setting).} \item{...}{ignored.} @@ -396,10 +386,6 @@ initiating an alignment (for local alignment only).} \item{value}{The value for the slot.} \item{x}{An \code{ObiwarpParam}, \code{PeakGroupsParam} or \code{LamaParama} object.} - -\item{`LamaParama`}{same object that will be passed to the `adjustRtime()` -function. To run this function the `matchLamasChromPeaks()` need to be run -on this first.} } \value{ \code{adjustRtime} on an \code{OnDiskMSnExp} or \code{XCMSnExp} object will return an @@ -414,17 +400,6 @@ parameter object. \code{adjustRtimeGroups} returns a \code{matrix} with the retention times of \emph{marker} features in each sample (each row one feature, each row one sample). - -A `LamaParama` object with new slot rtMap composed of a list of -matrices representing the 1:1 matches between Lamas (ref) and ChromPeaks -(obs). - -A `data.frame` with: - -- Total_peaks: total number of chromatographic peaks in the file -- Matched_peak: The number of matched peaks to Lamas -- Total_Lamas: Total number of Lamas -- Model_summary: `summary.loess` or `summary.gam` object for each file. } \description{ The \code{adjustRtime} method(s) perform retention time correction (alignment) @@ -468,53 +443,14 @@ groups (features) for alignment in \code{object} based on the parameters defined in \code{param}. See also \code{\link[=do_adjustRtime_peakGroups]{do_adjustRtime_peakGroups()}} for the core API function. \item \code{LamaParama}: This function performs retention time correction by aligning -chromatographic data to an external reference dataset (method by Carl -Brunius).The process involves identifying and aligning peaks within the -experimental chromatographic data, represented as an \code{XcmsExperiment} -object, to a predefined set of landmark features called "lamas". These -landmark features are characterized by their mass-to-charge ratio (m/z) -and retention time. - -The alignment algorithm matches chromatographic peaks from the experimental -data to the lamas, fitting a model based on this match to adjust their -retention times and minimize discrepancies. This adjustment is performed -file by file. Adjustable parameters such as \code{ppm}, \code{tolerance}, and -\code{toleranceRt} define acceptable deviations during the matching process. -It's crucial to note that only lamas and chromatographic peaks exhibiting a -one-to-one mapping are considered when estimating retention time shifts. If -a file has no peaks matching with lamas, no adjustment will be performed, -and the file will be returned as-is. Users can evaluate this matching, for -example, by checking the number of matches and ranges of the matching -peaks, by first running \verb{[matchLamasChromPeaks()]}. - -Different warping methods are available; users can choose to fit a \emph{loess} -(\code{method = "loess"}, the default) or a \emph{gam} (\code{method = "gam"}) between the -reference data points and observed matching ChromPeaks. Additional -parameters such as \code{span}, \code{weight}, \code{outlierTolerance}, \code{zeroWeight}, -and \code{bs} are specific to these models. These parameters offer flexibility -in fine-tuning how the matching chromatographic peaks are fitted to the -lamas, thereby generating a model to align the overall retention time for -a single file. +chromatographic data to an external reference dataset (concept and initial +implementation by Carl Brunius). The process involves identifying and +aligning peaks within the experimental chromatographic data, represented +as an \code{XcmsExperiment} object, to a predefined set of landmark features +called "lamas". These landmark features are characterized by their +mass-to-charge ratio (m/z) and retention time. see \code{\link[=LamaParama]{LamaParama()}} for more +information on the method. } - -The `matchLamasChromPeaks()` function quickly matches each file's ChromPeaks -to Lamas, allowing the user to evaluate the matches for each file. - -The `summarizeLamaMatch()` generates a summary of the LamaParama method. -Composed of coverage % of the chrompeaks match over the total chrompeaks of -the object. as well as a summary of the model that will be applied to the -file to adjust the retention times -} -\section{Slots}{ - -\describe{ -\item{\code{rtMap,nChrompeaks}}{slots that should not be accessed by the user.} -}} - -\note{ -If there are no matches, the file retention will not be adjusted when -calling [adjustRtime()] with the same `LamaParama` and `XcmsExperiment` -object. } \section{Subset-based alignment}{ @@ -557,7 +493,5 @@ Nonlinear Peak Alignment, Matching, and Identification" \emph{Anal. Chem.} } \author{ Colin Smith, Johannes Rainer, Philippine Louail, Carl Brunius - -Philippine Louail, Carl Brunius } \concept{retention time correction methods} diff --git a/vignettes/xcms.Rmd b/vignettes/xcms.Rmd index 0fcfe8934..2ab5b6694 100644 --- a/vignettes/xcms.Rmd +++ b/vignettes/xcms.Rmd @@ -1302,19 +1302,11 @@ range to be the same for both dataset. ```{r} ref <- loadXcmsData("xmse") tst <- loadXcmsData("faahko_sub2") - -# Check each dataset ranges. -range(rtime(tst)) -range(rtime(ref)) - -# Adjust so that they have the same. -tst <- filterRt(tst, rt = c(2547, 4265)) -ref <- filterRt(ref, c(2547, 4265)) ``` Now, we will try to align these two samples to the previous dataset. The first step is to extract landmark features (called `lamas`). For this, we will -determine the features that are present in every sample fthe `ref` dataset +determine the features that are present in every sample of the `ref` dataset using the `PercentMissingFilter()` parameter in the `filterFeatures()` function. ```{r} @@ -1328,7 +1320,7 @@ ref_mz_rt This is what the `lamas` input should look like for alignment. In terms of how this method works, the alignment algorithm matches chromatographic peaks from the experimental data to the lamas, fitting a model based on this -match to adjust their retention times and minimize discrepancies between +match to adjust their retention times and minimize differences between the two datasets. Now we can define our `param` object `LamaParama` to prepare for the @@ -1384,7 +1376,7 @@ can be conducted prior to any adjustments. ```{r} param <- matchLamasChromPeaks(tst, param = param) -rtMap <- rtMap(param) +mtch <- matchedRtimes(param) #' BPC of the first sample with matches to lamas overlay par(mfrow = c(1, 1)) @@ -1392,7 +1384,7 @@ plot(bpc[1, 1], col = "#00000080", main = "Distribution CP matched to Lamas") points(rtime(bpc_tst_adj[1, 1]), intensity(bpc_tst_adj[1, 1]), type = "l", col = "#0000ff80") grid() -abline(v = rtMap[[1]]$obs) +abline(v = mtch[[1]]$obs) ``` The overlay of BPC above provides insight into the correlation between accurate From 8f464ac9f9f2068da577a97180041c8ea7ee5b7b Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Mon, 18 Mar 2024 11:38:30 +0100 Subject: [PATCH 13/18] fixes --- R/AllGenerics.R | 59 +++--------- R/XcmsExperiment.R | 2 +- R/do_adjustRtime-functions.R | 75 ++++++++++++--- R/functions-Params.R | 10 +- R/methods-Params.R | 44 +++------ man/LamaParama.Rd | 95 +++++++++++++++++-- man/adjustRtime.Rd | 76 +++------------ man/do_adjustRtime_peakGroups.Rd | 6 +- .../testthat/test_do_adjustRtime-functions.R | 12 +-- vignettes/xcms.Rmd | 2 +- 10 files changed, 202 insertions(+), 179 deletions(-) diff --git a/R/AllGenerics.R b/R/AllGenerics.R index 213219483..7e4f257cf 100644 --- a/R/AllGenerics.R +++ b/R/AllGenerics.R @@ -12,21 +12,21 @@ setGeneric("addParams<-", function(object, value) standardGeneric("addParams<-") setGeneric("addProcessHistory", function(object, ...) standardGeneric("addProcessHistory")) -#' @aliases adjustRtime ObiwarpParam-class PeakGroupsParam-class LamaParama-class +#' @aliases adjustRtime ObiwarpParam-class PeakGroupsParam-class #' #' @title Alignment: Retention time correction methods. #' #' @description #' #' The `adjustRtime` method(s) perform retention time correction (alignment) -#' between chromatograms of different samples/dataset. Alignment is performed by default -#' on MS level 1 data. Retention times of spectra from other MS levels, if -#' present, are subsequently adjusted based on the adjusted retention times -#' of the MS1 spectra. Note that calling `adjustRtime` on a *xcms* result object -#' will remove any eventually present previous alignment results as well as -#' any correspondence analysis results. To run a second round of alignment, -#' raw retention times need to be replaced with adjusted ones using the -#' [applyAdjustedRtime()] function. +#' between chromatograms of different samples/dataset. Alignment is performed +#' by default on MS level 1 data. Retention times of spectra from other MS +#' levels, if present, are subsequently adjusted based on the adjusted +#' retention times of the MS1 spectra. Note that calling `adjustRtime` on a +#' *xcms* result object will remove any eventually present previous alignment +#' results as well as any correspondence analysis results. To run a second +#' round of alignment, raw retention times need to be replaced with adjusted +#' ones using the [applyAdjustedRtime()] function. #' #' The alignment method can be specified (and configured) using a dedicated #' `param` argument. @@ -100,10 +100,6 @@ setGeneric("addProcessHistory", function(object, ...) #' @param BPPARAM parallel processing setup. Defaults to `BPPARAM = bpparam()`. #' See [bpparam()] for details. #' -#' @param bs For `LamaParama`: `character(1)` defining the GAM moothing method. -#' (defaults to thin plate; NB: B- and P-splines have been shown to produce -#' artefacts). -#' #' @param centerSample \code{integer(1)} defining the index of the center sample #' in the experiment. It defaults to #' \code{floor(median(1:length(fileNames(object))))}. Note that if @@ -164,16 +160,9 @@ setGeneric("addProcessHistory", function(object, ...) #' @param initPenalty For `ObiwarpParam`: `numeric(1)` defining the penalty for #' initiating an alignment (for local alignment only). #' -#' @param lamas For `LamaParama`: `matrix` or `data.frame` with the m/z and -#' retention times values of features (as first and second column) from the -#' external dataset on which the alignment will be based on. -#' #' @param localAlignment For `ObiwarpParam`: `logical(1)` whether a local #' alignment should be performed instead of the default global alignment. #' -#' @param method For `LamaParama`:`character(1)` with the type of warping. -#' Either `method = "gam"` or `method = "loess"` (default). -#' #' @param minFraction For `PeakGroupsParam`: `numeric(1)` between 0 and 1 #' defining the minimum required proportion of samples in which peaks for #' the peak group were identified. Peak groups passing this criteria will @@ -191,12 +180,6 @@ setGeneric("addProcessHistory", function(object, ...) #' @param object For `adjustRtime`: an [OnDiskMSnExp()], [XCMSnExp()], #' [MsExperiment()] or [XcmsExperiment()] object. #' -#' @param outlierTolerance For `LamaParama`: `numeric(1)` defining the settings -#' for outlier removal during the fitting. By default -#' (with `outlierTolerance = 3`), all data points with absolute residuals -#' larger than 3 times the mean absolute residual of all data points from -#' the first, initial fit, are removed from the final model fit. -#' #' @param param The parameter object defining the alignment method (and its #' setting). #' @@ -206,10 +189,6 @@ setGeneric("addProcessHistory", function(object, ...) #' feature/peak group. The `adjustRtimePeakGroups` method is used by #' default to determine this matrix on the provided `object`. #' -#' @param ppm For `LamaParama`: `numeric(1)` defining the m/z-relative maximal -#' allowed difference in m/z between `lamas` and chromatographic peaks. Used -#' for the mapping of identified chromatographic peaks and lamas. -#' #' @param response For `ObiwarpParam`: `numeric(1)` defining the #' *responsiveness* of warping with `response = 0` giving linear warping on #' start and end points and `response = 100` warping using all bijective @@ -219,9 +198,9 @@ setGeneric("addProcessHistory", function(object, ...) #' be used to interpolate corrected retention times for all peak groups. #' Can be either `"loess"` or `"linear"`. #' -#' @param span For `PeakGroupsParam` and `LamaParama`: `numeric(1)` defining -#' the degree of smoothing (if `smooth = "loess"` or `method = "loess"`). -#' This parameter is passed to the internal call to [loess()]. +#' @param span For `PeakGroupsParam`: `numeric(1)` defining +#' the degree of smoothing (if `smooth = "loess"`). This parameter is +#' passed to the internal call to [loess()]. #' #' @param subset For `ObiwarpParam` and `PeakGroupsParam`: `integer` with the #' indices of samples within the experiment on which the alignment models @@ -234,24 +213,10 @@ setGeneric("addProcessHistory", function(object, ...) #' Supported options are `"previous"` and `"average"` (default). #' See *Subset-based alignment* section for details. #' -#' @param tolerance For `LamaParama`: `numeric(1)` defining the absolute -#' acceptable difference in m/z between lamas and chromatographic peaks. -#' Used for the mapping of identified chromatographic peaks and `lamas`. -#' -#' @param toleranceRt For `LamaParama`: `numeric(1)` defining the absolute -#' acceptable difference in retention time between lamas and -#' chromatographic peaks. Used for the mapping of identified chromatographic -#' peaks and `lamas`. -#' #' @param value For all assignment methods: the value to set/replace. #' #' @param x An `ObiwarpParam`, `PeakGroupsParam` or `LamaParama` object. #' -#' @param zeroWeight For `LamaParama`: `numeric(1)`: defines the weight of the -#' first data point (i.e. retention times of the first lama-chromatographic -#' peak pair). Values larger than 1 reduce warping problems in the early RT -#' range. -#' #' @param ... ignored. #' #' @return diff --git a/R/XcmsExperiment.R b/R/XcmsExperiment.R index c769c3674..cad8a9c2b 100644 --- a/R/XcmsExperiment.R +++ b/R/XcmsExperiment.R @@ -1357,7 +1357,7 @@ setMethod( object }) -#'@rdname adjustRtime +#'@rdname LamaParama setMethod( "adjustRtime", signature(object = "XcmsExperiment", param = "LamaParama"), function(object, param, BPPARAM = bpparam(), ...) { diff --git a/R/do_adjustRtime-functions.R b/R/do_adjustRtime-functions.R index ffed94d6f..2d11ae2ed 100644 --- a/R/do_adjustRtime-functions.R +++ b/R/do_adjustRtime-functions.R @@ -622,8 +622,9 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' #' Other functions related to this method: #' -#' - `LamaParama()`: create the parameter object for alignment using -#' `adjustRtime()` function. Is also the input for functions listed below. +#' - `LamaParama()`: return the respective the parameter object for alignment +#' using `adjustRtime()` function. Is also the input for functions listed +#' below. #' #' - `matchLamasChromPeaks()`: quickly matches each file's ChromPeaks #' to Lamas, allowing the user to evaluate the matches for each file. @@ -634,18 +635,71 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' - `matchedRtimes()`: Access the list of `data.frame` saved in the #' `LamaParama` object, generated by the `matchLamasChromPeaks()` function. #' +#' - `plot()`:plot the chromatographic peaks versus the reference lamas as +#' well as the fitting line for the chosen model type. The user can decide +#' what file to inspect by specifying the assay number with the parameter +#' `assay` +#' #' #' @param BPPARAM For `matchLamasChromPeaks()`: parallel processing setup. #' Defaults to `BPPARAM = bpparam()`. See [bpparam()] for more information. #' +#' @param bs For `LamaParama()`: `character(1)` defining the GAM smoothing method. +#' (defaults to thin plate, `bs = "tp"`) +#' +#' @param colPoints For `plot()`: color for the plotting of the datapoint. +#' +#' @param colFit For `plot()`: color of the fitting line. +#' +#' @param index For `plot()`: `numeric(1)` index of the file that should be +#' plotted. +#' +#' @param lamas For `LamaParama`: `matrix` or `data.frame` with the m/z and +#' retention times values of features (as first and second column) from the +#' external dataset on which the alignment will be based on. +#' +#' +#' @param method For `LamaParama`:`character(1)` with the type of warping. +#' Either `method = "gam"` or `method = "loess"` (default). +#' #' @param object An object of class `XcmsExperiment` with defined ChromPeaks. #' +#' @param outlierTolerance For `LamaParama`: `numeric(1)` defining the settings +#' for outlier removal during the fitting. By default +#' (with `outlierTolerance = 3`), all data points with absolute residuals +#' larger than 3 times the mean absolute residual of all data points from +#' the first, initial fit, are removed from the final model fit. +#' #' @param param An object of class `LamaParama` that will later be used for #' adjustment using the `[adjustRtime()]` function. #' -#' @param LamaParama same object that will be passed to the `adjustRtime()` -#' function. To run this function the `matchLamasChromPeaks()` need to be run -#' on this first. +#' @param ppm For `LamaParama`: `numeric(1)` defining the m/z-relative maximal +#' allowed difference in m/z between `lamas` and chromatographic peaks. Used +#' for the mapping of identified chromatographic peaks and lamas. +#' +#' @param span For `LamaParama`: `numeric(1)` defining +#' the degree of smoothing (`method = "loess"`). This parameter is passed +#' to the internal call to [loess()]. +#' +#' @param tolerance For `LamaParama`: `numeric(1)` defining the absolute +#' acceptable difference in m/z between lamas and chromatographic peaks. +#' Used for the mapping of identified chromatographic peaks and `lamas`. +#' +#' @param toleranceRt For `LamaParama`: `numeric(1)` defining the absolute +#' acceptable difference in retention time between lamas and +#' chromatographic peaks. Used for the mapping of identified chromatographic +#' peaks and `lamas`. +#' +#' @param x For `plot()`: object of class `LamaParama` to be plotted. +#' +#' @param xlab,ylab For `plot()`: x- and y-axis labels. +#' +#' @param zeroWeight For `LamaParama`: `numeric(1)`: defines the weight of the +#' first data point (i.e. retention times of the first lama-chromatographic +#' peak pair). Values larger than 1 reduce warping problems in the early RT +#' range. +#' +#' @param ... For `plot()`: extra parameters to be passed to the function. #' #' @return #' For `matchLamasChromPeaks()`: A `LamaParama` object with new slot `rtMap` @@ -671,6 +725,7 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' tst <- loadXcmsData("faahko_sub2") #' #' ## create lamas input from the reference dataset +#' library(MsExperiment) #' f <- sampleData(ref)$sample_type #' f[f == "QC"] <- NA #' ref <- filterFeatures(ref, PercentMissingFilter(threshold = 0, f = f)) @@ -861,7 +916,7 @@ matchLamasChromPeaks <- function(object, param, BPPARAM = bpparam()){ if (!hasChromPeaks(object)) stop("'object' needs to have detected ChromPeaks. ", "Run 'findChromPeaks()' first.") - f <- as.factor(chromPeaks(object)[, "sample"], levels = seq_along(object)) + f <- factor(chromPeaks(object)[, "sample"], levels = seq_along(object)) cp_raw <- split.data.frame(chromPeaks(object)[, c("mz", "rt")], f) param@nChromPeaks <- vapply(cp_raw, nrow, numeric(1)) param@rtMap <- bplapply(cp_raw, FUN = function(x) { @@ -894,13 +949,7 @@ summarizeLamaMatch <- function(param){ res } -#' @title Perform linear interpolation for unsorted retention time. -#' -#' @description -#' This function performs linear interpolation on the non-sorted parts of an -#' input vector of retention time. To see more details on the interpolation, -#' see [approx()] -#' + #' @param rtime `numeric` vector with the retention times for one file/sample. #' #' @return vector with sorted retention time. diff --git a/R/functions-Params.R b/R/functions-Params.R index be73a3427..104702ecd 100644 --- a/R/functions-Params.R +++ b/R/functions-Params.R @@ -274,7 +274,7 @@ PeakGroupsParam <- function(minFraction = 0.9, extraPeaks = 1, subset = as.integer(subset), subsetAdjust = subsetAdjust) } -#' @rdname adjustRtime +#' @rdname LamaParama LamaParama <- function(lamas = matrix(ncol = 2, nrow = 0, dimnames = list(NULL, c("mz", "rt"))), method = c("loess", "gam"), @@ -284,9 +284,7 @@ LamaParama <- function(lamas = matrix(ncol = 2, nrow = 0, ppm = 20, tolerance = 0, toleranceRt = 5, - bs = "tp", - rtMap = list(), - nChromPeaks = numeric()) { + bs = "tp") { method <- match.arg(method) if (method == "gam") .check_gam_library() @@ -304,9 +302,7 @@ LamaParama <- function(lamas = matrix(ncol = 2, nrow = 0, ppm = ppm, tolerance = tolerance, toleranceRt = toleranceRt, - bs = bs, - rtMap = rtMap, - nChromPeaks = nChromPeaks) + bs = bs) } #' @rdname adjustRtime diff --git a/R/methods-Params.R b/R/methods-Params.R index a358450c7..0843298c8 100644 --- a/R/methods-Params.R +++ b/R/methods-Params.R @@ -1252,35 +1252,21 @@ setReplaceMethod("subsetAdjust", "PeakGroupsParam", function(object, value) { ############################################################ ## LamaParama -#' @title Plot summary of information of matching lamas to chromPeaks -#' -#' @description -#' the `plot()` function for `LamaParama` object allows to plot the obs -#' chromatographic peaks versus the reference lamas as well as the fitting -#' line for the chosen model type. The user can decide what file to inspect by -#' specifying the assay number with the parameter `assay` -#' -#' @param assay `numeric(1)`, assay that should be plotted. -#' -#' @return A plot -#' -#' @export -#' -#' @noRd -setMethod("plot", "LamaParama", function(x, index = 1L, colPoints = "#00000060", - colFit = "#00000080", - xlab = "Matched Chromatographic peaks", - ylab = "Lamas", - main = NULL,...){ - model <- xcms:::.rt_model(method = param@method, - rt_map= x@rtMap[[index]], span = param@span, - resid_ratio = param@outlierTolerance, - zero_weight = param@zeroWeight, - bs = param@bs) - x <- x@rtMap[[index]] - plot(x, type = "p", xlab = xlab, ylab = ylab, col = "blue", - main = main) - points(model, type = "l", col = "black") +#' @rdname LamaParama +setMethod("plot", signature(x = "LamaParama"), + function(x, index = 1L, + colPoints = "#00000060", + colFit = "#00000080", + xlab = "Matched Chromatographic peaks", + ylab = "Lamas",...){ + model <- .rt_model(method = x@method, + rt_map= x@rtMap[[index]], span = x@span, + resid_ratio = x@outlierTolerance, + zero_weight = x@zeroWeight, + bs = x@bs) + datap <- x@rtMap[[index]] + plot(datap, type = "p", xlab = xlab, ylab = ylab, col = colPoints, ...) + points(model, type = "l", col = colFit) }) diff --git a/man/LamaParama.Rd b/man/LamaParama.Rd index e2d79f7b3..34c397ac2 100644 --- a/man/LamaParama.Rd +++ b/man/LamaParama.Rd @@ -1,19 +1,46 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/do_adjustRtime-functions.R -\name{LamaParama} +% Please edit documentation in R/XcmsExperiment.R, R/do_adjustRtime-functions.R, +% R/functions-Params.R, R/methods-Params.R +\name{adjustRtime,XcmsExperiment,LamaParama-method} +\alias{adjustRtime,XcmsExperiment,LamaParama-method} \alias{LamaParama} \alias{LamaParama-class} \alias{matchLamasChromPeaks} \alias{summarizeLamaMatch} \alias{matchedRtimes} +\alias{plot,LamaParama,ANY-method} \title{Landmark-based alignment: aligning a dataset against an external reference} \usage{ +\S4method{adjustRtime}{XcmsExperiment,LamaParama}(object, param, BPPARAM = bpparam(), ...) + matchLamasChromPeaks(object, param, BPPARAM = bpparam()) summarizeLamaMatch(param) matchedRtimes(param) + +LamaParama( + lamas = matrix(ncol = 2, nrow = 0, dimnames = list(NULL, c("mz", "rt"))), + method = c("loess", "gam"), + span = 0.5, + outlierTolerance = 3, + zeroWeight = 10, + ppm = 20, + tolerance = 0, + toleranceRt = 5, + bs = "tp" +) + +\S4method{plot}{LamaParama,ANY}( + x, + index = 1L, + colPoints = "#00000060", + colFit = "#00000080", + xlab = "Matched Chromatographic peaks", + ylab = "Lamas", + ... +) } \arguments{ \item{object}{An object of class `XcmsExperiment` with defined ChromPeaks.} @@ -24,9 +51,56 @@ adjustment using the `[adjustRtime()]` function.} \item{BPPARAM}{For `matchLamasChromPeaks()`: parallel processing setup. Defaults to `BPPARAM = bpparam()`. See [bpparam()] for more information.} -\item{LamaParama}{same object that will be passed to the `adjustRtime()` -function. To run this function the `matchLamasChromPeaks()` need to be run -on this first.} +\item{...}{For `plot()`: extra parameters to be passed to the function.} + +\item{lamas}{For `LamaParama`: `matrix` or `data.frame` with the m/z and +retention times values of features (as first and second column) from the +external dataset on which the alignment will be based on.} + +\item{method}{For `LamaParama`:`character(1)` with the type of warping. +Either `method = "gam"` or `method = "loess"` (default).} + +\item{span}{For `LamaParama`: `numeric(1)` defining +the degree of smoothing (`method = "loess"`). This parameter is passed +to the internal call to [loess()].} + +\item{outlierTolerance}{For `LamaParama`: `numeric(1)` defining the settings +for outlier removal during the fitting. By default +(with `outlierTolerance = 3`), all data points with absolute residuals +larger than 3 times the mean absolute residual of all data points from +the first, initial fit, are removed from the final model fit.} + +\item{zeroWeight}{For `LamaParama`: `numeric(1)`: defines the weight of the +first data point (i.e. retention times of the first lama-chromatographic +peak pair). Values larger than 1 reduce warping problems in the early RT +range.} + +\item{ppm}{For `LamaParama`: `numeric(1)` defining the m/z-relative maximal +allowed difference in m/z between `lamas` and chromatographic peaks. Used +for the mapping of identified chromatographic peaks and lamas.} + +\item{tolerance}{For `LamaParama`: `numeric(1)` defining the absolute +acceptable difference in m/z between lamas and chromatographic peaks. +Used for the mapping of identified chromatographic peaks and `lamas`.} + +\item{toleranceRt}{For `LamaParama`: `numeric(1)` defining the absolute +acceptable difference in retention time between lamas and +chromatographic peaks. Used for the mapping of identified chromatographic +peaks and `lamas`.} + +\item{bs}{For `LamaParama()`: `character(1)` defining the GAM smoothing method. +(defaults to thin plate, `bs = "tp"`)} + +\item{x}{For `plot()`: object of class `LamaParama` to be plotted.} + +\item{index}{For `plot()`: `numeric(1)` index of the file that should be +plotted.} + +\item{colPoints}{For `plot()`: color for the plotting of the datapoint.} + +\item{colFit}{For `plot()`: color of the fitting line.} + +\item{xlab, ylab}{For `plot()`: x- and y-axis labels.} } \value{ For `matchLamasChromPeaks()`: A `LamaParama` object with new slot `rtMap` @@ -77,8 +151,9 @@ a single file. Other functions related to this method: - - `LamaParama()`: create the parameter object for alignment using - `adjustRtime()` function. Is also the input for functions listed below. + - `LamaParama()`: return the respective the parameter object for alignment + using `adjustRtime()` function. Is also the input for functions listed + below. - `matchLamasChromPeaks()`: quickly matches each file's ChromPeaks to Lamas, allowing the user to evaluate the matches for each file. @@ -88,6 +163,11 @@ Other functions related to this method: - `matchedRtimes()`: Access the list of `data.frame` saved in the `LamaParama` object, generated by the `matchLamasChromPeaks()` function. + + - `plot()`:plot the chromatographic peaks versus the reference lamas as + well as the fitting line for the chosen model type. The user can decide + what file to inspect by specifying the assay number with the parameter + `assay` } \note{ If there are no matches when using `matchLamasChromPeaks()`, the file @@ -103,6 +183,7 @@ ref <- loadXcmsData("xmse") tst <- loadXcmsData("faahko_sub2") ## create lamas input from the reference dataset +library(MsExperiment) f <- sampleData(ref)$sample_type f[f == "QC"] <- NA ref <- filterFeatures(ref, PercentMissingFilter(threshold = 0, f = f)) diff --git a/man/adjustRtime.Rd b/man/adjustRtime.Rd index f6904aaf0..884a3778a 100644 --- a/man/adjustRtime.Rd +++ b/man/adjustRtime.Rd @@ -6,12 +6,9 @@ \alias{adjustRtime} \alias{ObiwarpParam-class} \alias{PeakGroupsParam-class} -\alias{LamaParama-class} \alias{adjustRtime,MsExperiment,ObiwarpParam-method} \alias{adjustRtime,MsExperiment,PeakGroupsParam-method} -\alias{adjustRtime,XcmsExperiment,LamaParama-method} \alias{PeakGroupsParam} -\alias{LamaParama} \alias{ObiwarpParam} \alias{adjustRtimePeakGroups} \alias{adjustRtime,OnDiskMSnExp,ObiwarpParam-method} @@ -97,8 +94,6 @@ adjustRtime(object, param, ...) \S4method{adjustRtime}{MsExperiment,PeakGroupsParam}(object, param, msLevel = 1L, ...) -\S4method{adjustRtime}{XcmsExperiment,LamaParama}(object, param, BPPARAM = bpparam(), ...) - PeakGroupsParam( minFraction = 0.9, extraPeaks = 1, @@ -110,20 +105,6 @@ PeakGroupsParam( subsetAdjust = c("average", "previous") ) -LamaParama( - lamas = matrix(ncol = 2, nrow = 0, dimnames = list(NULL, c("mz", "rt"))), - method = c("loess", "gam"), - span = 0.5, - outlierTolerance = 3, - zeroWeight = 10, - ppm = 20, - tolerance = 0, - toleranceRt = 5, - bs = "tp", - rtMap = list(), - nChromPeaks = numeric() -) - ObiwarpParam( binSize = 1, centerSample = integer(), @@ -278,9 +259,9 @@ sample that are assigned to the group.} be used to interpolate corrected retention times for all peak groups. Can be either \code{"loess"} or \code{"linear"}.} -\item{span}{For \code{PeakGroupsParam} and \code{LamaParama}: \code{numeric(1)} defining -the degree of smoothing (if \code{smooth = "loess"} or \code{method = "loess"}). -This parameter is passed to the internal call to \code{\link[=loess]{loess()}}.} +\item{span}{For \code{PeakGroupsParam}: \code{numeric(1)} defining +the degree of smoothing (if \code{smooth = "loess"}). This parameter is +passed to the internal call to \code{\link[=loess]{loess()}}.} \item{family}{For \code{PeakGroupsParam}: \code{character(1)} defining the method for loess smoothing. Allowed values are \code{"gaussian"} and \code{"symmetric"}. See @@ -303,41 +284,6 @@ specifying the method with which non-subset samples should be adjusted. Supported options are \code{"previous"} and \code{"average"} (default). See \emph{Subset-based alignment} section for details.} -\item{lamas}{For \code{LamaParama}: \code{matrix} or \code{data.frame} with the m/z and -retention times values of features (as first and second column) from the -external dataset on which the alignment will be based on.} - -\item{method}{For \code{LamaParama}:\code{character(1)} with the type of warping. -Either \code{method = "gam"} or \code{method = "loess"} (default).} - -\item{outlierTolerance}{For \code{LamaParama}: \code{numeric(1)} defining the settings -for outlier removal during the fitting. By default -(with \code{outlierTolerance = 3}), all data points with absolute residuals -larger than 3 times the mean absolute residual of all data points from -the first, initial fit, are removed from the final model fit.} - -\item{zeroWeight}{For \code{LamaParama}: \code{numeric(1)}: defines the weight of the -first data point (i.e. retention times of the first lama-chromatographic -peak pair). Values larger than 1 reduce warping problems in the early RT -range.} - -\item{ppm}{For \code{LamaParama}: \code{numeric(1)} defining the m/z-relative maximal -allowed difference in m/z between \code{lamas} and chromatographic peaks. Used -for the mapping of identified chromatographic peaks and lamas.} - -\item{tolerance}{For \code{LamaParama}: \code{numeric(1)} defining the absolute -acceptable difference in m/z between lamas and chromatographic peaks. -Used for the mapping of identified chromatographic peaks and \code{lamas}.} - -\item{toleranceRt}{For \code{LamaParama}: \code{numeric(1)} defining the absolute -acceptable difference in retention time between lamas and -chromatographic peaks. Used for the mapping of identified chromatographic -peaks and \code{lamas}.} - -\item{bs}{For \code{LamaParama}: \code{character(1)} defining the GAM moothing method. -(defaults to thin plate; NB: B- and P-splines have been shown to produce -artefacts).} - \item{binSize}{\code{numeric(1)} defining the bin size (in mz dimension) to be used for the \emph{profile matrix} generation. See \code{step} parameter in \code{\link{profile-matrix}} documentation for more details.} @@ -403,14 +349,14 @@ features in each sample (each row one feature, each row one sample). } \description{ The \code{adjustRtime} method(s) perform retention time correction (alignment) -between chromatograms of different samples/dataset. Alignment is performed by default -on MS level 1 data. Retention times of spectra from other MS levels, if -present, are subsequently adjusted based on the adjusted retention times -of the MS1 spectra. Note that calling \code{adjustRtime} on a \emph{xcms} result object -will remove any eventually present previous alignment results as well as -any correspondence analysis results. To run a second round of alignment, -raw retention times need to be replaced with adjusted ones using the -\code{\link[=applyAdjustedRtime]{applyAdjustedRtime()}} function. +between chromatograms of different samples/dataset. Alignment is performed +by default on MS level 1 data. Retention times of spectra from other MS +levels, if present, are subsequently adjusted based on the adjusted +retention times of the MS1 spectra. Note that calling \code{adjustRtime} on a +\emph{xcms} result object will remove any eventually present previous alignment +results as well as any correspondence analysis results. To run a second +round of alignment, raw retention times need to be replaced with adjusted +ones using the \code{\link[=applyAdjustedRtime]{applyAdjustedRtime()}} function. The alignment method can be specified (and configured) using a dedicated \code{param} argument. diff --git a/man/do_adjustRtime_peakGroups.Rd b/man/do_adjustRtime_peakGroups.Rd index 996e42553..4d0d898ea 100644 --- a/man/do_adjustRtime_peakGroups.Rd +++ b/man/do_adjustRtime_peakGroups.Rd @@ -52,9 +52,9 @@ sample that are assigned to the group.} be used to interpolate corrected retention times for all peak groups. Can be either \code{"loess"} or \code{"linear"}.} -\item{span}{For \code{PeakGroupsParam} and \code{LamaParama}: \code{numeric(1)} defining -the degree of smoothing (if \code{smooth = "loess"} or \code{method = "loess"}). -This parameter is passed to the internal call to \code{\link[=loess]{loess()}}.} +\item{span}{For \code{PeakGroupsParam}: \code{numeric(1)} defining +the degree of smoothing (if \code{smooth = "loess"}). This parameter is +passed to the internal call to \code{\link[=loess]{loess()}}.} \item{family}{For \code{PeakGroupsParam}: \code{character(1)} defining the method for loess smoothing. Allowed values are \code{"gaussian"} and \code{"symmetric"}. See diff --git a/tests/testthat/test_do_adjustRtime-functions.R b/tests/testthat/test_do_adjustRtime-functions.R index ef8545469..7c2cb2110 100644 --- a/tests/testthat/test_do_adjustRtime-functions.R +++ b/tests/testthat/test_do_adjustRtime-functions.R @@ -353,7 +353,7 @@ test_that(".adjust_rt_model works", { expect_true(mean(abs(rt_adj - rt_ref)) < mean(abs(rt_raw - rt_ref))) }) -test_that("linear_interpolate_vec interpolates correctly", { +test_that("force_sorted interpolates correctly", { vec <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, 1.1, 1.04, 1.4, 1.6, NA, NA) # Expected result after interpolation sorted <- c(NA, NA, NA, 1.2, 1.225, 1.25, 1.275, 1.3, 1.333, 1.367, @@ -379,8 +379,8 @@ test_that("matchLamasChromPeaks works", { expect_equal(param@rtMap, list()) param <- matchLamasChromPeaks(tst, param) expect_true(inherits(param, "LamaParama")) - expect_equal(length(param@rtMap), length(object)) - expect_equal(length(param@nChromPeaks), length(object)) + expect_equal(length(param@rtMap), length(tst)) + expect_equal(length(param@nChromPeaks), length(tst)) }) test_that("summarizeLamaMatch works", { @@ -396,7 +396,7 @@ test_that("summarizeLamaMatch works", { test_that("Accessing rtMap from LamaParama object works", { param <- LamaParama(lamas = ref_mz_rt, toleranceRt = 10) param <- matchLamasChromPeaks(tst, param) - expect_error(rtMap(ObiwarpParam()), "class") - rtMap <- rtMap(param) - expect_equal(length(rtMap), length(param@rtMap)) + expect_error(matchedRtimes(ObiwarpParam()), "class") + mtch <- matchedRtimes(param) + expect_equal(length(mtch), length(param@rtMap)) }) diff --git a/vignettes/xcms.Rmd b/vignettes/xcms.Rmd index 2ab5b6694..e420bd564 100644 --- a/vignettes/xcms.Rmd +++ b/vignettes/xcms.Rmd @@ -1409,7 +1409,7 @@ summary$Matched_peaks / summary$Total_peaks * 100 summary$model_summary[[1]] # Plot obs vs. ref with fitting line -plot(param, index = 1L, main = "ChromPeaks versur lamas for the first file") +plot(param, index = 1L, main = "ChromPeaks versur Lamas for the first file") ``` # Additional details and notes From 5e84836ccc58b0a12ed1cbefc55fee35facbb4e1 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Mon, 18 Mar 2024 12:31:33 +0100 Subject: [PATCH 14/18] Update xcms.Rmd --- vignettes/xcms.Rmd | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vignettes/xcms.Rmd b/vignettes/xcms.Rmd index e420bd564..3a5cd1b80 100644 --- a/vignettes/xcms.Rmd +++ b/vignettes/xcms.Rmd @@ -1409,7 +1409,8 @@ summary$Matched_peaks / summary$Total_peaks * 100 summary$model_summary[[1]] # Plot obs vs. ref with fitting line -plot(param, index = 1L, main = "ChromPeaks versur Lamas for the first file") +plot(param, index = 1L, main = "ChromPeaks versus Lamas for the first file", + colPoint = "red") ``` # Additional details and notes From f1b12527b27d71ee1007f151d54c98a18bbc00e6 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Tue, 19 Mar 2024 16:38:57 +0100 Subject: [PATCH 15/18] Squashed commit of the following: commit c37baa789f0b55768ba43362ce19d32cadaef110 Author: jorainer Date: Mon Mar 18 07:59:02 2024 +0100 fix: update required Spectra version commit 2faed9073ad90cb7aa785ca1ba565fd99dbd7eca Author: jorainer Date: Fri Mar 15 14:58:39 2024 +0100 fix: require ProtGenerics 1.35.4 commit 086999d759fce9129993f39924a202f0d472a651 Author: jorainer Date: Thu Mar 14 14:46:02 2024 +0100 refactor: cleanup NAMESPACE and dependencies and documentation - Re-save data object. - Fix documentation and unit tests following the move of `MSnbase` from Depends to Imports. commit 97d7d4c8c86e637893b50d8340385045ba410ad7 Author: jorainer Date: Thu Mar 14 13:54:53 2024 +0100 docs: replace inst/NEWS with NEWS.md commit a455e6b229c0d0c4d1501effcd6a0f12d96b85e9 Author: jorainer Date: Wed Mar 13 09:54:18 2024 +0100 refactor: clean up namespace - Remove not required packages. - Move packages from Depends to Imports. commit 28e4ca7c0732ef20b3aed3ea9864c55d8b9c0009 Merge: 19b1b9ab 90c30b8e Author: jorainer Date: Fri Mar 8 16:09:04 2024 +0100 Merge branch 'devel' into jomain commit 19b1b9ab5debbb1faf880809f0e8c7b3d51bccd2 Author: jorainer Date: Tue Feb 27 11:04:15 2024 +0100 refactor: ensure backward compatibility of parameter objects commit 40c09c00480e310ce8b187210bab01558869ff5c Merge: 17b487fb 48ac5e0c Author: jorainer Date: Tue Feb 27 11:01:02 2024 +0100 Merge branch 'devel' into jomain commit 17b487fb2884162b2b0cac3be9979e4546c412a0 Merge: c36018be 1cf7cda4 Author: jorainer Date: Mon Feb 5 14:49:22 2024 +0100 Merge branch 'devel' into jomain commit c36018be05da2d96f0592007ca8444ca36d0665c Author: jorainer Date: Thu Feb 1 15:43:19 2024 +0100 fix: call updateObject for some Param classes in as.list --- DESCRIPTION | 22 +- NAMESPACE | 33 +- NEWS.md | 1263 +++++++++++++++++ R/AllGenerics.R | 15 +- R/DataClasses.R | 15 +- R/do_findChromPeaks-functions.R | 23 +- R/do_groupChromPeaks-functions.R | 2 + R/functions-Chromatogram.R | 4 +- R/functions-OnDiskMSnExp.R | 1 + R/functions-XCMSnExp.R | 4 + R/functions-XChromatogram.R | 1 + R/functions-XChromatograms.R | 1 + R/functions-imputation.R | 2 + R/functions-utils.R | 18 +- R/functions-xcmsSet.R | 5 +- R/methods-Chromatogram.R | 3 + R/methods-MChromatograms.R | 11 +- R/methods-Params.R | 12 + R/methods-XCMSnExp.R | 4 + R/methods-group-features.R | 3 + R/methods-xcmsSet.R | 3 + R/writemztab.R | 46 +- data/faahko_sub.RData | Bin 71586 -> 29944 bytes data/faahko_sub2.RData | Bin 61998 -> 26812 bytes data/xdata.RData | Bin 109180 -> 174268 bytes data/xmse.RData | Bin 316799 -> 181928 bytes inst/NEWS | 13 +- man/XCMSnExp-class.Rd | 1 + man/XCMSnExp-filter-methods.Rd | 1 + man/XChromatogram.Rd | 2 + man/applyAdjustedRtime.Rd | 1 + man/chromPeakChromatograms.Rd | 3 + man/chromatogram-method.Rd | 1 + man/correlate-Chromatogram.Rd | 1 + man/do_findChromPeaks_centWave.Rd | 2 +- man/do_findChromPeaks_massifquant.Rd | 2 +- man/do_groupChromPeaks_density.Rd | 2 + man/extractMsData-method.Rd | 1 + man/featureChromatograms.Rd | 2 + man/fillChromPeaks.Rd | 4 +- man/filter-MChromatograms.Rd | 1 + ...ndChromPeaks-Chromatogram-CentWaveParam.Rd | 10 +- man/findChromPeaks-centWave.Rd | 14 +- man/findChromPeaks-massifquant.Rd | 2 +- man/findPeaks-MSW.Rd | 1 + ...aks.addPredictedIsotopeFeatures-methods.Rd | 2 +- man/findPeaks.centWave-methods.Rd | 2 +- ...entWaveWithPredictedIsotopeROIs-methods.Rd | 2 +- man/groupChromPeaks.Rd | 5 + man/groupFeatures-abundance-correlation.Rd | 1 + man/groupFeatures-eic-similarity.Rd | 1 + man/groupFeatures-similar-rtime.Rd | 1 + man/highlightChromPeaks.Rd | 1 + man/imputeRowMin.Rd | 1 + man/imputeRowMinRand.Rd | 1 + man/overlappingFeatures.Rd | 1 + man/peaksWithCentWave.Rd | 4 +- man/plotChromPeakDensity.Rd | 1 + man/plotChromatogramsOverlay.Rd | 1 + man/plotMsData.Rd | 19 +- man/refineChromPeaks.Rd | 2 + man/removeIntensity-Chromatogram.Rd | 1 + man/storeResults.Rd | 2 + tests/testthat.R | 1 + vignettes/LC-MS-feature-grouping.Rmd | 1 + vignettes/xcms-direct-injection.Rmd | 3 +- xcms.Rproj | 17 - 67 files changed, 1479 insertions(+), 146 deletions(-) create mode 100644 NEWS.md delete mode 100644 xcms.Rproj diff --git a/DESCRIPTION b/DESCRIPTION index 16b9837f8..642c59c1e 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,5 +1,5 @@ Package: xcms -Version: 4.1.10 +Version: 4.1.12 Title: LC-MS and GC-MS Data Analysis Description: Framework for processing and visualization of chromatographically separated and single-spectra mass spectral data. Imports from AIA/ANDI NetCDF, @@ -43,30 +43,26 @@ Authors@R: c( ) Depends: R (>= 4.0.0), - BiocParallel (>= 1.8.0), - MSnbase (>= 2.23.1) + BiocParallel (>= 1.8.0) Imports: + MSnbase (>= 2.29.3), mzR (>= 2.25.3), methods, Biobase, BiocGenerics, - ProtGenerics (>= 1.35.2), + ProtGenerics (>= 1.35.4), lattice, - RColorBrewer, - plyr, - RANN, MassSpecWavelet (>= 1.66.0), S4Vectors, - robustbase, IRanges, SummarizedExperiment, MsCoreUtils (>= 1.15.3), MsFeatures, MsExperiment (>= 1.5.4), - Spectra (>= 1.13.2), + Spectra (>= 1.13.7), progress, - multtest, jsonlite, + RColorBrewer, MetaboCoreUtils (>= 1.11.2) Suggests: BiocStyle, @@ -80,19 +76,21 @@ Suggests: rmarkdown, MALDIquant, pheatmap, + RANN, + multtest, MsBackendMgf, signal, mgcv Enhances: Rgraphviz, - rgl, - XML + rgl License: GPL (>= 2) + file LICENSE URL: https://github.com/sneumann/xcms BugReports: https://github.com/sneumann/xcms/issues/new VignetteBuilder: knitr biocViews: ImmunoOncology, MassSpectrometry, Metabolomics RoxygenNote: 7.3.1 +Encoding: UTF-8 Collate: 'AllGenerics.R' 'functions-XChromatograms.R' diff --git a/NAMESPACE b/NAMESPACE index b59faa1a4..bd9806399 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,11 +1,10 @@ -useDynLib(xcms) +useDynLib(xcms, .registration = TRUE) -importFrom("utils", "capture.output", "data") import("methods") importMethodsFrom("ProtGenerics", "peaks", "chromatogram", "writeMSData", "polarity<-", "centroided", "isCentroided", "peaks<-", "isolationWindowTargetMz", "quantify", "bin", "spectrapply", - "filterFeatures", "filterMzRange") + "filterFeatures", "filterMzRange", "filterRt", "filterMz", "filterMsLevel") importClassesFrom("ProtGenerics", "Param") importFrom("BiocGenerics", "updateObject", "fileName", "subset", "dirname", "dirname<-") @@ -18,18 +17,12 @@ importMethodsFrom("Biobase", "phenoData", importFrom("IRanges", "CharacterList", "NumericList") importClassesFrom("IRanges", "CharacterList", "NumericList") -importFrom("graphics", "image", "boxplot", "matplot", "rect", "axis", - "grid", "mtext", "polygon", "box", "plot.xy") importFrom("mzR", "peaks", "close", "openMSfile", "header") importFrom("lattice", "levelplot", "panel.rect", "panel.levelplot", "level.colors", "do.breaks") -importFrom("plyr", "rbind.fill") -importFrom("robustbase", "lmrob", "lmrob.control") -import("RColorBrewer") -import("BiocParallel") -## importMethodsFrom("stats4", "plot") +importFrom("BiocParallel", "bpparam", "SerialParam") +importMethodsFrom("BiocParallel", "bplapply", "bpmapply") -## import("S4Vectors") importClassesFrom("S4Vectors", "Rle", "DataFrame", "Hits") importFrom("S4Vectors", "split", "Rle", "DataFrame", "SimpleList", "List", "as.matrix") @@ -41,12 +34,13 @@ importFrom("SummarizedExperiment", "rowData<-") importFrom("SummarizedExperiment", "assay") importFrom("MsCoreUtils", "rbindFill", "closest", "i2index", "sumi", "between", "maxi", "breaks_ppm") +importFrom("RColorBrewer", "brewer.pal") -## Additional imports proposed by R CMD check: -importFrom("graphics", "abline", "barplot", "close.screen", "hist", - "identify", "layout", "legend", "lines", "par", "plot.new", - "plot.window", "points", "screen", "split.screen", - "strwidth", "text", "title") +importFrom("graphics", "image", "boxplot", "matplot", "rect", "axis", + "grid", "mtext", "polygon", "box", "plot.xy", "abline", + "barplot", "close.screen", "hist", "identify", "layout", + "legend", "lines", "par", "plot.new", "plot.window", "points", + "screen", "split.screen", "strwidth", "text", "title") importFrom("grDevices", "col2rgb", "colorRampPalette", "dev.cur", "dev.list", "dev.off", "dev.set", "palette", "pdf", "png", "rainbow", "rgb", "terrain.colors", "n2mfrow", "dev.flush", @@ -58,11 +52,8 @@ importFrom("stats", "aov", "approx", "convolve", "cor", "deriv3", "rnorm", "runif", "dbeta", "resid") importFrom("utils", "flush.console", "head", "object.size", "packageVersion", "read.csv", "tail", "write.csv", - "write.table") + "write.table", "capture.output", "data") -## New imports from packages moved from Suggests to Imports: -importFrom("multtest", "mt.teststat") -importFrom("RANN", "nn2") importFrom("MassSpecWavelet", "peakDetectionCWT", "tuneInPeakInfo") ## MSnbase: @@ -595,6 +586,8 @@ importFrom("progress", "progress_bar") exportClasses("XcmsExperiment") exportMethods("uniqueMsLevels") exportMethods("filterMzRange") +exportMethods("fromFile") +exportMethods("fileNames") ## saving xcms objects things importFrom("jsonlite", "serializeJSON", "write_json", "unserializeJSON", diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 000000000..6578300b6 --- /dev/null +++ b/NEWS.md @@ -0,0 +1,1263 @@ +# xcms 4.1 + +## Changes in version 4.1.11 + +- Clean up of required and suggested packages and namespace imports. +- Re-creation of bundled data objects. + +## Changes in version 4.1.10 + +- Ensure backward compatibility for parameter objects that gained additional + slots. + +## Changes in version 4.1.9 + +- Fix bug in `filterFeatures,PercentMissingFilter`. + +## Changes in version 4.1.8 + +- Fixing issue #716: edit of `.empty_chrom_peaks` function so an `sn` column is + returned. Fixes extracting and plotting of peaks after using + `manualChromPeaks` + +## Changes in version 4.1.7 + +- Implementation of `filterFeatures` function with `filter` parameters: + `RsdFilter`, `DratioFilter`, `PercentMissingFilter`, `BlankFlag`. They can be + used ot filter features from `XcmsResult` and `SummarizedExperiment` objects. +- Addition of a section in the main xcms vignette to describe how to use it. + +## Changes in version 4.1.6 + +- Import `filterSpectra` from `MsExperiment`. +- Import `breaks_ppm` from `MsCoreUtils`. +- Update `featureArea` function to consider all chromatographic peaks per + feature, not only the one with the highest intensity. As a consequence, + returned m/z and rt ranges might be higher which has an influence in + `featureChromatograms`, EIC-based feature grouping and, to a lesser extent + also in gap-filling. Related documentation was updated. +- Improve performance of the `featureArea` function (and related of the + `PeakAreaParam`-based gap filling). +- Add parameter `ppm` to `PeakDensityParam` to enable peak-density-based + correspondence throgh m/z-dependent bins along the m/z. + +## Changes in version 4.1.5 + +- Improve performance of the `chromatogram` call for `XcmsExperiment` objects. +- Remove internal (not exported) normalization functions. These have been + transferred to the MetaboCoreUtils package. +- Support subsetting of `XcmsExperiment` with negative indices. + +## Changes in version 4.1.4 + +- Rename variable `data` in the vignette to `faahko`. +- Fix issue in adjustRtime resulting in corrupt processHistory. +- Add support to perform peakGroups alignment using pre-defined anchor peak + matrix (i.e., the numeric matrix with retention times of anchor peaks in + the samples that can be used to align these samples). +- Fix errors related to invalid `Chromatogram` objects extracted from xcms + results: ensure MS level in `chromPeaksMatrix` is `integer`. +- Fix definition of anchor peaks for peakGroups alignment with subset + (issue #702). +- Add `filterMsLevel` method for `MsExperiment` and `XcmsExperiment`. +- Ensure chunk-wise processing of Spectra (introduced with version 1.13.2) is + disabled when xcms is using its own chunk-wise processing. + +## Changes in version 4.1.3 + +- Add parameter `verboseBetaColumns` to `CentWaveParam` to enable calculation + of additional peak quality metrics comparing the EIC to an idealized bell + curve. + +## Changes in version 4.1.2 + +- Add a `param =` to generic function `storeResults`: `PlainTextParam` to save + an `XcmsExperiment` or `MsExperiment` object as colleciton of plain text + files. + +## Changes in version 4.1.1 + +- Add method `storeResults` and one of its `param =`: `RDataParam` to save an + `XcmsExperiment` object as an .RData file. + + +# xcms 3.99 + +## Changes in version 3.99.6 + +- Add method to coerce a `XcmsExperiment` to a `xcmsSet` (issue #696). +- Support providing only `mz` or `rt` also for `chromatogram,MsExperiment`. + +## Changes in version 3.99.5 + +- Only `mz` or `rt` need to be provided for `chromatogram`. + +## Changes in version 3.99.4 + +- Add `chromPeakChromatograms` function to extract (EIC) chromatograms for + chromatographic peaks. + +## Changes in version 3.99.3 + +- Small fixes in the *direct injection* vignette. +- Add parameter `isolationWindowTargetMz` to the `chromatogram` function for + `MsExperiment` and `XcmsExperiment` to ensure MS2 chromatographic data is + extracted from the MS2 spectra containing fragments of the compound of + interest. + +## Changes in version 3.99.2 + +- Add the `xmse` data set representing an `XcmsExperiment` object. +- Update the *compounding* vignette to use the new objects. +- Add `loadXcmsData` to load test data objects (and fix/update paths). +- Add `groupFeatures` methods for `XcmsExperiment`. +- Fix issue in `featureArea` for `XcmsExperiment`. +- Update main vignette to use and describe the new data objects. +- Add `findChromPeaksIsolationWindow` method for `MsExperiment` and + `XcmsExperiment`. +- Make `reconstructChromPeakSpectra` a method. +- Add `reconstructChromPeakSpectra` implementation for `XcmsExperiment`. +- Add `filterIsolationWindow` for `MsExperiment` and `XcmsExperiment` to filter + spectra (and eventually chromatographic peaks) based on the isolation window. +- Update the LC-MS/MS vignette adding also an example how to deisotope SWATH + MS2 spectra. + +## Changes in version 3.99.1 + +- `featureSummary` and `overlappingFeatures` gain support for `XcmsExperiment`. +- Fix in `featureChromatograms` to ensure a valid object is returned. + +## Changes in version 3.99.0 + +- Add `XcmsExperiment` and support for `MsExperiment`/`Spectra`: add all + functionality for a full xcms processing on a `MsExperiment` object. +- Fix issue in `refineChromPeaks` with `MergeNeighboringPeaksParam` where a + wrong apex position was considered in the evaluation whether candidate peaks + should be merged (would only happen for merging of > 2 candidate peaks). +- Re-write the `reconstructChromPeakSpectra` for DIA data analysis to fix an + issue with chromatographic peaks in overlapping SWATH isolation windows and + generally to improve performance. + + +# xcms 3.21 + +## Changes in version 3.21.5 + +- Fix issue in `chromatogram` after filtering a result object (issue #511). + +## Changes in version 3.21.4 + +- Move multtest from Suggests to Imports in dependencies + +## Changes in version 3.21.3 + +- Only fixes in the long running tests + +## Changes in version 3.21.1 + +- Fix error with `fillChromPeaks` on sparse data (many empty spectra) and peak + detection performed with `MatchedFilterParam` (issue #653). +- Update to newer function names in the `rgl` package (issue #654). + + +# xcms 3.19 + +## Changes in version 3.19.2 + +- Update/expand documentation for the `firstBaselineCheck` parameter of + centWave. + +## Changes in version 3.19.1 + +- Update documentation to reference updates in MassSpecWavelet package. + + +# xcms 3.17 + +## Changes in version 3.17.6 + +- Rewrite code to subset features and chromatographic peaks. This results in a + perfomance improvement for `filterFile` and similar functions. +- Add parameter `expandMz` to `featureChromatograms` + https://github.com/sneumann/xcms/issues/612. + +## Changes in version 3.17.5 + +- Change the way the m/z value for a chromatographic peak is determined by + centWave: if a ROI contains more than one peak for one scan (spectrum) an + intensity-weighted m/z is reported for that scan. The m/z of the + chromatographic peak is then calculated based on these reported m/z values for + each scan (spectrum). In the original version the mean m/z for a scan was + reported instead. As a result, m/z values of chromatographic peaks are now + slightly different but are expected to be more accurate. See + https://github.com/sneumann/xcms/issues/590 for more details. + +## Changes in version 3.17.4 + +- Add `transformIntensity` method. +- Fix issue when calling `chromPeakSpectra` or `featureSpectra` on an object + that contains also files with only MS1 spectra + (https://github.com/sneumann/xcms/issues/603). + +## Changes in version 3.17.2 + +- Use mzML instead of mzData files in testing and vignettes, + since mzR drop mzData reading and msdata package will drop mzData files as well + +## Changes in version 3.17.1 + +- Fix bug in feature grouping by EIC correlation that would return a + non-symmetric similarity matrix. +- Fix error message from issue [584](https://github.com/sneumann/xcms/issues/584). + + +# xcms 3.15 + +## Changes in version 3.15.5 + +- Disable testing on windows i386, providing some speedup +- Disable parallel processing on Windows, causing an issue in testthat on BioC build check + +## Changes in version 3.15.4 + +- Fix in `plot` with `type = "XIC"` to plot an empty plot if no data is present. +- Skip re-indexing of peaks to features if not necessary. This results in + performance improvements for MS1 only data. + +## Changes in version 3.15.3 + +- Add `manualFeatures` allowing to manually define and add features to an + `XCMSnExp` object. +- Add `plotChromatogramsOverlay` function to support plotting of multiple EICs + from the same sample into the same plot (eventually stacked). +- Add feature grouping by EIC similarity: `EicSimilarityParam`. +- Import `compareChromatograms` from `MSnbase`. +- Add feature grouping by similar retention time: `SimilarRtimeParams. +- Add feature grouping by similarity of feature abundances across samples: + `AbundanceSimilarityParam`. +- Add feature grouping methodology based on `MsFeatures`. + +## Changes in version 3.15.2 + +- Fix LC-MS/MS vignette. + +## Changes in version 3.15.1 + +- Compatibility fix for nls() in R >= 4.1, contributed by Rick Helmus. + + +# xcms 3.13 + +## Changes in version 3.13.8 + +- Fix plotQC() for XCMSnExp objects + +## Changes in version 3.13.7 + +- Add `featureArea` function to extract the m/z-rt region for features. +- Fix `featureSpectra` function. +- Re-add the LC-MS/MS vignette. +- Feature: plotQC() supports XCMSnExp objects now + +## Changes in version 3.13.6 + +- Fix issue #545: skip second centWave run with CentWavePredIsoParam in regions + of interest with undefined peak boundaries/scan ranges. +- Temporarily remove the LC-MS/MS vignette (until MsBackendMgf is added to + Bioconductor). + +## Changes in version 3.13.5 + +- Add `filterChromPeaks` method to filter chromatographic peaks in a + `XChromatogram` or `XChromatograms` object. +- Add `filterChromPeaks` method for `XCMSnExp` (issue #541). +- Support return of `Spectra` objects by `chromPeakSpectra`, `featureSpectra` + and `reconstructChromPeakSpectra`. +- Support extraction of MS1 spectra with `chromPeakSpectra`. +- Support extraction of the spectrum with the largest total signal or largest + base peak signal in `chromPeakSpectra`. +- Add support for extraction of spectra for selected/individual peaks/features + using the `peaks` and `features` parameter in `chromPeakSpectra` and + `featureSpectra`, respectively. + +## Changes in version 3.13.4 + +- Import `Param` object from `ProtGenerics`. +- Import `filterIntensity`, `normalize` and `alignRt` for `Chromatogram` and + `MChromatograms` from `MSnbase`. + +## Changes in version 3.13.3 + +- `align,Chromatogram` gains new method `"none"` which will only keep values + with identical retention times. For `method = "matchRtime"` the (much faster) + matching function `closest` from the `MsCoreUtils` package is used. +- Method `correlate,Chromatogram` gains parameter `useIntensitiesAbove` to + perform the correlation only with values larger than this threshold + (avoiding thus high correlation because of many 0-values). +- Add method `filterIntensity,Chromatogram` that allows to filter a chromatogram + object keeping only data points with an intensity above a user provided + threshold. + +## Changes in version 3.13.2 + +- Add new function `manualChromPeaks` allowing to manually add and integrate + chromatographic peaks. + +## Changes in version 3.13.1 + +- Support subsetting of `XChromatograms` with `drop = FALSE`. + + +# xcms 3.11 + +## Changes in version 3.11.8 + +- Disable parallel processing in vignettes. + +## Changes in version 3.11.7 + +- More efficient splitting data per file especially for larger data sets. +- Disable parallel processing in examples. + +## Changes in version 3.11.6 + +- Add `FilterIntensityParam` to filter chromatographic peaks on intensity + (issue #502). +- Add `estimatePrecursorIntensity` function to determine the precursor intensity + for MS2 spectra from the neighboring MS1 spectra. + +## Changes in version 3.11.4 + +- Change from `Spectra` and `Chromatograms` to `MSpectra` and `MChromatograms` + from MSnbase version >= 2.15.3. + +## Changes in version 3.11.3 + +- `reconstructChromPeakSpectra`: report also polarity and `precusorIntensity`. +- `reconstructChromPeakSpectra`: ensure a retention time is reported for + reconstructed MS2 spectra (issue #485). +- Change default for `expandRt` to `0` in `reconstructChromPeakSpectra`. +- Fix error in `refineChromPeaks,MergeNeighboringPeaksParam` if no peaks found + to be merged. + +## Changes in version 3.11.2 + +- Add `fillChromPeaks,ChromPeakAreaParam` to base the area from which missing + peak data should be filled-in on the actually detected chromatographic peaks + of a feature. +- Potential fix for issue #481: function should no longer throw an error because + retention times are of length 0. +- More efficient splitting of processing which should increase the speed of + the findChromPeaks, refineChromPeaks, reconstructChromPeakSpectra and + chromPeakSpectra calls. + +## Changes in version 3.11.1 + +- Fix issue #471: conversion from `XCMSnExp` to `xcmsSet` looses phenodata + (thanks to Andris Jankevics for reporting and providing a solution). +- Add `normalize` method for `Chromatogram` and `Chromatograms` objects. +- `featureChromatograms` gets new parameter `n` and `value` to extract EICs + only from the top n samples with highest intensities. +- `filterFile` gets new parameter `keepFeatures` to support retaining + correspondence results even if a data set is filtered by file. +- Export the virtual `Param` class. +- Add filterColumnsIntensityAbove method for Chromatograms object that allows + to select columns (samples) of an Chromatograms object for which intensities + of its chromatographic data are higher than a threshold. +- Add removeIntensity method for Chromatogram, Chromatograms, XChromatogram + and XChromatograms objects allowing to *remove* intensities based on different + criteria. +- Add correlate method for Chromatograms allowing to correlate multiple + chromatograms with each other. + + +# xcms 3.9 + +## Changes in version 3.9.4 + +- Fix issue in centWave which skips peak detection depending on minimum + peakwidth (issue #445): add parameter `extendLengthMSW` in `CentWaveParam`. + Thanks to William Kumler for contributing the fix. +- Tentatively reduce memory requirements in `fillChromPeaks`. +- Fix issue #467 for fillPeaks() of an xcmsSet converted from an XCMSnSet + +## Changes in version 3.9.3 + +- Move multtest from Imports to Suggests to avoid duplicated method definition + for plot (issue #459). +- Add support for peak filling from MS level > 1 to fillChromPeaks. +- featureValues gains parameter msLevel to extract feature values for features + of all, or from a specific MS level. +- refineChromPeaks supports different MS levels. +- Added support to perform correspondence analysis on MS level > 1 and add the + respective results to already present feature definitions. +- hasChromPeaks and hasFeatures gain parameter msLevel to check for presence of + chromatographic peaks or features from a specific MS level. + +## Changes in version 3.9.2 + +- Fix featureChromatograms and chromatograms on a XCMSnExp object with features: + features can be duplicated across rows (EICs). +- findChromPeaks: add parameter `add` to allow several rounds of peak detections + on the same object. +- Small performance enhancement in fillChromPeaks. +- Better support for MS > 1 data in fillChromPeaks: skip MS level 2 spectra for + filling in. +- Add refineChromPeaks for XChromatogram and XChromatograms objects. +- Add groupOverlaps function to group arbitrary ranges. +- Add quantify,XCMSnExp object to quantify an XCMSnExp into a + SummarizedExperiment. +- Fine-tune MergeNeighboringPeaks peak refinement method: the average of the + 3 data points between candidate peaks is used to evaluate whether the peaks + should be merged making the approach more robust against outliers. In + addition, an ion chromatogram for candidate peaks is extracted with an m/z + range expanded depending on the expandMz and ppm setting ensuring that low + intensity data points between candidate peaks are not missed out (because + their m/z might be slightly shifted on ToF instruments). The mzmin and mzmax + of the merged peak represents also the minimum and maximum m/z of all data + points in that extracted ion chromatogram. + +## Changes in version 3.9.1 + +- Fix problem of not shown/plotted peak positions in plotChromPeakSpectra + for experiments in which peaks were not detected in the first sample(s). +- Add method *from_to* to missing value imputation method `imputeRowMinRand`. +- Show warning in findChromPeaks if empty spectra are detected. +- Add refineChromPeaks method and CleanPeaksParam class to allow removal of + chromatographic peaks exceeding a user-definable maximal peak width. +- Add MergeNeighboringPeaksParam for refineChromPeaks to allow merging of + chromatographic peaks close in m/z and retention time with a signal between + them higher than a certain threshold (issue #414). +- Fix misspelled parameter `mzd` in LC-MS/MS vignette. + + +# xcms 3.7 + +## Changes in version 3.7.5 + +- Remove xcmsMSn vignette (based on old xcms). + +## Changes in version 3.7.4 + +- mzClust correspondence analysis: check and fix missing values in column mz of + the peaks matrix (issue #416). + +## Changes in version 3.7.3 + +- plot type = "XIC" on an XCMSnExp object will draw rectangles indicating the + identified chromatographic peaks. +- Add a vignette describing LC-MS/MS data analysis with xcms. + +## Changes in version 3.7.2 + +- Fix documentation (issue #401). +- Add support for SWATH data analysis. + +## Changes in version 3.7.1 + +- Add correlate method for Chromatogram objects. +- Add parameter lwd to plotAdjustedRtime. +- Add align method for Chromatogram objects. +- Add findChromPeaksIsolationWindow to enable chromatographic peak detection + in isolation windows. +- Fix issue in chromPeakSpectra with method = "signal". +- chromPeakSpectra and featureSpectra return now MS2 spectra with an precursor + m/z >= mzmin, <= mzmax and retention time >= rtmin, <= rtmax. +- Improve performance of chromPeakSpectra and featureSpectra. + + +# xcms 3.5 + +## Changes in version 3.5.5 + +- Add dirname and dirname<- methods for OnDiskMSnExp to change the path to the + raw data files. +- Add section "Subset-based alignment" to the xcms vignette to describe the + alignment possibility to perform alignments based on a subset of samples + (e.g. QC samples). + +## Changes in version 3.5.4 + +- Fix problem in featureChromatograms with include = "feature_only" that could + return a non-valid object. +- Ensure that XCMSnExp objects are updated if necessary in all analysis methods. + +## Changes in version 3.5.3 + +- Fix unit tests. + +## Changes in version 3.5.2 + +- Small changes in fillChromPeaks,XCMSnExp to reduce memory demand. +- Fix issue #359. +- Fix issue #360: rawEIC skipped last scan/spectrum if rtrange was provided. +- filterMsLevel keeps now chromatographic peaks and feature definitions from the + specified MS levels (issue #362). +- Fix bug in `xcmsRaw` that leads to a netCDF error message (issue #363). +- Add parameter msLevel to chromPeaks for XCMSnExp objects. +- Add chromPeakData to allow adding arbitrary annotation to chromatographic + peaks. +- Change default of parameter value in featureValues from value = "index" to + value = "into". +- Add parameter isFilledColumn to chromPeaks allowing the old behaviour to + include the is_filled column in the chromatographic peak matrix. + +## Changes in version 3.5.1 + +- Fix issue #349. +- Add updateObject function for XCMSnExp objects (issue #347). +- Add dropFilledChromPeaks methods for XChromatogram and XChromatograms objects. +- Add parameter filled = FALSE to chromatogram and featureChromatograms + functions. +- Fix matchedFilter peak detection problems with empty spectra (issue #325). +- featureChromatograms extracts by default only chromatographic peaks associated + with a feature. +- chromatogram,XCMSnExp extracts an XChromatogram containing also + chromatographic peaks and feature definitions. +- Add featureValues method for XChromatograms objects (issue #336). +- Add correspondence analysis (peak grouping) for chromatographic data (for now + only with PeakDensity method; issue #336). +- Add featureDefinitions slot to XChromatograms object and related accessor + methods. +- Add subset alignment option subsetAdjust = "average" to adjust left-out + samples (blanks or simply non-subset samples) based on an interpolation from + the results of the previous and subsequent subset sample. +- Add parameter subsetAdjust to PeakGroupsParam allowing to switch between + different methods to adjust samples left out in the alignment process. +- Alignment based on a sample subset for the peak groups method (issue #335): + sample subset can be defined with the subset parameter, samples not included + in the subset will be aligned based on the adjusted retention times of the + closest sample in the subset. +- Add findChromPeaks,XChromatograms (issue #332). +- Add processHistory,XChromatograms. +- Add plot,XChromatograms method with automatic peak highlighting (issue #334). +- Add hasChromPeaks,XChromatograms method. +- Add XChromatograms class with constructor function and coercing method. +- Add hasChromPeaks,XChromatogram method. +- Add filterRt,XChromatogram, filterMz,XChromatogram. +- Add plot,XChromatogram function supporting of highlighting/drawing identified + chromatographic peaks. +- findChromPeaks,Chromatogram returns an XChromatogram object (issue #329). +- Add chromPeaks,XChromatogram (issue #329). +- Add XChromatogram object (issue #329). +- Fix higlightChromPeaks with type = "polygon": peak filling represents now the + full detected peak and is no longer cut by the provided rt. +- Add argument peakIds to highlightChromPeaks allowing to specify the IDs of + peaks to be highlighted. +- Add example on clustering of base peak chromatograms to the vignette (issue + #328). +- Small fix in the vignette (issue #327). +- Add parameter groupval to exportMetaboAnalyst (issue #296). +- Fix bug in show,XCMSnExp that would throw an error if no process history is + present. + + +# xcms 3.3 + +## Changes in version 3.3.6 + +- Add type = "polygon" to highlightChromPeaks allowing to fill the actual + signal area of identified chromatographic peaks. + +## Changes in version 3.3.5 + +- Performance enhancement of the chromPeakSpectra and featureSpectra functions. + +## Changes in version 3.3.4 + +- Add featureChromatograms to extract ion chromatograms for each feature. +- Add hasFilledChromPeaks function. +- Add argument skipFilled to the featureSummary function. + +## Changes in version 3.3.3 + +- Add chromPeakSpectra and featureSpectra functions to extract MS2 spectra + for chromatographic peaks and features, respectively (issue #321). +- Fix profMat to handle also data files with empty spectra (issue #312). +- Add argument ylim to plotAdjustedRtime (issue #314). +- Add imputeRowMin and imputeRowMinRand, two simple missing value imputation + helper functions. +- Fix additional problem mentioned in issue #301 with obiwarp retention time + correction if some spectra have m/z values of `NA`. +- Fix issue #300 avoiding chromatographic peaks with rtmin > rtmax. +- Fixes for issues #291, #296. +- Add parameter 'missing' to diffreport allowing to replace NA with arbitrary + numbers. +- Add exportMetaboAnalyst function to export the feature matrix in MetaboAnalyst + format. +- Add parameter missing to featureValues allowing to specify how to handle/ + report missing values. +- The chromPeaks matrix has now rownames to uniquely identify chromatographic + peaks in an experiment. Chromatographic peak IDs start with "CP" followed by + a number. + +## Changes in version 3.3.2 + +- Add writeMSData method for XCMSnExp allowing to write mzML/mzXML files with + adjusted retention times (issue #294). +- Fix profEIC call for single-scan-peak (pull request #287 from @trljcl). +- Fix centWave avoiding that the same peak is reported multiple times if + fitgauss = TRUE is used (issue #284). +- featureSummary reports also RSD (relative standard deviations) of features + across samples (issue #286). +- Add parameters fixedMz and fixedRt to FillChromPeaksParam that allow to + increase the features' m/z and rt widths by a constant factor. +- Add option "sum" to featureValues' method parameter allowing to sum the + intensities of peaks that are assigned to the same feature in a file/sample. + +## Changes in version 3.3.1 + +- Add overlappingFeatures function to identify overlapping or close features. +- Add support for type = "apex_within" for featureDefinitions. +- Fix a bug in fillChromPeaks that would return the integrated signal being Inf. +- Fix for issue #267: error in fillChromPeaks when the retention time of the + peaks are outside of the retention time range of certain files. +- New featureSummary function to calculate basic feature summaries (number of + samples in which peaks were found etc). +- Parameter 'type' added to plotChromPeakDensity and 'whichPeaks' to + highlightChromPeaks. Both parameters are passed to the 'type' argument + of chromPeaks. +- Parameter 'type' in chromPeaks gets additional option "apex_within" to return + chromatographic peaks that have their apex within the defined rt and/or m/z + range. +- Add functions rla and rowRla to calculate RLA (relative log abundances). +- Add peaksWithMatchedFilter to perform peak detection in chromatographic + (MRM/SRM) data (issues #277 and #278). +- Add peaksWithCentWave to perform centWave peak detection in chromatographic + (MRM/SRM) data (issue #279). +- Add findChromPeaks,Chromatogram methods for CentWaveParam and + MatchedFilterParam (issue #280). + + +# xcms 3.1 + +## Changes in version 3.1.3 + +- Fix misplaced parenthesis in the check for multiple spectra in + findChromPeaks,OnDiskMSnExp,MSWParam. Thanks to @RonanDaly (PR #276). +- Update link to correct metlin page in diffreport result (issue #204). + +## Changes in version 3.1.2 + +- Add filterFeatureDefinitions function. +- Fix #273: better error message in case not a single feature could be defined + by groupChromPeaks. + +## Changes in version 3.1.1 + +- Reading raw files using xcmsSet or xcmsRaw uses now the automatic file type + detection feature from mzR. +- c function to concatenate XCMSnExp objects. +- groupnames method for XCMSnExp objects (issue #250). +- Fix #237: findPeaks.MSW was not throwing an error if applied to multi-spectrum + MS file. +- Fix #249: quantile call in adjustRtime PeakGroups without na.rm = TRUE. +- Fix #259 + + +# xcms 2.99 + +## Changes in version 2.99.10 + +- Fix #230: Failing vignettes on Windows. + +## Changes in version 2.99.9 + +- Chromatographic peak detection uses adjusted retention times on an aligned + XCMSnExp object (issue #213, #208). +- New parameter msLevel for processHistory,XCMSnExp. +- New parameter keepAdjustedRtime for filterMsLevel,XCMSnExp, dropChromPeaks, + XCMSnExp and dropFeatureDefinitions,XCMSnExp. +- Add parameter msLevel to chromatogram,XCMSnExp method (issue #205). +- Obiwarp alignment is now performed on one MS level and adjustment is applied + to all MS levels (issue #214). +- Add function plotMsData to plot intensity against retention time and m/z + against retention time for a MS slice in one sample. +- Add argument msLevel = 1L to extractMsData method (issue #223). +- New applyAdjustedRtime function to consolidate the alignment results, i.e. + replace the raw retention times in the XCMSnExp with the adjusted retention + times. +- [,XCMSnExp method gains argument keepAdjustedRtime to allow keeping adjusted + retention times in the sub-setting. +- Implement spectrapply,XCMSnExp to ensure returned results use adjusted + retention times (if present). +- [[,XCMSnExp method returns a Spectrum object with adjusted retention time, if + the XCMSnExp contains adjusted retention times. +- Argument 'sampleGroups' is mandatory for 'PeakDensityParam' (issue #228). +- Fix #191: Excessive memory use in fillPeaks. +- Fix #220: peaks matrix is missing column "sample" if no peaks were found in + the first sample. +- Fix #222: findChromPeaks does not return an XCMSnExp object filtered to a + single MS level despite peak detection is performed on a single level. +- Fix problem in plotMsData causing wrong colors to be used to label the data + points. + +## Changes in version 2.99.8 + +- Replace xcmsMSn Rnw with Rmd vignette to fix Windows build errors. + +## Changes in version 2.99.7 + +- Fix #201: Warnings: 'readMSData2' is deprecated, thanks to L. Gatto. +- Merge with BioC git after transition + +## Changes in version 2.99.6 + +- calibrate,XCMSnExp method that allows to calibrate chromatographic peaks. +- Export phenoDataFromPaths function (issue $195). +- Add arguments mz and rt to featureDefinitions method allowing to extract + features within the specified ranges. +- Increase n for the density function call in group density-based correspondence + by 2. +- Replace xcmsDirect.Rnw with rmarkdown-based vignette using the new user + interface. +- issue #196: removed the unnecessary requirement for same-dimension profile + matrices in adjustRtime,XCMSnExp,ObiwarpParam. +- issue #194: fixes in retcor.obiwarp: 1) subset raw data if scanrange != NULL. + 2) if the mz range of the two files to be aligned differ, expand them + correctly. Depending on the profStep and the mz values/ranges the matrices + were not expanded correctly. +- Potential problems in the plotChromPeakDensity function. + +## Changes in version 2.99.5 + +- Re-enable sleep parameter in findPeaks.centWave and findPeaks.matchedFilter. + +## Changes in version 2.99.4 + +- Add plotChromPeaks function to plot the definition (rt and mz range) of + detected chromatographic peaks of one file into the mz-rt plane. +- Add plotChromPeakImage function to plot the number of detected peaks along + the retention time axis per file as an image plot. +- Move Chromatogram class and functionality to the MSnbase package +- Add argument msLevel to the findChromPeaks method to allow (chromatographic) + peak detection also on MS level > 1. +- Polarity information was not read from mzXML files (issue #192). + +## Changes in version 2.99.3 + +- issue #188: determine file type from file content if file ending not known. + +## Changes in version 2.99.2 + +- issue #181: problem when isCentroided,Spectrum method returns NA because of + too few peaks in a spectrum. Fixed by checking in such cases all spectra in + the file. +- issue #184: add parameter sleep to do_groupChromPeaks_density function to be + backwards compatible with the old group.density code. + +## Changes in version 2.99.1 + +- extractMsData to extract raw MS data as a data.frame (issue #120). +- issue #175: an error is now thrown if no peak group was identified for peak + group retention time correction. +- issue #178: scanrange was collapsed when the adjusted range was reported + (pull request by Jan Stanstrup). +- issue #180: error when both parameters method and smooth are provided in the + retcor method. + +## Changes in version 2.99.0 + +- plotChromatogram and highlightChromPeaks functions. +- plotChromPeakDensity function. +- clean method for Chromatogram classes. +- Change default for ppm parameter in chromPeaks method to 0. +- extractChromatograms supports extraction of multiple rt and mz ranges. +- New parameter missing for extractChromatograms allowing to specify the + intensity value to be used for rts for which no signal is available within + the mz range. +- extractChromatograms returns Chromatograms of length equal to the number of + scans within the specified rt range, even if no signals are measured + (intensity values are NA). + + +# xcms 1.53 + +## Changes in version 1.53.1 + +- Increase parameter n for the density call in the peak density correspondence + method. This enables to separate neighboring peaks using small n (issue #161). + Thanks to Jan Stanstrup. + +# xcms 1.51 + +## Changes in version 1.51.11 + +- Parameter "filled" for featureValues (issue #157). +- Parameters "rt" and "mz" in chromPeaks method allowing to extract + chromatographic peaks from the specified ranges (issue #156). +- Fixed possible memory problem in obiwarp (issue #159). +- Update getPeaks to use non-deprecated API (issue #163). + +## Changes in version 1.51.10 + +- filterRt for Chromatogram class (issue #142). +- adjustRtimePeakGroups function (issue #147). +- adjustRtime,XCMSnExp,PeakGroupsParam and do_adjustRtime_peakGroups support + use of pre-defined matrix to perform alignment (issue #153). +- plotAdjustedRtime to visualize alignment results (issue #141). +- featureDefinitions and featureValues return DataFrame and matrix with rownames + corresponding to arbitrary feature IDs (issue #148). +- New peakGroupsMatrix slot for PeakGroupsParam class (issue #153). +- Issue #146: ensure adjusted retention times returned by the peakGroups method + to be in the same order than the raw retention times. + +## Changes in version 1.51.9 + +- fillChromPeaks, dropFilledChromPeaks methods and FillChromPeaksParam class. +- featureValues method. +- Extended new_functionality vignette. +- Change default backend for reading mzML files to pwiz. +- Issue #135: fix peak signal integration for centWave. +- Issue #139: problem with expand.mz and expand.rt in fillPeaks.chrom. +- Issue #137: Error in findChromPeaks if no peaks are found. + +## Changes in version 1.51.8 + +- Add Chromatogram class and extractChromatograms method. +- Issue #118: failing unit test on Windows build machine. +- Issue #133: error with c() and xcmsSet without peaks. +- Issue #134: xcmsSet constructor endless loop. + +## Changes in version 1.51.7 + +- Major renaming of methods and classes to follow the naming convention: + - chromatographic peak (chromPeak): the peaks identified in rt dimension. + - feature: mz-rt feature, being the grouped chromatographic peaks within and + across samples. +- Issue #127: failing unit test on Windows build machine. + +## Changes in version 1.51.6 + +- groupFeatures and adjustRtime methods for XCMSnExp objects. +- New Param classes for groupFeatures and adjustRtime analysis methods: + FeatureDensityParam, MzClustParam, NearestFeaturesParam, FeatureGroupsParam + and ObiwarpParam. +- Issue #124 (filterRt,XCMSnExp returned empty object). + +## Changes in version 1.51.5 + +- MsFeatureData and XCMSnExp objects. +- features, features<-, adjustedRtime, adjustedRtime<-, featureGroups, + featureGroups<-, hasAlignedFeatures, hasAdjustedRtime and hasDetectedFeatures + methods. +- dropFeatures, dropFeatureGroups and dropAdjustedRtime methods. +- filterMz, filterRt, filterFile etc implemented. +- mz, intensity and rtime methods for XCMSnExp allowing to return values grouped + by sample. +- Issue #99 (rtrange outside of retention time range in getEIC,xcmsSet). +- Issue #101 (xcmsRaw function returns NULL if mslevel = 1 is specified). +- Issue #102 (centWave returns empty matrix if scales not OK). Thanks to + J. Stanstrup. +- Issue #91 (warning instead of error if no peaks in ROI). Thanks to J. Stanstrup. + +## Changes in version 1.51.4 + +- added deepCopy to avoid corrupting the original object, thanks to + J. Stanstrup, closes #93 + +## Changes in version 1.51.3 + +- binYonX binning function. +- imputeLinInterpol function providing linear interpolation of missing values. +- breaks_on_binSize and breaks_on_nBins functions to calculate breaks defining + bins. +- New vignette "new_functionality.Rmd" describing new and modified functionality + in xcms. +- Add do_detectFeatures_matchedFilter function. +- Add do_detectFeatures_centWave function. +- Add do_detectFeatures_centWaveWithPredIsoROIs function and unit test. +- Implement a new data import function. +- Add do_detectFeatures_MSW function and unit test. +- Argument stopOnError in xcmsSet function that allows to perform feature + detection on all files without stopping on errors. +- Method showError for xcmsSet objects that list all errors during feature + detection (if stopOnError = FALSE in the xcmsSet function). +- [ method to subset xcmsRaw objects by scans. +- profMat method to extract/create the profile matrix from/for an xcmsRaw. +- Add new detectFeatures methods for MSnExp and OnDiskMSnExp objects from the + MSnbase package. +- Add new CentWaveParam, MatchedFilterParam, MassifquantParam, MSWParam and + CentWavePredIsoParam parameter class to perform method dispatch in the + detectFeatures method. +- retcor.obiwarp uses the new binning methods for profile matrix generation. +- scanrange,xcmsRaw reports always a scanrange of 1 and length(object@scantime). +- scanrange,xcmsSet reports the scanrange eventually specified by the user in + the xcmsSet function. +- Fixed bug in rawMat (issue #58). +- Fix issue #60: findPeaks.massifquant always returns a xcmsPeaks object. + +## Changes in version 1.51.2 + +- As suggested by Jan Stanstrup, do not error if a centWave ROI + contains no data, closes #90 + +## Changes in version 1.51.1 + +- Fix incorrrect indexing getEIC function reported by Will Edmands, closes #92 + + +# xcms 1.49 + +## Changes in version 1.49.7 + +- Fix documentation warnings. + +## Changes in version 1.49.6 + +- Peak Picking function findPeaks.centWaveWithPredictedIsotopeROIs() and + findPeaks.addPredictedIsotopeFeatures(), which allow more sensitive detection + of isotope features. + +## Changes in version 1.49.5 + +- Some documentation updates. +- Preparation for a new binning function + +## Changes in version 1.49.4 + +- Fix getXcmsRaw that would prevent retention time correction to be applied + (issue #44 reported by Aleksandr). + +## Changes in version 1.49.3 + +- updateObject method for xcmsSet. +- xcms uses now BiocParallel for parallel processing. All other parallel + processing functions have been deprecated. +- Added missing package imports. +- Fix bug in fillPeaksChromPar referencing a non-existing variables i and + object. +- Fix bug in group.nearest: variable scoreList was mis-spelled (coreList). +- Remove all DUP = FALSE from the .C calls as they are ignored anyways. +- Re-organization of class, function and method definitions in R-files. +- Use roxygen2 to manage the DESCRIPTION's collate field. + +## Changes in version 1.49.2 + +- Initial support for exporint mzTab format. Since Changes are + still to be expected, xcms:::writeMzTab() is not yet exported. + +## Changes in version 1.49.1 + +- The raw CDF/mzXML/mzData/mzML is assumed to have scans sorted by m/z. + Instead of throwing an "m/z sort assumption violated !" error, + the data is re-read and on-demand sorted by m/z. + + +# xcms 1.47 + +## Changes in version 1.47.3 + +- Disable parallel processing in unit tests causing a timeout + on BioC build machines + +## Changes in version 1.47.2 + +- Fix problem in getEIC on xcmsSet objects reported by Alan Smith in issue #7 and + add a RUnit test case to test for this (test.issue7 in runit.getEIC.R). +- Changed some unnecessary warnings into messages. + +## Changes in version 1.47.2 + +- Disabled parallel processing in unit tests +- migrate dependencies from ncdf -> ncdf4 + + +# xcms 1.45 + +## Changes in version 1.45.7 + +- Disabled Rmpi support and usage on Windows + +## Changes in version 1.45.6 + +- J. Rainer implemented a [ method that allows to subset an xcmsSet. +- Fixed a problem in split.xcmsSet that did not split the phenoData properly. + Added some details to the documentation of xcmsSet-class. + +## Changes in version 1.45.5 + +- The sampclass method for xcmsSet will now return the content of the + column "class" from the data.frame in the phenoData slot, or if not + present, the interaction of all factors (columns) of that data.frame. +- The sampclass<- method replaces the content of the "class" column in + the phenoData data.frame. If a data.frame is submitted, the interaction + of its columns is calculated and stored into the "class" column. +- Fixed a bug that resulted in a cryptic error message + when no input files are available to the xcmsSet function. + +## Changes in version 1.45.4 + +- Fixed a bug in the levelplot method for xcmsSet. + +## Changes in version 1.45.3 + +- xcmsSet now allows phenoData to be an AnnotatedDataFrame. +- new slots for xcmsRaw: + - mslevel: store the mslevel parameter submitted to xcmsRaw. + - scanrange: store the scanrange parameter submitted to xcmsRaw. +- new slots for xcmsSet: + - mslevel: stores the mslevel argument from the xcmsSet method. + - scanrange: to keep track of the scanrange argument of the xcmsSet method. +- new methods for xcmsRaw: + - levelplot: similar to the image method, plots m/z vs RT with color coded + intensities. + - mslevel: returns the value for the .mslevel slot. For downstream + compatibility, this method returns NULL if the object does not have the same + named slot. + - profinfo: same functionality as the profinfo method for xcmsSet. + - scanrange: returns the value for the scanrange slot. For downstream + compatibility, this method returns NULL if the object does not have the same + named slot. +- new methods for xcmsSet: + - getXcmsRaw: returns a xcmsRaw object for one or more files in the xcmsSet, + eventually applying retention time correction etc. + - levelplot: similar to the image method, plots m/z vs RT with color coded + intensities. Allows in addition to highlight identified peaks. + - mslevel: returns the value for the mslevel slot. For downstream + compatibility, this method returns NULL if the object does not have the same + named slot. + - profMethod: same functionality as the profMethod method of xcmsRaw. + - profStep: same functionality as the profStep method of xcmsRaw. + - scanrange: returns the value for the scanrange slot. For downstream + compatibility, this method returns NULL if the object does not have the same + named slot. +- show method for xcmsSet updated to display also informations about the mslevel + and scanrange. +- Elaborated some documentation entries. +- rtrange and mzrange for xcmsRaw method plotEIC use by default the full RT and + m/z range. +- Added arguments "lty" and "add" to plotEIC method for xcmsRaw. +- getEIC without specifying mzrange returns the ion chromatogram for the full + m/z range (i.e. the base peak chromatogram). +- Checking if phenoData is a data.frame or AnnotatedDataFrame and throw an error + otherwise. +- xcmsSet getEIC method for water Lock mass corrected files for a subset of + files did not evaluate whether the specified files were corrected. + +## Changes in version 1.45.2 + +- The xcms split() function now accepts factors that are shorter than the number + of samples in the xcmsSet, following more closely the standard split() + behaviour + +## Changes in version 1.45.1 + +- plotrt now allows col to be a vector of color definition, + same as the plots for retcor methods. +- Added $ method to access phenoData columns in a eSet/ExpressionSet like + manner. +- Allow to use the "parallel" package for parallel processing of the functions + xcmsSet and fillPeaks.chrom. +- Thanks to J. Rainer! + + +# xcms 1.43 + +## Changes in version 1.43.3 + +- Give a more verbose error message when file not found + +## Changes in version 1.43.2 + +- Use ProtGenerics, adapted xcms peaks() + +## Changes in version 1.43.1 + +- function plotQC() for plotting various QC plots on RT and m/z + + +# xcms 1.41 + +## Changes in version 1.41.1 + +- fix sampclass generation from phenoData if some combinations of factors don't + exist +- disable parallel code in manpages to avoid issues on BioC windows build farm + machines + + +# xcms 1.39 + +## Changes in version 1.39.6 + +- Massifquant reports the maximum intensity for each isotope trace (peak). This + is useful for interactive parameter optimization. +- Major memory reduction in parallel fillPeaks() thanks to Jan Stanstrup. Now + using an environment to mirror gvals to each list item in the very large + argList. + +## Changes in version 1.39.4 + +- Fixed write.cdf(), which had an intensity offset of +1, added a unit test + +## Changes in version 1.39.3 + +- New R-devel check unload better. Lingering ramp code removed, import from + mzR. Cleaned up other errors in package check. + +## Changes in version 1.39.1 + +- Updated doubleMatrix c code to allow for larger profile matrixes +- Moved inst/doc to vignettes + + +# xcms 1.37 + +## Changes in version 1.37.6 + +- Introducing write.mzQuantML(xcmsSet) to export the peak list and grouped + matrix to the PSI format mzQuantML (see http://www.psidev.info/mzquantml) +- Add Brigham Young University to LICENSE file for copyright purposes. +- Add copyright information display when running findPeaks.massifquant() + within xcmsRaw.R +- Clean and update documentation for findPeaks.massifquant-methods.Rd +- Remove unused parameters in findKalmanROIs() within xcmsRaw.R + +## Changes in version 1.37.5 + +- fixed bug in retcor.obiwarp where the scanrange of the first sample would be + checked instead of the center sample + +## Changes in version 1.37.4 + +- Skip t-test in diffreport() if one class has less than 2 samples. + +## Changes in version 1.37.3 + +- fixed bug in patternVsRowScore (group.nearest) that was introduced by the + modifications in rev 65169 and caused features to be aligned that were far + outside the given m/z and retention time windows. + +## Changes in version 1.37.1 + +- fixed fillPeaks, which 1) dropped non-standard columns and 2) failed if + nothing to do, based on patches by Tony Larson. + +## Changes in version 1.37.1 + +- Introducing msn2xcmsRaw, to allow findPeaks() on MS2 and MSn data + + +# xcms 1.35 + +## Changes in version 1.35.7 + +- fixed indexing bug in group.nearest, which under certain circumstances caused + all peaks in the first sample to be ignored (reported by Tony Larson) + +## Changes in version 1.35.6 + +- Obiwarp retention time alignment error-ed if scanrange was used as a parameter + setting during xcmsSet/peak detection The method now tries to automatically + find the set scanrange and uses this range for alignment. + +## Changes in version 1.35.4 + +- Introducing parallel fillPeaks +- Replace snow requirement with minimum R version 2.14.0 + +## Changes in version 1.35.3 + +- if group.density was used with very low minfrac settings (< 0.5) it did not + return all feature groups, but only those that include features from at least + 50% of samples in a group. This limitation was removed. + +## Changes in version 1.35.2 + +- Behind the scenes xcms now uses the xcmsSource class to read raw data. This + allows e.g. to write a class that pulls raw data from e.g. a database +- massifquant: simplified logic structure of Tracker::claimDataIdx resolved + failure on new test case. +- massifquant: reporting features data structure compatible with multiple sample + comparison within XCMS. + +## Changes in version 1.35.1 + +- The mzData export is now much faster and uses less memory + + +# xcms 1.33 + +## Changes in version 1.33.16 + +- diffreport and plotEIC have a new parameter mzdec, with is the number of + decimal places of the m/z values in the EIC plot title + +## Changes in version 1.33.16 + +- Lock mass gap filler now works with netCDF lock mass function file to find the + exact times of the scans and works with the newer Waters MS instruments. + +## Changes in version 1.33.15 + +- scanrage is now honoured in xcmsSet, also when in parallel mode + +## Changes in version 1.33.14 + +- scanrage is now honoured in xcmsRaw, and consequently also in + xcmsSet(matchedFilter), where previously it was ignored. + +## Changes in version 1.33.13 + +- write.cdf() has been fixed to write files AMDIS can read + +## Changes in version 1.33.12 + +- write.mzData adds Polarity to the file if available + +## Changes in version 1.33.11 + +- centWave uses a new method to estimate local noise which improves detection of + closely spaced peaks +- group.mzClust was failing when result had one peak + +# xcms 1.32 and before + +For more details and all changes before May 2012 please see the (now +discontinued) CHANGELOG in the source package (inst/ folder). + +## CHANGED BEHAVIOUR since Version 1.32: + +Other Changes since Version 1.32: +- improved mzData writing, now includes MSn spectra and less verbose. +- improved netCDF writing, but not yet good enough for AMDIS + +## CHANGED BEHAVIOUR since Version 1.14: + +- centWave may report a smaller set of peaks, due to a small bug + in the ROI algorithm some features with mass deviation > ppm were retained. + +Other Changes since Version 1.14: + +- New method for grouping: an algorithm inspired by mzMine + group(method="nearest") has been implemented. It is slower + than group(method="density"). It can individually group + close-eluting peaks of very similar mass + +- New method for retention time correction: + The retcor(method="obiwarp") algorithm operates on the raw data, + and thus allows to correct runs without well-behaving + peak groups, or without peak picking at all. + +- fillPeaks(method="MSW") is now also available + for direct infusion spectra. The findPeaks(method="MSW") + now returns several intensities, and correctly reports + mzmin and mzmax for peaks. + +- centWave now uses dynamic memory allocation, needs much less memory, + and these BUF related errors should be a thing of the past. + +- centWave gains an optional argument "noise", + which is useful for data that was centroided without any intensity threshold, + centroids with intensity < "noise" are omitted from ROI detection + +- the fillPeaks() methods now remember which was + an observed, and which was a "filled" peak. + +- For direct infusion spectra diffreport() now shows + the raw peak shapes, and also indicated "real" and "filled" peaks. + +- xcmsRaw can now filter for positive/negative spectra, + if the file includes both polarities. xcmsSet() can pass + the polarity to contain positive/negative peaks only. diff --git a/R/AllGenerics.R b/R/AllGenerics.R index 7e4f257cf..2d69b37bf 100644 --- a/R/AllGenerics.R +++ b/R/AllGenerics.R @@ -331,6 +331,9 @@ setGeneric("checkBack<-", function(object, value) standardGeneric("checkBack<-") #' @examples #' #' ## Load a test data set with detected peaks +#' library(MSnbase) +#' library(xcms) +#' library(MsExperiment) #' faahko_sub <- loadXcmsData("faahko_sub2") #' #' ## Get EICs for every detected chromatographic peak @@ -708,6 +711,8 @@ setGeneric("family<-", function(object, value) standardGeneric("family<-")) #' @examples #' #' ## Load a test data set with detected peaks +#' library(xcms) +#' library(MsExperiment) #' faahko_sub <- loadXcmsData("faahko_sub2") #' #' ## Disable parallel processing for this example @@ -1009,6 +1014,8 @@ setGeneric("filepaths<-", function(object, value) standardGeneric("filepaths<-") #' @examples #' #' ## Load a test data set with identified chromatographic peaks +#' library(xcms) +#' library(MsExperiment) #' res <- loadXcmsData("faahko_sub2") #' #' ## Disable parallel processing for this example @@ -1016,7 +1023,7 @@ setGeneric("filepaths<-", function(object, value) standardGeneric("filepaths<-") #' #' ## Perform the correspondence. We assign all samples to the same group. #' res <- groupChromPeaks(res, -#' param = PeakDensityParam(sampleGroups = rep(1, length(fileNames(res))))) +#' param = PeakDensityParam(sampleGroups = rep(1, length(res)))) #' #' ## For how many features do we lack an integrated peak signal? #' sum(is.na(featureValues(res))) @@ -1388,6 +1395,8 @@ setGeneric("group", function(object, ...) standardGeneric("group")) #' #' @param value Replacement value for `<-` methods. #' +#' @param x The parameter object. +#' #' @param ... Optional parameters. #' #' @return For `groupChromPeaks`: either an [XcmsExperiment()] or [XCMSnExp()] @@ -1905,6 +1914,8 @@ setGeneric("reconstructChromPeakSpectra", function(object, ...) #' @examples #' #' ## Load a test data set with detected peaks +#' library(xcms) +#' library(MsExperiment) #' faahko_sub <- loadXcmsData("faahko_sub2") #' #' ## Disable parallel processing for this example @@ -2055,6 +2066,8 @@ setGeneric("stitch.netCDF.new", function(object, lockMass) standardGeneric("stit #' @examples #' #' ## Load a test data set with detected peaks +#' library(xcms) +#' library(MsExperiment) #' faahko_sub <- loadXcmsData("faahko_sub2") #' #' ## Set up parameter to save as .RData file diff --git a/R/DataClasses.R b/R/DataClasses.R index af46beb80..fab0cc414 100644 --- a/R/DataClasses.R +++ b/R/DataClasses.R @@ -452,6 +452,8 @@ setClass("XProcessHistory", #' bell curve. See https://github.com/sneumann/xcms/pull/685 and #' https://doi.org/10.1186/s12859-023-05533-4 for more information. #' +#' @param x The parameter object. +#' #' @details #' #' The centWave algorithm is most suitable for high resolution @@ -487,7 +489,7 @@ setClass("XProcessHistory", #' detection in purely chromatographic data. #' #' @references -#' Ralf Tautenhahn, Christoph B\"{o}ttcher, and Steffen Neumann "Highly +#' Ralf Tautenhahn, Christoph Böttcher, and Steffen Neumann "Highly #' sensitive feature detection for high resolution LC/MS" \emph{BMC Bioinformatics} #' 2008, 9:504 #' @@ -517,13 +519,14 @@ NULL #' cwp #' #' ## Perform the peak detection using centWave on some of the files from the -#' ## faahKO package. Files are read using the readMSData from the MSnbase -#' ## package +#' ## faahKO package. Files are read using the `readMsExperiment` function +#' ## from the MsExperiment package #' library(faahKO) #' library(xcms) +#' library(MsExperiment) #' fls <- dir(system.file("cdf/KO", package = "faahKO"), recursive = TRUE, #' full.names = TRUE) -#' raw_data <- readMSData(fls[1], mode = "onDisk") +#' raw_data <- readMsExperiment(fls[1]) #' #' ## Perform the peak detection using the settings defined above. #' res <- findChromPeaks(raw_data, param = cwp) @@ -892,7 +895,7 @@ setClass("MatchedFilterParam", #' centWave algorithm, which includes wavelet estimation. #' #' @details This algorithm's performance has been tested rigorously -#' on high resolution LC/{OrbiTrap, TOF}-MS data in centroid mode. +#' on high resolution LC/(OrbiTrap, TOF)-MS data in centroid mode. #' Simultaneous kalman filters identify chromatographic peaks and calculate #' their area under the curve. The default parameters are set to operate on #' a complex LC-MS Orbitrap sample. Users will find it useful to do some @@ -1108,6 +1111,7 @@ NULL #' #' @examples #' +#' library(MSnbase) #' ## Create a MSWParam object #' mp <- MSWParam() #' ## Change snthresh parameter @@ -1836,6 +1840,7 @@ setClass("MsFeatureData", contains = c("environment"), #' @examples #' #' ## Load a test data set with detected peaks +#' library(MSnbase) #' data(faahko_sub) #' ## Update the path to the files for the local system #' dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") diff --git a/R/do_findChromPeaks-functions.R b/R/do_findChromPeaks-functions.R index cb89383e2..9767c8f06 100644 --- a/R/do_findChromPeaks-functions.R +++ b/R/do_findChromPeaks-functions.R @@ -68,7 +68,8 @@ #' @family core peak detection functions #' #' @references -#' Ralf Tautenhahn, Christoph B\"{o}ttcher, and Steffen Neumann "Highly +#' +#' Ralf Tautenhahn, Christoph Böttcher, and Steffen Neumann "Highly #' sensitive feature detection for high resolution LC/MS" #' \emph{BMC Bioinformatics} 2008, 9:504 #' @@ -163,7 +164,7 @@ do_findChromPeaks_centWave <- function(mz, int, scantime, valsPerSpect, verboseColumns = verboseColumns, roiList = roiList, firstBaselineCheck = firstBaselineCheck, roiScales = roiScales, sleep = sleep, - extendLengthMSW = extendLengthMSW, + extendLengthMSW = extendLengthMSW, verboseBetaColumns = verboseBetaColumns) } else { ## message("DEBUG: using modified centWave.") @@ -579,7 +580,7 @@ do_findChromPeaks_centWave <- function(mz, int, scantime, valsPerSpect, lm <- .narrow_rt_boundaries(lm, d) lm_seq <- lm[1]:lm[2] pd <- d[lm_seq] - + # Implement a fit of a skewed gaussian (beta distribution) # for peak shape and within-peak signal-to-noise ratio # See https://doi.org/10.1186/s12859-023-05533-4 and @@ -1265,7 +1266,7 @@ do_findChromPeaks_centWave <- function(mz, int, scantime, valsPerSpect, #' by specifying \code{withWave = TRUE}. #' #' @details This algorithm's performance has been tested rigorously -#' on high resolution LC/{OrbiTrap, TOF}-MS data in centroid mode. +#' on high resolution LC/(OrbiTrap, TOF)-MS data in centroid mode. #' Simultaneous kalman filters identify peaks and calculate their #' area under the curve. The default parameters are set to operate on #' a complex LC-MS Orbitrap sample. Users will find it useful to do some @@ -2673,7 +2674,7 @@ do_findChromPeaks_centWaveWithPredIsoROIs <- verboseColumns = FALSE, roiList = list(), firstBaselineCheck = TRUE, roiScales = NULL, snthreshIsoROIs = 6.25, maxCharge = 3, maxIso = 5, mzIntervalExtension = TRUE, - polarity = "unknown", extendLengthMSW = FALSE, + polarity = "unknown", extendLengthMSW = FALSE, verboseBetaColumns = FALSE) { ## Input argument checking: most of it will be done in ## do_findChromPeaks_centWave @@ -3271,9 +3272,9 @@ peaksWithMatchedFilter <- function(int, rt, fwhm = 30, sigma = fwhm / 2.3548, #' @examples #' #' ## Reading a file +#' library(MsExperiment) #' library(xcms) -#' od <- readMSData(system.file("cdf/KO/ko15.CDF", package = "faahKO"), -#' mode = "onDisk") +#' od <- readMsExperiment(system.file("cdf/KO/ko15.CDF", package = "faahKO")) #' #' ## Extract chromatographic data for a small m/z range #' mzr <- c(272.1, 272.2) @@ -3633,9 +3634,9 @@ peaksWithCentWave <- function(int, rt, #' #' @examples #' +#' library(MsExperiment) #' library(xcms) -#' od <- readMSData(system.file("cdf/KO/ko15.CDF", package = "faahKO"), -#' mode = "onDisk") +#' od <- readMsExperiment(system.file("cdf/KO/ko15.CDF", package = "faahKO")) #' #' ## Extract chromatographic data for a small m/z range #' chr <- chromatogram(od, mz = c(272.1, 272.3))[1, 1] @@ -3731,7 +3732,7 @@ peaksWithCentWave <- function(int, rt, #' @author William Kumler #' #' @noRd -.get_beta_values <- function(intensity, rtime = seq_along(intensity), +.get_beta_values <- function(intensity, rtime = seq_along(intensity), skews=c(3, 3.5, 4, 4.5, 5), zero.rm = TRUE){ if (zero.rm) { ## remove 0 or NA intensities @@ -3744,7 +3745,7 @@ peaksWithCentWave <- function(int, rt, beta_snr <- NA } else { beta_sequence <- rep(.scale_zero_one(rtime), each=length(skews)) - beta_vals <- t(matrix(dbeta(beta_sequence, shape1 = skews, shape2 = 5), + beta_vals <- t(matrix(dbeta(beta_sequence, shape1 = skews, shape2 = 5), nrow = length(skews))) # matplot(beta_vals) beta_cors <- cor(intensity, beta_vals) diff --git a/R/do_groupChromPeaks-functions.R b/R/do_groupChromPeaks-functions.R index 9bf3668bc..1170ef44d 100644 --- a/R/do_groupChromPeaks-functions.R +++ b/R/do_groupChromPeaks-functions.R @@ -75,6 +75,8 @@ #' #' @examples #' ## Load the test file +#' library(xcms) +#' library(MsExperiment) #' faahko_sub <- loadXcmsData("faahko_sub2") #' #' ## Disable parallel processing for this example diff --git a/R/functions-Chromatogram.R b/R/functions-Chromatogram.R index 0cede6580..6e90531de 100644 --- a/R/functions-Chromatogram.R +++ b/R/functions-Chromatogram.R @@ -62,8 +62,8 @@ #' #' @examples #' -#' xd <- readMSData(system.file('cdf/KO/ko15.CDF', package = "faahKO"), -#' mode = "onDisk") +#' library(MsExperiment) +#' xd <- readMsExperiment(system.file('cdf/KO/ko15.CDF', package = "faahKO")) #' chr <- chromatogram(xd, mz = c(-0.5, 0.5) + 453.2) #' xchr <- findChromPeaks(chr, param = CentWaveParam(snthresh = 0)) #' plot(xchr) diff --git a/R/functions-OnDiskMSnExp.R b/R/functions-OnDiskMSnExp.R index d0c16d5e4..b774b4000 100644 --- a/R/functions-OnDiskMSnExp.R +++ b/R/functions-OnDiskMSnExp.R @@ -703,6 +703,7 @@ setReplaceMethod("dirname", "OnDiskMSnExp", function(path, value) { #' #' @examples #' +#' library(MSnbase) #' fl <- system.file("TripleTOF-SWATH", "PestMix1_DDA.mzML", package = "msdata") #' pest_dda <- readMSData(fl, mode = "onDisk") #' res <- .estimate_prec_intensity(pest_dda) diff --git a/R/functions-XCMSnExp.R b/R/functions-XCMSnExp.R index fdbf738c7..2bd445721 100644 --- a/R/functions-XCMSnExp.R +++ b/R/functions-XCMSnExp.R @@ -796,6 +796,7 @@ adjustRtimePeakGroups <- function(object, param = PeakGroupsParam(), #' @examples #' #' ## Load a test data set with detected peaks +#' library(MSnbase) #' data(faahko_sub) #' ## Update the path to the files for the local system #' dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") @@ -964,6 +965,7 @@ isCalibrated <- function(object) { #' @examples #' #' ## Load a test data set with detected peaks +#' library(MSnbase) #' data(faahko_sub) #' ## Update the path to the files for the local system #' dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") @@ -1202,6 +1204,7 @@ featureSummary <- function(x, group, perSampleCounts = FALSE, #' @examples #' #' ## Load a test data set with detected peaks +#' library(MSnbase) #' data(faahko_sub) #' ## Update the path to the files for the local system #' dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") @@ -1854,6 +1857,7 @@ setMethod("hasFilledChromPeaks", "XCMSnExp", function(object) { #' #' @examples #' +#' library(MSnbase) #' xd <- readMSData(system.file('cdf/KO/ko15.CDF', package = "faahKO"), #' mode = "onDisk") #' xd <- findChromPeaks(xd, param = CentWaveParam()) diff --git a/R/functions-XChromatogram.R b/R/functions-XChromatogram.R index bfdd1f47c..b17f591dd 100644 --- a/R/functions-XChromatogram.R +++ b/R/functions-XChromatogram.R @@ -141,6 +141,7 @@ #' #' @examples #' +#' library(MSnbase) #' ## Create a XChromatogram object #' pks <- matrix(nrow = 1, ncol = 6) #' colnames(pks) <- c("rt", "rtmin", "rtmax", "into", "maxo", "sn") diff --git a/R/functions-XChromatograms.R b/R/functions-XChromatograms.R index 3f41fa408..119a29a71 100644 --- a/R/functions-XChromatograms.R +++ b/R/functions-XChromatograms.R @@ -43,6 +43,7 @@ #' ## ---- 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))) #' diff --git a/R/functions-imputation.R b/R/functions-imputation.R index 9ae458329..3475db216 100644 --- a/R/functions-imputation.R +++ b/R/functions-imputation.R @@ -22,6 +22,7 @@ #' #' @examples #' +#' library(MSnbase) #' library(faahKO) #' data("faahko") #' @@ -111,6 +112,7 @@ imputeRowMin <- function(x, min_fraction = 1/2) { #' @examples #' #' library(faahKO) +#' library(MSnbase) #' data("faahko") #' #' xset <- group(faahko) diff --git a/R/functions-utils.R b/R/functions-utils.R index 8df509b18..77d236ebf 100644 --- a/R/functions-utils.R +++ b/R/functions-utils.R @@ -307,8 +307,9 @@ weightedMeanAroundApex <- function(x, w = rep(1, length(x)), i = 1) { #' #' @description #' -#' **UPDATE**: please use `plot(x, type = "XIC")` from the `MSnbase` package -#' instead. See examples below. +#' **UPDATE**: please use `plot()` from the `MsExperiment` or +#' `plot(x, type = "XIC")` from the `MSnbase` package instead. See examples +#' in the vignette for more information. #' #' The `plotMsData` creates a plot that combines an (base peak ) #' extracted ion chromatogram on top (rt against intensity) and a plot of @@ -338,19 +339,6 @@ weightedMeanAroundApex <- function(x, w = rep(1, length(x)), i = 1) { #' #' @md #' -#' @examples -#' -#' ## Read two files from the faahKO package -#' library(faahKO) -#' cdfs <- dir(system.file("cdf", package = "faahKO"), full.names = TRUE, -#' recursive = TRUE)[1:2] -#' raw_data <- readMSData(cdfs, mode = "onDisk") -#' -#' ## Subset the object to a rt and mz range and plot the data. -#' raw_data |> -#' filterRt(rt = c(2700, 2900)) |> -#' filterMz(mz = c(334.9, 335.1)) |> -#' plot(type = "XIC") plotMsData <- function(x, main = "", cex = 1, mfrow = c(2, 1), grid.color = "lightgrey", colramp = colorRampPalette( diff --git a/R/functions-xcmsSet.R b/R/functions-xcmsSet.R index 8eea47700..373ee20f0 100644 --- a/R/functions-xcmsSet.R +++ b/R/functions-xcmsSet.R @@ -418,12 +418,15 @@ phenoDataFromPaths <- function(paths) { ## patternVsRowScore patternVsRowScore <- function(currPeak, parameters, mplenv) { + if (!requireNamespace("RANN", quietly = TRUE)) + stop("The use of 'patternVsRowScore' requires package 'RANN'. Please ", + "install with 'BiocInstaller::install(\"RANN\")'") mplistmeanCurr <- mplenv$mplistmean[, c("mz", "rt")] mplistmeanCurr[, "mz"] <- mplistmeanCurr[, "mz"] * parameters$mzVsRTBalance peakmatCurr <- mplenv$peakmat[currPeak, c("mz", "rt"), drop = FALSE] peakmatCurr[, "mz"] <- peakmatCurr[, "mz"] * parameters$mzVsRTBalance - nnDist <- nn2(mplistmeanCurr, peakmatCurr[, c("mz", "rt"), drop = FALSE], + nnDist <- RANN::nn2(mplistmeanCurr, peakmatCurr[, c("mz", "rt"), drop = FALSE], k = min(length(mplistmeanCurr[, 1]), parameters$knn)) scoreListcurr <- data.frame(score = numeric(0), diff --git a/R/methods-Chromatogram.R b/R/methods-Chromatogram.R index f2b7463fa..cdff7f10a 100644 --- a/R/methods-Chromatogram.R +++ b/R/methods-Chromatogram.R @@ -45,6 +45,7 @@ #' #' @examples #' +#' library(MSnbase) #' ## Loading a test data set with identified chromatographic peaks #' faahko_sub <- loadXcmsData("faahko_sub2") #' faahko_sub <- filterRt(faahko_sub, c(2500, 3700)) @@ -192,6 +193,7 @@ setMethod("findChromPeaks", signature(object = "Chromatogram", #' #' @examples #' +#' library(MSnbase) #' chr1 <- Chromatogram(rtime = 1:10 + rnorm(n = 10, sd = 0.3), #' intensity = c(5, 29, 50, NA, 100, 12, 3, 4, 1, 3)) #' chr2 <- Chromatogram(rtime = 1:10 + rnorm(n = 10, sd = 0.3), @@ -261,6 +263,7 @@ setMethod("correlate", signature = c(x = "Chromatogram", y = "Chromatogram"), #' #' @examples #' +#' library(MSnbase) #' chr <- Chromatogram(rtime = 1:10 + rnorm(n = 10, sd = 0.3), #' intensity = c(5, 29, 50, NA, 100, 12, 3, 4, 1, 3)) #' diff --git a/R/methods-MChromatograms.R b/R/methods-MChromatograms.R index 0b7f13e5c..78bd598ff 100644 --- a/R/methods-MChromatograms.R +++ b/R/methods-MChromatograms.R @@ -4,11 +4,14 @@ #' #' @examples #' +#' library(MsExperiment) +#' library(xcms) #' ## Perform peak detection on an MChromatograms object -#' od3 <- readMSData(c(system.file("cdf/KO/ko15.CDF", package = "faahKO"), +#' +#' fls <- c(system.file("cdf/KO/ko15.CDF", package = "faahKO"), #' system.file("cdf/KO/ko16.CDF", package = "faahKO"), -#' system.file("cdf/KO/ko18.CDF", package = "faahKO")), -#' mode = "onDisk") +#' system.file("cdf/KO/ko18.CDF", package = "faahKO")) +#' od3 <- readMsExperiment(fls) #' #' ## Disable parallel processing for this example #' register(SerialParam()) @@ -190,6 +193,7 @@ setMethod("removeIntensity", "MChromatograms", #' #' @examples #' +#' library(MSnbase) #' chr1 <- Chromatogram(rtime = 1:10 + rnorm(n = 10, sd = 0.3), #' intensity = c(5, 29, 50, NA, 100, 12, 3, 4, 1, 3)) #' chr2 <- Chromatogram(rtime = 1:10 + rnorm(n = 10, sd = 0.3), @@ -365,6 +369,7 @@ setMethod("filterColumnsKeepTop", "MChromatograms", #' #' ## Load preprocessed data and extract EICs for some features. #' library(xcms) +#' library(MSnbase) #' xdata <- loadXcmsData() #' data(xdata) #' ## Update the path to the files for the local system diff --git a/R/methods-Params.R b/R/methods-Params.R index 0843298c8..e08ffda42 100644 --- a/R/methods-Params.R +++ b/R/methods-Params.R @@ -1498,3 +1498,15 @@ setReplaceMethod("ppm", "FillChromPeaksParam", function(object, value) { if (validObject(object)) return(object) }) + +#' @rdname findChromPeaks-centWave +setMethod("as.list", "CentWaveParam", function(x, ...) { + x <- updateObject(x) + callNextMethod(x) +}) + +#' @rdname groupChromPeaks +setMethod("as.list", "PeakDensityParam", function(x, ...) { + x <- updateObject(x) + callNextMethod(x) +}) diff --git a/R/methods-XCMSnExp.R b/R/methods-XCMSnExp.R index 449a5f4a2..516e8e3f4 100644 --- a/R/methods-XCMSnExp.R +++ b/R/methods-XCMSnExp.R @@ -947,6 +947,7 @@ setMethod("dropAdjustedRtime", "XCMSnExp", function(object) { #' @examples #' #' ## Loading a test data set with identified chromatographic peaks +#' library(MSnbase) #' data(faahko_sub) #' ## Update the path to the files for the local system #' dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") @@ -2085,6 +2086,7 @@ setMethod("featureValues", "XCMSnExp", function(object, method = c("medret", #' @examples #' #' ## Load a test data set with identified chromatographic peaks +#' library(MSnbase) #' data(faahko_sub) #' ## Update the path to the files for the local system #' dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") @@ -2799,6 +2801,7 @@ setMethod("dropFilledChromPeaks", "XCMSnExp", function(object) { #' @examples #' #' ## Load a test data set with detected peaks +#' library(MSnbase) #' data(faahko_sub) #' ## Update the path to the files for the local system #' dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") @@ -3169,6 +3172,7 @@ setMethod("writeMSData", signature(object = "XCMSnExp", file = "character"), #' @examples #' #' ## Load a test data set with detected peaks +#' library(MSnbase) #' data(faahko_sub) #' ## Update the path to the files for the local system #' dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") diff --git a/R/methods-group-features.R b/R/methods-group-features.R index d27b15b69..eb7482821 100644 --- a/R/methods-group-features.R +++ b/R/methods-group-features.R @@ -126,6 +126,7 @@ setReplaceMethod("featureGroups", "XcmsResult", function(object, value) { #' @examples #' #' library(MsFeatures) +#' library(MsExperiment) #' ## Load a test data set with detected peaks #' faahko_sub <- loadXcmsData("faahko_sub2") #' @@ -253,6 +254,7 @@ setMethod( #' @examples #' #' library(MsFeatures) +#' library(MsExperiment) #' ## Load a test data set with detected peaks #' faahko_sub <- loadXcmsData("faahko_sub2") #' @@ -788,6 +790,7 @@ plotFeatureGroups <- function(x, xlim = numeric(), ylim = numeric(), #' @examples #' #' library(MsFeatures) +#' library(MsExperiment) #' ## Load a test data set with detected peaks #' faahko_sub <- loadXcmsData("faahko_sub2") #' diff --git a/R/methods-xcmsSet.R b/R/methods-xcmsSet.R index 91b5a3c51..f2cb04913 100644 --- a/R/methods-xcmsSet.R +++ b/R/methods-xcmsSet.R @@ -1556,6 +1556,9 @@ setMethod("diffreport", "xcmsSet", function(object, h = 480, w = 640, mzdec=2, missing = numeric(), ...) { + if (!requireNamespace("multtest", quietly = TRUE)) + stop("The use of 'diffreport' requires package 'multtest'. Please ", + "install with 'BiocInstaller::install(\"multtest\")'") if ( nrow(object@groups)<1 || length(object@groupidx) <1) { stop("No group information. Use group().") } diff --git a/R/writemztab.R b/R/writemztab.R index 873ba10dd..8aa294b9d 100644 --- a/R/writemztab.R +++ b/R/writemztab.R @@ -10,15 +10,15 @@ ## utility function, combining different length objects into a dataframe ## padding short columns with NA rbind.ragged <- function(x, y) { - x <- as.data.frame(x) - y <- as.data.frame(y) + x <- as.data.frame(x) + y <- as.data.frame(y) colnames(x) <- seq(1:ncol(x)) colnames(y) <- seq(1:ncol(y)) - rbind.fill(x,y) + suppressWarnings(rbindFill(x,y)) } cvTerm <- function(CV, accession, name, value) { - paste("[", paste(CV, accession, name, value, sep=", "), "]", sep="") + paste("[", paste(CV, accession, name, value, sep=", "), "]", sep="") } #cvTerm("MS", "MS:1000443", "Mass Analyzer Type", "Orbitrap") @@ -52,9 +52,9 @@ mzTabHeader <- function(mztab, version, mode, type, description, xset) { samples <- paste("sample[", 1:length(runs), "]", sep="") names(samples) <- paste("assay[", 1:length(runs), "]-sample_ref", sep="") - + sampleDesc <- sampnames(xset) - names(sampleDesc) <- paste("sample[", 1:length(runs), "]-description", sep="") + names(sampleDesc) <- paste("sample[", 1:length(runs), "]-description", sep="") filetypes <- mzFileType(runs) names(runs) <- paste("ms_run[", 1:length(filetypes), "]-format", sep="") @@ -64,10 +64,10 @@ mzTabHeader <- function(mztab, version, mode, type, description, xset) { variableAssays <- unlist(tapply(seq(along=sampclass(xset)), sampclass(xset), function(x) paste(paste("assay[",x,"]", sep=""), collapse=","))) names(variableAssays) <- paste("study_variable[", seq(along=variableAssays), "]-assay_refs", sep="") - + variableDescriptions <- unique(as.character(sampclass(xset))) names(variableDescriptions) <- paste("study_variable[", seq(along=variableDescriptions), "]-description", sep="") - + mztab <- rbind.ragged(mztab, mzTabAddComment("Meta data section")) mztab <- rbind.ragged(mztab, mzTabAddTagValue("MTD", c("mzTab-version"=version, @@ -78,7 +78,7 @@ mzTabHeader <- function(mztab, version, mode, type, description, xset) { mztab <- rbind.ragged(mztab, mzTabAddTagValue("MTD", samples)) mztab <- rbind.ragged(mztab, mzTabAddTagValue("MTD", sampleDesc)) - + mztab <- rbind.ragged(mztab, mzTabAddTagValue("MTD", assays)) mztab <- rbind.ragged(mztab, mzTabAddTagValue("MTD", variableAssays)) mztab <- rbind.ragged(mztab, mzTabAddTagValue("MTD", variableDescriptions)) @@ -95,7 +95,7 @@ mzTabAddTagValue <- function(section, values) { mzTabAddValues <- function(mztab, headers, section, values) { h <- cbind.data.frame(headers, t(names(values)), stringsAsFactors=FALSE) v <- cbind.data.frame(section, values, stringsAsFactors=FALSE) - + mztab <- rbind.ragged(mztab, h) mztab <- rbind.ragged(mztab, v) } @@ -103,14 +103,14 @@ mzTabAddValues <- function(mztab, headers, section, values) { mzTabAddSME <- function(mztab, xset) { runs <- seq(along=sampnames(xset)) variables <- seq(along=levels(sampclass(xset))) - + idHeaders <- c("identifier", "description", "chemical_formula", "smiles", "inchi_key", "database", "database_version") searchHeaders1 <- c("search_engine", "best_search_engine_score") - + searchHeaders2 <- paste("search_engine_score_ms_run[", runs, "]", sep="") - + searchHeaders3 <- c("reliability", "modifications") featureHeaders <- c("charge", "adduct_ion", "exp_mass_to_charge", @@ -118,8 +118,8 @@ mzTabAddSME <- function(mztab, xset) { "retention_time_window", "uri", "spectra_ref") abundanceAssayHeaders <- paste("smallmolecule_abundance_assay[", runs, "]", sep="") - - + + abundanceVariableHeaders <- unlist(lapply(variables, FUN=function(v) c(paste("smallmolecule_abundance_study_variable[", v,"]", sep=""), paste("smallmolecule_abundance_stddev_study_variable[", v,"]", sep=""), paste("smallmolecule_abundance_std_error_study_variable[", v,"]", sep="")))) @@ -132,7 +132,7 @@ mzTabAddSME <- function(mztab, xset) { g <- groups(xset) v <- groupval(xset, value="into") - + result <- as.data.frame(matrix(character(0), ncol=length(headers), nrow=nrow(g))) colnames(result) <- headers @@ -140,14 +140,14 @@ mzTabAddSME <- function(mztab, xset) { #variableAssays <- unlist(tapply(seq(along=sampclass(xset)), sampclass(xset), function(x) # paste(paste("assay[",x,"]", sep=""), collapse=","))) #names(variableAssays) <- paste("study_variable[", seq(along=variableAssays), "]-assay_refs", sep="") - - + + result[,"retention_time"] <- g[,"rtmed"] result[,"exp_mass_to_charge"] <- g[,"mzmed"] result[, grepl("smallmolecule_abundance_assay", colnames(result))] <- v - + mztab <- mzTabAddValues(mztab, "SEH", "SME", result) - + } writeMzTab <- function(object, filename) { @@ -177,7 +177,7 @@ if (FALSE) { xset=xs) mzt <- xcms:::mzTabAddSME(mzt, xs) ##mzt - + xcms:::writeMzTab(mzt, "faahKO.mzTab") } @@ -186,7 +186,3 @@ if (FALSE) { library(MSnbase) m <- readMzTabData("faahKO.mzTab") } - - - - diff --git a/data/faahko_sub.RData b/data/faahko_sub.RData index f62256251f3f5522b3957a01c81e49ba1b82248a..54490a1b0e7a0533f3683aad4e1da8fc9c3fbc4e 100644 GIT binary patch literal 29944 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 VGsz=?(l)Z!MxXYED~Bm>{1?Jw&!YeU diff --git a/data/faahko_sub2.RData b/data/faahko_sub2.RData index c58a21c5de6fd59278d51c7153f14d00cb27d70c..d7a9ffd61a169412c7db08dd83ebf49edf7fe996 100644 GIT binary patch literal 26812 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 diff --git a/data/xdata.RData b/data/xdata.RData index 4ba55713f515d08e285215dfe5c005ff03061798..2cfa0b849db28437e5eba3ba28e8dd569bcb79fb 100644 GIT binary patch literal 174268 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

1KWSNqRe|SUKqFMf1Y}+>nX42CX=V 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 UY&GG%{XQ@aivj=u00045TFXGp00000 diff --git a/data/xmse.RData b/data/xmse.RData index 1e9a8b600e85a6fe3d879f3e99f13304497a087a..edbd17057dac367159b16738338d579d842e1c91 100644 GIT binary patch literal 181928 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 ojOGnWc0uo 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%0Aw{!aYYrD+}gHUYM46tx&wcB^1J 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�z6?W+KiR-mBmfa443roJT134s;$5iR`f~=R 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�Oh)6XG+gqF^+1mFAQeeooL3 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 literal 316799 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%0AF~bEISJG$+%*!CNRkW>jj2)vW7 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ʍ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 JPto|x{{TRu_)Gu* diff --git a/inst/NEWS b/inst/NEWS index 5e04e5189..a9df39024 100644 --- a/inst/NEWS +++ b/inst/NEWS @@ -1,4 +1,4 @@ -Changes in version 4.1.10 +Changes in version 4.1.12 ---------------------- - Implementation of the `LamaParama` class and method for the `adjustRtime()` @@ -8,6 +8,17 @@ Changes in version 4.1.10 `summarizeMatchLama()` and `plot(LamaParama)` which allows for evaluation of matching between lamas and chromPeaks. +Changes in version 4.1.11 +---------------------- + +- Clean up of required and suggested packages and namespace imports. + +Changes in version 4.1.10 +---------------------- + +- Ensure backward compatibility for parameter objects that gained additional + slots. + Changes in version 4.1.9 ---------------------- diff --git a/man/XCMSnExp-class.Rd b/man/XCMSnExp-class.Rd index 1753ee985..4dc7303ce 100644 --- a/man/XCMSnExp-class.Rd +++ b/man/XCMSnExp-class.Rd @@ -685,6 +685,7 @@ with feature definitions and phenodata information, into a \examples{ ## Load a test data set with detected peaks +library(MSnbase) data(faahko_sub) ## Update the path to the files for the local system dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") diff --git a/man/XCMSnExp-filter-methods.Rd b/man/XCMSnExp-filter-methods.Rd index 98e14def3..ad854af25 100644 --- a/man/XCMSnExp-filter-methods.Rd +++ b/man/XCMSnExp-filter-methods.Rd @@ -191,6 +191,7 @@ the raw retention times with the adjusted ones. \examples{ ## Loading a test data set with identified chromatographic peaks +library(MSnbase) data(faahko_sub) ## Update the path to the files for the local system dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") diff --git a/man/XChromatogram.Rd b/man/XChromatogram.Rd index 72703f9fe..8b2330810 100644 --- a/man/XChromatogram.Rd +++ b/man/XChromatogram.Rd @@ -600,6 +600,7 @@ being samples and rows features. ## ---- 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))) @@ -689,6 +690,7 @@ plotChromPeakDensity(res, param = prm) 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") diff --git a/man/applyAdjustedRtime.Rd b/man/applyAdjustedRtime.Rd index 1006c14ce..9b96133fa 100644 --- a/man/applyAdjustedRtime.Rd +++ b/man/applyAdjustedRtime.Rd @@ -34,6 +34,7 @@ history is preserved. \examples{ ## Load a test data set with detected peaks +library(MSnbase) data(faahko_sub) ## Update the path to the files for the local system dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") diff --git a/man/chromPeakChromatograms.Rd b/man/chromPeakChromatograms.Rd index 276d96025..7fb8663dc 100644 --- a/man/chromPeakChromatograms.Rd +++ b/man/chromPeakChromatograms.Rd @@ -59,6 +59,9 @@ of length equal to the number of chromatographic peaks (and one column). \examples{ ## Load a test data set with detected peaks +library(MSnbase) +library(xcms) +library(MsExperiment) faahko_sub <- loadXcmsData("faahko_sub2") ## Get EICs for every detected chromatographic peak diff --git a/man/chromatogram-method.Rd b/man/chromatogram-method.Rd index 6522024c8..af488d48a 100644 --- a/man/chromatogram-method.Rd +++ b/man/chromatogram-method.Rd @@ -109,6 +109,7 @@ and use these (for the subsetting based on the provided parameter \examples{ ## Load a test data set with identified chromatographic peaks +library(MSnbase) data(faahko_sub) ## Update the path to the files for the local system dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") diff --git a/man/correlate-Chromatogram.Rd b/man/correlate-Chromatogram.Rd index 0bd641072..d5eb143a2 100644 --- a/man/correlate-Chromatogram.Rd +++ b/man/correlate-Chromatogram.Rd @@ -81,6 +81,7 @@ correlation matrix might thus be different. } \examples{ +library(MSnbase) chr1 <- Chromatogram(rtime = 1:10 + rnorm(n = 10, sd = 0.3), intensity = c(5, 29, 50, NA, 100, 12, 3, 4, 1, 3)) chr2 <- Chromatogram(rtime = 1:10 + rnorm(n = 10, sd = 0.3), diff --git a/man/do_findChromPeaks_centWave.Rd b/man/do_findChromPeaks_centWave.Rd index 9a91e2df9..4270e893d 100644 --- a/man/do_findChromPeaks_centWave.Rd +++ b/man/do_findChromPeaks_centWave.Rd @@ -219,7 +219,7 @@ res <- do_findChromPeaks_centWave(mz = unlist(mzs), int = unlist(ints), head(res) } \references{ -Ralf Tautenhahn, Christoph B\"{o}ttcher, and Steffen Neumann "Highly +Ralf Tautenhahn, Christoph Böttcher, and Steffen Neumann "Highly sensitive feature detection for high resolution LC/MS" \emph{BMC Bioinformatics} 2008, 9:504 } diff --git a/man/do_findChromPeaks_massifquant.Rd b/man/do_findChromPeaks_massifquant.Rd index 4c6e81951..d8f1cca69 100644 --- a/man/do_findChromPeaks_massifquant.Rd +++ b/man/do_findChromPeaks_massifquant.Rd @@ -155,7 +155,7 @@ Massifquant is a Kalman filter (KF)-based chromatographic peak } \details{ This algorithm's performance has been tested rigorously - on high resolution LC/{OrbiTrap, TOF}-MS data in centroid mode. + on high resolution LC/(OrbiTrap, TOF)-MS data in centroid mode. Simultaneous kalman filters identify peaks and calculate their area under the curve. The default parameters are set to operate on a complex LC-MS Orbitrap sample. Users will find it useful to do some diff --git a/man/do_groupChromPeaks_density.Rd b/man/do_groupChromPeaks_density.Rd index 4b27d8a4e..739e915cb 100644 --- a/man/do_groupChromPeaks_density.Rd +++ b/man/do_groupChromPeaks_density.Rd @@ -109,6 +109,8 @@ accordingly. } \examples{ ## Load the test file +library(xcms) +library(MsExperiment) faahko_sub <- loadXcmsData("faahko_sub2") ## Disable parallel processing for this example diff --git a/man/extractMsData-method.Rd b/man/extractMsData-method.Rd index a413ae3d7..7a1105412 100644 --- a/man/extractMsData-method.Rd +++ b/man/extractMsData-method.Rd @@ -55,6 +55,7 @@ data range if \code{rt} and \code{mz} are not defined). \examples{ ## Load a test data set with detected peaks +library(MSnbase) data(faahko_sub) ## Update the path to the files for the local system dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") diff --git a/man/featureChromatograms.Rd b/man/featureChromatograms.Rd index 8d194e81b..725865883 100644 --- a/man/featureChromatograms.Rd +++ b/man/featureChromatograms.Rd @@ -163,6 +163,8 @@ is smaller if \code{x} contains also filled-in peaks (with \code{fillChromPeaks} \examples{ ## Load a test data set with detected peaks +library(xcms) +library(MsExperiment) faahko_sub <- loadXcmsData("faahko_sub2") ## Disable parallel processing for this example diff --git a/man/fillChromPeaks.Rd b/man/fillChromPeaks.Rd index a57e33e05..25d671608 100644 --- a/man/fillChromPeaks.Rd +++ b/man/fillChromPeaks.Rd @@ -260,6 +260,8 @@ in the matrix returned by the \code{\link[=featureValues]{featureValues()}} meth \examples{ ## Load a test data set with identified chromatographic peaks +library(xcms) +library(MsExperiment) res <- loadXcmsData("faahko_sub2") ## Disable parallel processing for this example @@ -267,7 +269,7 @@ register(SerialParam()) ## Perform the correspondence. We assign all samples to the same group. res <- groupChromPeaks(res, - param = PeakDensityParam(sampleGroups = rep(1, length(fileNames(res))))) + param = PeakDensityParam(sampleGroups = rep(1, length(res)))) ## For how many features do we lack an integrated peak signal? sum(is.na(featureValues(res))) diff --git a/man/filter-MChromatograms.Rd b/man/filter-MChromatograms.Rd index ca96dfa68..2a8fea2d3 100644 --- a/man/filter-MChromatograms.Rd +++ b/man/filter-MChromatograms.Rd @@ -112,6 +112,7 @@ columns by column \code{sortBy = "maxo"} or \code{sortBy = "into"} of the } \examples{ +library(MSnbase) chr1 <- Chromatogram(rtime = 1:10 + rnorm(n = 10, sd = 0.3), intensity = c(5, 29, 50, NA, 100, 12, 3, 4, 1, 3)) chr2 <- Chromatogram(rtime = 1:10 + rnorm(n = 10, sd = 0.3), diff --git a/man/findChromPeaks-Chromatogram-CentWaveParam.Rd b/man/findChromPeaks-Chromatogram-CentWaveParam.Rd index d7d5c2be7..9f342440b 100644 --- a/man/findChromPeaks-Chromatogram-CentWaveParam.Rd +++ b/man/findChromPeaks-Chromatogram-CentWaveParam.Rd @@ -47,6 +47,7 @@ detection artifacts. } \examples{ +library(MSnbase) ## Loading a test data set with identified chromatographic peaks faahko_sub <- loadXcmsData("faahko_sub2") faahko_sub <- filterRt(faahko_sub, c(2500, 3700)) @@ -64,11 +65,14 @@ xchr ## Plot data and identified peaks. plot(xchr) +library(MsExperiment) +library(xcms) ## Perform peak detection on an MChromatograms object -od3 <- readMSData(c(system.file("cdf/KO/ko15.CDF", package = "faahKO"), + +fls <- c(system.file("cdf/KO/ko15.CDF", package = "faahKO"), system.file("cdf/KO/ko16.CDF", package = "faahKO"), - system.file("cdf/KO/ko18.CDF", package = "faahKO")), - mode = "onDisk") + system.file("cdf/KO/ko18.CDF", package = "faahKO")) +od3 <- readMsExperiment(fls) ## Disable parallel processing for this example register(SerialParam()) diff --git a/man/findChromPeaks-centWave.Rd b/man/findChromPeaks-centWave.Rd index f7f2ac351..ec5ac694f 100644 --- a/man/findChromPeaks-centWave.Rd +++ b/man/findChromPeaks-centWave.Rd @@ -59,6 +59,7 @@ \alias{roiScales} \alias{roiScales<-,CentWaveParam-method} \alias{roiScales<-} +\alias{as.list,CentWaveParam-method} \title{Chromatographic peak detection using the centWave method} \usage{ CentWaveParam( @@ -139,6 +140,8 @@ CentWaveParam( \S4method{roiScales}{CentWaveParam}(object) \S4method{roiScales}{CentWaveParam}(object) <- value + +\S4method{as.list}{CentWaveParam}(x, ...) } \arguments{ \item{ppm}{\code{numeric(1)} defining the maximal tolerated m/z deviation in @@ -249,6 +252,8 @@ detection should be performed. Defaults to \code{msLevel = 1}.} \item{value}{The value for the slot.} \item{f}{For \code{integrate}: a \code{CentWaveParam} object.} + +\item{x}{The parameter object.} } \value{ The \code{CentWaveParam} function returns a \code{CentWaveParam} @@ -366,20 +371,21 @@ snthresh(cwp) <- 25 cwp ## Perform the peak detection using centWave on some of the files from the -## faahKO package. Files are read using the readMSData from the MSnbase -## package +## faahKO package. Files are read using the `readMsExperiment` function +## from the MsExperiment package library(faahKO) library(xcms) +library(MsExperiment) fls <- dir(system.file("cdf/KO", package = "faahKO"), recursive = TRUE, full.names = TRUE) -raw_data <- readMSData(fls[1], mode = "onDisk") +raw_data <- readMsExperiment(fls[1]) ## Perform the peak detection using the settings defined above. res <- findChromPeaks(raw_data, param = cwp) head(chromPeaks(res)) } \references{ -Ralf Tautenhahn, Christoph B\"{o}ttcher, and Steffen Neumann "Highly +Ralf Tautenhahn, Christoph Böttcher, and Steffen Neumann "Highly sensitive feature detection for high resolution LC/MS" \emph{BMC Bioinformatics} 2008, 9:504 } diff --git a/man/findChromPeaks-massifquant.Rd b/man/findChromPeaks-massifquant.Rd index 06fb4ec13..385101e3f 100644 --- a/man/findChromPeaks-massifquant.Rd +++ b/man/findChromPeaks-massifquant.Rd @@ -338,7 +338,7 @@ The \code{findChromPeaks,OnDiskMSnExp,MassifquantParam} } \details{ This algorithm's performance has been tested rigorously - on high resolution LC/{OrbiTrap, TOF}-MS data in centroid mode. + on high resolution LC/(OrbiTrap, TOF)-MS data in centroid mode. Simultaneous kalman filters identify chromatographic peaks and calculate their area under the curve. The default parameters are set to operate on a complex LC-MS Orbitrap sample. Users will find it useful to do some diff --git a/man/findPeaks-MSW.Rd b/man/findPeaks-MSW.Rd index d09f6d041..9569fdd00 100644 --- a/man/findPeaks-MSW.Rd +++ b/man/findPeaks-MSW.Rd @@ -273,6 +273,7 @@ These methods and classes are part of the updated and modernized } \examples{ +library(MSnbase) ## Create a MSWParam object mp <- MSWParam() ## Change snthresh parameter diff --git a/man/findPeaks.addPredictedIsotopeFeatures-methods.Rd b/man/findPeaks.addPredictedIsotopeFeatures-methods.Rd index cb03ebefc..5ea4877bc 100644 --- a/man/findPeaks.addPredictedIsotopeFeatures-methods.Rd +++ b/man/findPeaks.addPredictedIsotopeFeatures-methods.Rd @@ -108,7 +108,7 @@ \author{Ralf Tautenhahn} \encoding{UTF-8} \references{ - Ralf Tautenhahn, Christoph B\"{o}ttcher, and Steffen Neumann + Ralf Tautenhahn, Christoph Böttcher, and Steffen Neumann "Highly sensitive feature detection for high resolution LC/MS" BMC Bioinformatics 2008, 9:504\\ Hendrik Treutler and Steffen Neumann. diff --git a/man/findPeaks.centWave-methods.Rd b/man/findPeaks.centWave-methods.Rd index d1734d2bd..811b4beec 100644 --- a/man/findPeaks.centWave-methods.Rd +++ b/man/findPeaks.centWave-methods.Rd @@ -120,7 +120,7 @@ \author{Ralf Tautenhahn} \encoding{UTF-8} \references{ - Ralf Tautenhahn, Christoph B\"{o}ttcher, and Steffen Neumann + Ralf Tautenhahn, Christoph Böttcher, and Steffen Neumann "Highly sensitive feature detection for high resolution LC/MS" BMC Bioinformatics 2008, 9:504 } diff --git a/man/findPeaks.centWaveWithPredictedIsotopeROIs-methods.Rd b/man/findPeaks.centWaveWithPredictedIsotopeROIs-methods.Rd index ed8cd0cf0..f2baba7ea 100644 --- a/man/findPeaks.centWaveWithPredictedIsotopeROIs-methods.Rd +++ b/man/findPeaks.centWaveWithPredictedIsotopeROIs-methods.Rd @@ -125,7 +125,7 @@ \author{Ralf Tautenhahn} \encoding{UTF-8} \references{ - Ralf Tautenhahn, Christoph B\"{o}ttcher, and Steffen Neumann + Ralf Tautenhahn, Christoph Böttcher, and Steffen Neumann "Highly sensitive feature detection for high resolution LC/MS" BMC Bioinformatics 2008, 9:504\\ Hendrik Treutler and Steffen Neumann. diff --git a/man/groupChromPeaks.Rd b/man/groupChromPeaks.Rd index fe6dbdaff..5a4049523 100644 --- a/man/groupChromPeaks.Rd +++ b/man/groupChromPeaks.Rd @@ -61,6 +61,7 @@ \alias{kNN} \alias{kNN<-,NearestPeaksParam-method} \alias{kNN<-} +\alias{as.list,PeakDensityParam-method} \alias{groupChromPeaks,XCMSnExp,PeakDensityParam-method} \alias{groupChromPeaks,XCMSnExp,MzClustParam-method} \alias{groupChromPeaks,XCMSnExp,NearestPeaksParam-method} @@ -162,6 +163,8 @@ NearestPeaksParam( \S4method{kNN}{NearestPeaksParam}(object) <- value +\S4method{as.list}{PeakDensityParam}(x, ...) + \S4method{groupChromPeaks}{XCMSnExp,PeakDensityParam}(object, param, msLevel = 1L, add = FALSE) \S4method{groupChromPeaks}{XCMSnExp,MzClustParam}(object, param, msLevel = 1L) @@ -236,6 +239,8 @@ distance for retention times.} nearest neighbors to check.} \item{value}{The value for the slot.} + +\item{x}{The parameter object.} } \value{ For \code{groupChromPeaks}: either an \code{\link[=XcmsExperiment]{XcmsExperiment()}} or \code{\link[=XCMSnExp]{XCMSnExp()}} diff --git a/man/groupFeatures-abundance-correlation.Rd b/man/groupFeatures-abundance-correlation.Rd index 27f139ba4..84477fa4a 100644 --- a/man/groupFeatures-abundance-correlation.Rd +++ b/man/groupFeatures-abundance-correlation.Rd @@ -62,6 +62,7 @@ parameters for the similarity calculation is available in the \examples{ library(MsFeatures) +library(MsExperiment) ## Load a test data set with detected peaks faahko_sub <- loadXcmsData("faahko_sub2") diff --git a/man/groupFeatures-eic-similarity.Rd b/man/groupFeatures-eic-similarity.Rd index 544b2a6ac..c3ceb206d 100644 --- a/man/groupFeatures-eic-similarity.Rd +++ b/man/groupFeatures-eic-similarity.Rd @@ -144,6 +144,7 @@ is excluded from the correlation. \examples{ library(MsFeatures) +library(MsExperiment) ## Load a test data set with detected peaks faahko_sub <- loadXcmsData("faahko_sub2") diff --git a/man/groupFeatures-similar-rtime.Rd b/man/groupFeatures-similar-rtime.Rd index 938f09ceb..0d56170ea 100644 --- a/man/groupFeatures-similar-rtime.Rd +++ b/man/groupFeatures-similar-rtime.Rd @@ -36,6 +36,7 @@ See \code{\link[MsFeatures:groupFeatures-similar-rtime]{MsFeatures::SimilarRtime \examples{ library(MsFeatures) +library(MsExperiment) ## Load a test data set with detected peaks faahko_sub <- loadXcmsData("faahko_sub2") diff --git a/man/highlightChromPeaks.Rd b/man/highlightChromPeaks.Rd index 14f83995e..e5e46fb90 100644 --- a/man/highlightChromPeaks.Rd +++ b/man/highlightChromPeaks.Rd @@ -73,6 +73,7 @@ peak definitions to an existing plot, such as one created by the \examples{ ## Load a test data set with detected peaks +library(MSnbase) data(faahko_sub) ## Update the path to the files for the local system dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") diff --git a/man/imputeRowMin.Rd b/man/imputeRowMin.Rd index ec9effea9..b3999e3e6 100644 --- a/man/imputeRowMin.Rd +++ b/man/imputeRowMin.Rd @@ -20,6 +20,7 @@ with a proportion of the minimal value for that row (i.e. } \examples{ +library(MSnbase) library(faahKO) data("faahko") diff --git a/man/imputeRowMinRand.Rd b/man/imputeRowMinRand.Rd index f2d7368b5..147aebea4 100644 --- a/man/imputeRowMinRand.Rd +++ b/man/imputeRowMinRand.Rd @@ -66,6 +66,7 @@ fractions of the row minimum. \examples{ library(faahKO) +library(MSnbase) data("faahko") xset <- group(faahko) diff --git a/man/overlappingFeatures.Rd b/man/overlappingFeatures.Rd index ae10651c2..8bb937510 100644 --- a/man/overlappingFeatures.Rd +++ b/man/overlappingFeatures.Rd @@ -35,6 +35,7 @@ the m/z - rt space. \examples{ ## Load a test data set with detected peaks +library(MSnbase) data(faahko_sub) ## Update the path to the files for the local system dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") diff --git a/man/peaksWithCentWave.Rd b/man/peaksWithCentWave.Rd index fc78b8dba..189b6c22c 100644 --- a/man/peaksWithCentWave.Rd +++ b/man/peaksWithCentWave.Rd @@ -107,9 +107,9 @@ resulting in different signal to noise ratios. \examples{ ## Reading a file +library(MsExperiment) library(xcms) -od <- readMSData(system.file("cdf/KO/ko15.CDF", package = "faahKO"), - mode = "onDisk") +od <- readMsExperiment(system.file("cdf/KO/ko15.CDF", package = "faahKO")) ## Extract chromatographic data for a small m/z range mzr <- c(272.1, 272.2) diff --git a/man/plotChromPeakDensity.Rd b/man/plotChromPeakDensity.Rd index b4726caf6..db48c5fdf 100644 --- a/man/plotChromPeakDensity.Rd +++ b/man/plotChromPeakDensity.Rd @@ -98,6 +98,7 @@ algorithm and its supported settings. \examples{ ## Load a test data set with detected peaks +library(MSnbase) data(faahko_sub) ## Update the path to the files for the local system dirname(faahko_sub) <- system.file("cdf/KO", package = "faahKO") diff --git a/man/plotChromatogramsOverlay.Rd b/man/plotChromatogramsOverlay.Rd index f558d4cb2..1030ad61d 100644 --- a/man/plotChromatogramsOverlay.Rd +++ b/man/plotChromatogramsOverlay.Rd @@ -116,6 +116,7 @@ the \code{plot} function for \code{XChromatogram()} object for details). ## Load preprocessed data and extract EICs for some features. library(xcms) +library(MSnbase) xdata <- loadXcmsData() data(xdata) ## Update the path to the files for the local system diff --git a/man/plotMsData.Rd b/man/plotMsData.Rd index 075398458..ad6f1a55b 100644 --- a/man/plotMsData.Rd +++ b/man/plotMsData.Rd @@ -35,27 +35,14 @@ based on their intensity. See argument \code{col.regions} in \link[lattice:level.colors]{lattice::level.colors} documentation.} } \description{ -\strong{UPDATE}: please use \code{plot(x, type = "XIC")} from the \code{MSnbase} package -instead. See examples below. +\strong{UPDATE}: please use \code{plot()} from the \code{MsExperiment} or +\code{plot(x, type = "XIC")} from the \code{MSnbase} package instead. See examples +in the vignette for more information. The \code{plotMsData} creates a plot that combines an (base peak ) extracted ion chromatogram on top (rt against intensity) and a plot of rt against m/z values at the bottom. } -\examples{ - -## Read two files from the faahKO package -library(faahKO) -cdfs <- dir(system.file("cdf", package = "faahKO"), full.names = TRUE, - recursive = TRUE)[1:2] -raw_data <- readMSData(cdfs, mode = "onDisk") - -## Subset the object to a rt and mz range and plot the data. -raw_data |> - filterRt(rt = c(2700, 2900)) |> - filterMz(mz = c(334.9, 335.1)) |> - plot(type = "XIC") -} \author{ Johannes Rainer } diff --git a/man/refineChromPeaks.Rd b/man/refineChromPeaks.Rd index d23bdeccb..b1472702b 100644 --- a/man/refineChromPeaks.Rd +++ b/man/refineChromPeaks.Rd @@ -203,6 +203,8 @@ calculation of the peak signal (\code{"into"}). \examples{ ## Load a test data set with detected peaks +library(xcms) +library(MsExperiment) faahko_sub <- loadXcmsData("faahko_sub2") ## Disable parallel processing for this example diff --git a/man/removeIntensity-Chromatogram.Rd b/man/removeIntensity-Chromatogram.Rd index 18cc89a16..5343689a6 100644 --- a/man/removeIntensity-Chromatogram.Rd +++ b/man/removeIntensity-Chromatogram.Rd @@ -52,6 +52,7 @@ chromatographic data. } \examples{ +library(MSnbase) chr <- Chromatogram(rtime = 1:10 + rnorm(n = 10, sd = 0.3), intensity = c(5, 29, 50, NA, 100, 12, 3, 4, 1, 3)) diff --git a/man/storeResults.Rd b/man/storeResults.Rd index a72a4c8cd..e943c9932 100644 --- a/man/storeResults.Rd +++ b/man/storeResults.Rd @@ -36,6 +36,8 @@ listed above. \examples{ ## Load a test data set with detected peaks +library(xcms) +library(MsExperiment) faahko_sub <- loadXcmsData("faahko_sub2") ## Set up parameter to save as .RData file diff --git a/tests/testthat.R b/tests/testthat.R index 71624c6d0..cf8ea5a2d 100644 --- a/tests/testthat.R +++ b/tests/testthat.R @@ -1,6 +1,7 @@ library(testthat) library(xcms) library(faahKO) +library(MSnbase) library(msdata) if (.Platform$OS.type == "unix") { diff --git a/vignettes/LC-MS-feature-grouping.Rmd b/vignettes/LC-MS-feature-grouping.Rmd index bac3e990d..5269f33c4 100644 --- a/vignettes/LC-MS-feature-grouping.Rmd +++ b/vignettes/LC-MS-feature-grouping.Rmd @@ -67,6 +67,7 @@ result from this pre-processing updating also the location of the respective raw data files on the current machine. ```{r load-data} +library(MSnbase) library(xcms) library(faahKO) library(MsFeatures) diff --git a/vignettes/xcms-direct-injection.Rmd b/vignettes/xcms-direct-injection.Rmd index 3a5868944..ed496adce 100644 --- a/vignettes/xcms-direct-injection.Rmd +++ b/vignettes/xcms-direct-injection.Rmd @@ -12,7 +12,7 @@ vignette: > %\VignetteEngine{knitr::rmarkdown} %\VignetteKeywords{Mass Spectrometry, MS, Metabolomics, Bioinformatics} %\VignetteEncoding{UTF-8} - %\VignetteDepends{xcms,msdata,MassSpecWavelet,BiocStyle,signal} + %\VignetteDepends{xcms,msdata,MassSpecWavelet,BiocStyle,signal,MSnbase} --- ```{r style, echo = FALSE, results = 'asis'} @@ -41,6 +41,7 @@ Below we load the required packages. For information on the parallel processing setup please see the *BiocParallel* vignette. ```{r load-libs, message = FALSE, results = "hide"} +library(MSnbase) library(xcms) library(MassSpecWavelet) diff --git a/xcms.Rproj b/xcms.Rproj deleted file mode 100644 index 21a4da087..000000000 --- a/xcms.Rproj +++ /dev/null @@ -1,17 +0,0 @@ -Version: 1.0 - -RestoreWorkspace: Default -SaveWorkspace: Default -AlwaysSaveHistory: Default - -EnableCodeIndexing: Yes -UseSpacesForTab: Yes -NumSpacesForTab: 2 -Encoding: UTF-8 - -RnwWeave: Sweave -LaTeX: pdfLaTeX - -BuildType: Package -PackageUseDevtools: Yes -PackageInstallArgs: --no-multiarch --with-keep.source From 539c30e3608f8246e38f3ff4fe9083c07b3232d3 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Tue, 19 Mar 2024 16:42:29 +0100 Subject: [PATCH 16/18] update johannes comments --- R/XcmsExperiment.R | 2 +- R/do_adjustRtime-functions.R | 40 ++++++++++++++++++------------------ man/LamaParama.Rd | 40 ++++++++++++++++++------------------ 3 files changed, 41 insertions(+), 41 deletions(-) diff --git a/R/XcmsExperiment.R b/R/XcmsExperiment.R index cad8a9c2b..cdf89844e 100644 --- a/R/XcmsExperiment.R +++ b/R/XcmsExperiment.R @@ -1380,7 +1380,7 @@ setMethod( rtMap <- param@rtMap if (length(rtMap) != length(object)) stop("Mismatch between the number of files matched to lamas: ", - length(rtMap), "and files in the object: ", length(object)) + length(rtMap), " and files in the object: ", length(object)) # Make model and adjust retention for each file rt_adj <- bpmapply(rtMap, rt_raw, idx, FUN = function(x, y, i, param) { diff --git a/R/do_adjustRtime-functions.R b/R/do_adjustRtime-functions.R index 2d11ae2ed..89c0d380b 100644 --- a/R/do_adjustRtime-functions.R +++ b/R/do_adjustRtime-functions.R @@ -593,23 +593,23 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' #' @description #' Alignment is achieved using the ['adjustRtime()'] method with a `param` of -#' class `LamaParama`. This method #' corrects retention time by aligning -#' chromatographic data with an external reference dataset. Peaks in the -#' experimental chromatographic data are aligned to predefined landmark -#' features called "lamas" based on their mass-to-charge ratio (m/z) and -#' retention time. -#' -#' This alignment algorithm matches chromatographic peaks from the experimental -#' data to the lamas, fitting a model based on this match to adjust their -#' retention times and minimize discrepancies. This adjustment is performed -#' file by file. Adjustable parameters such as `ppm`, `tolerance`, and -#' `toleranceRt` define acceptable deviations during the matching process. -#' It's crucial to note that only lamas and chromatographic peaks exhibiting a -#' one-to-one mapping are considered when estimating retention time shifts. If -#' a file has no peaks matching with lamas, no adjustment will be performed, -#' and the file will be returned as-is. Users can evaluate this matching, for -#' example, by checking the number of matches and ranges of the matching -#' peaks, by first running `[matchLamasChromPeaks()]`. +#' class `LamaParama`. This method corrects retention time by aligning +#' chromatographic data with an external reference dataset. +#' +#' Chromatographic peaks in the experimental data are first matched to +#' predefined (external) landmark features based on their mass-to-charge ratio +#' and retention time and subsequently the data is aligned by minimizing the +#' differences in retention times between the matched chromatographic peaks and +#' lamas. This adjustment is performed file by file. +#' +#' Adjustable parameters such as `ppm`, `tolerance`, and `toleranceRt` define +#' acceptable deviations during the matching process. It's crucial to note that +#' only lamas and chromatographic peaks exhibiting a one-to-one mapping are +#' considered when estimating retention time shifts. If a file has no peaks +#' matching with lamas, no adjustment will be performed, and the the retention +#' times will be returned as-is. Users can evaluate this matching, for example, +#' by checking the number of matches and ranges of the matching peaks, by first +#' running `[matchLamasChromPeaks()]`. #' #' Different warping methods are available; users can choose to fit a *loess* #' (`method = "loess"`, the default) or a *gam* (`method = "gam"`) between the @@ -622,9 +622,9 @@ adjustRtimeSubset <- function(rtraw, rtadj, subset, #' #' Other functions related to this method: #' -#' - `LamaParama()`: return the respective the parameter object for alignment -#' using `adjustRtime()` function. Is also the input for functions listed -#' below. +#' - `LamaParama()`: return the respective parameter object for alignment +#' using `adjustRtime()` function. It is also the input for the functions +#' listed below. #' #' - `matchLamasChromPeaks()`: quickly matches each file's ChromPeaks #' to Lamas, allowing the user to evaluate the matches for each file. diff --git a/man/LamaParama.Rd b/man/LamaParama.Rd index 34c397ac2..1d5e7904e 100644 --- a/man/LamaParama.Rd +++ b/man/LamaParama.Rd @@ -122,23 +122,23 @@ For `summarizeLamaMatch()`:A `data.frame` with: } \description{ Alignment is achieved using the ['adjustRtime()'] method with a `param` of -class `LamaParama`. This method #' corrects retention time by aligning -chromatographic data with an external reference dataset. Peaks in the -experimental chromatographic data are aligned to predefined landmark -features called "lamas" based on their mass-to-charge ratio (m/z) and -retention time. - -This alignment algorithm matches chromatographic peaks from the experimental -data to the lamas, fitting a model based on this match to adjust their -retention times and minimize discrepancies. This adjustment is performed -file by file. Adjustable parameters such as `ppm`, `tolerance`, and -`toleranceRt` define acceptable deviations during the matching process. -It's crucial to note that only lamas and chromatographic peaks exhibiting a -one-to-one mapping are considered when estimating retention time shifts. If -a file has no peaks matching with lamas, no adjustment will be performed, -and the file will be returned as-is. Users can evaluate this matching, for -example, by checking the number of matches and ranges of the matching -peaks, by first running `[matchLamasChromPeaks()]`. +class `LamaParama`. This method corrects retention time by aligning +chromatographic data with an external reference dataset. + +Chromatographic peaks in the experimental data are first matched to +predefined (external) landmark features based on their mass-to-charge ratio +and retention time and subsequently the data is aligned by minimizing the +differences in retention times between the matched chromatographic peaks and +lamas. This adjustment is performed file by file. + +Adjustable parameters such as `ppm`, `tolerance`, and `toleranceRt` define +acceptable deviations during the matching process. It's crucial to note that +only lamas and chromatographic peaks exhibiting a one-to-one mapping are +considered when estimating retention time shifts. If a file has no peaks +matching with lamas, no adjustment will be performed, and the the retention +times will be returned as-is. Users can evaluate this matching, for example, +by checking the number of matches and ranges of the matching peaks, by first +running `[matchLamasChromPeaks()]`. Different warping methods are available; users can choose to fit a *loess* (`method = "loess"`, the default) or a *gam* (`method = "gam"`) between the @@ -151,9 +151,9 @@ a single file. Other functions related to this method: - - `LamaParama()`: return the respective the parameter object for alignment - using `adjustRtime()` function. Is also the input for functions listed - below. + - `LamaParama()`: return the respective parameter object for alignment + using `adjustRtime()` function. It is also the input for the functions + listed below. - `matchLamasChromPeaks()`: quickly matches each file's ChromPeaks to Lamas, allowing the user to evaluate the matches for each file. From 823acbab2afc2489d8413451da460a3bdac900cc Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Thu, 21 Mar 2024 09:25:20 +0100 Subject: [PATCH 17/18] Update testthat.R --- tests/testthat.R | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/testthat.R b/tests/testthat.R index cf8ea5a2d..a3f2a3018 100644 --- a/tests/testthat.R +++ b/tests/testthat.R @@ -77,8 +77,6 @@ xmseg <- groupChromPeaks(xmse, param = pdp, add = FALSE) expect_true(length(processHistory(xmseg)) == 2L) ## Data for LamaParama checks -library(mgcv) -library(MetaboCoreUtils) ref <- loadXcmsData("xmse") f <- sampleData(ref)$sample_type f[f == "QC"] <- NA From b28278f982cd43e38d93c84eaece69e70ed2aa44 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Thu, 21 Mar 2024 12:57:39 +0100 Subject: [PATCH 18/18] fixes --- DESCRIPTION | 8 ++- NAMESPACE | 2 +- R/XcmsExperiment.R | 2 +- R/do_adjustRtime-functions.R | 52 +++---------------- .../testthat/test_do_adjustRtime-functions.R | 21 -------- vignettes/xcms.Rmd | 14 +++-- 6 files changed, 25 insertions(+), 74 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 642c59c1e..5ba9178ae 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -39,7 +39,11 @@ Authors@R: c( person(given = "Pablo", family = "Vangeenderhuysen", email = "pablo.vangeenderhuysen@ugent.be", role = "ctb", - comment = c(ORCID = "0000-0002-5492-6904")) + comment = c(ORCID = "0000-0002-5492-6904")), + person(given = "Carl", family = "Brunius", + email = "carl.brunius@chalmers.se", + role = "ctb", + comment = c(ORCID = 0000-0003-3957-870X)) ) Depends: R (>= 4.0.0), @@ -56,7 +60,7 @@ Imports: S4Vectors, IRanges, SummarizedExperiment, - MsCoreUtils (>= 1.15.3), + MsCoreUtils (>= 1.15.5), MsFeatures, MsExperiment (>= 1.5.4), Spectra (>= 1.13.7), diff --git a/NAMESPACE b/NAMESPACE index bd9806399..1592c843d 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -33,7 +33,7 @@ importFrom("SummarizedExperiment", "rowData") importFrom("SummarizedExperiment", "rowData<-") importFrom("SummarizedExperiment", "assay") importFrom("MsCoreUtils", "rbindFill", "closest", "i2index", "sumi", "between", - "maxi", "breaks_ppm") + "maxi", "breaks_ppm", "force_sorted") importFrom("RColorBrewer", "brewer.pal") importFrom("graphics", "image", "boxplot", "matplot", "rect", "axis", diff --git a/R/XcmsExperiment.R b/R/XcmsExperiment.R index cdf89844e..1c86f0496 100644 --- a/R/XcmsExperiment.R +++ b/R/XcmsExperiment.R @@ -1385,7 +1385,7 @@ setMethod( # Make model and adjust retention for each file rt_adj <- bpmapply(rtMap, rt_raw, idx, FUN = function(x, y, i, param) { if (nrow(x) >= 10) { # too strict ? Gam always throws error when less than that and loess does not work that well either. - xcms:::.adjust_rt_model(y, method = param@method, + .adjust_rt_model(y, method = param@method, rt_map = x, span = param@span, resid_ratio = param@outlierTolerance, zero_weight = param@zeroWeight, diff --git a/R/do_adjustRtime-functions.R b/R/do_adjustRtime-functions.R index 89c0d380b..c45b0940a 100644 --- a/R/do_adjustRtime-functions.R +++ b/R/do_adjustRtime-functions.R @@ -792,9 +792,9 @@ NULL #' #' @author Johannes Rainer, Philippine Louail #' -#' @noRd -#' #' @importFrom MetaboCoreUtils mclosest +#' +#' @noRd .match_reference_anchors <- function(obs_peaks, ref_anchors, ppm = 20, tolerance = 0, toleranceRt = 5) { idx <- mclosest(obs_peaks, ref_anchors, @@ -819,6 +819,10 @@ NULL #' #' @author Carl Brunius, Philippine Louail #' +#' @importFrom stats predict +#' +#' @importFrom MsCoreUtils force_sorted +#' #' @noRd .adjust_rt_model <- function(rt_raw, method = c("loess", "gam"), @@ -836,7 +840,7 @@ NULL if (is.unsorted(adj, na.rm = TRUE)){ warning("Adjusted retention times are not sorted, linear ", "interpolation will be performed for the unsorted data points") - adj <- .force_sorted(adj) + adj <- force_sorted(adj) } idx <- which(rt_raw < min(rt_map$obs)) lidx <- length(idx) @@ -857,7 +861,7 @@ NULL #' @param rt_map `data.frame` with the observed (column `"obs"`) and reference #' (column `"ref"`) retention time pairs. #' -#' @importFrom stats loess predict resid +#' @importFrom stats loess resid #' #' @author Carl Brunius, Philippine Louail #' @@ -949,46 +953,6 @@ summarizeLamaMatch <- function(param){ res } - -#' @param rtime `numeric` vector with the retention times for one file/sample. -#' -#' @return vector with sorted retention time. -#' -#' @examples -#' x <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, 1.1, 1.04, 1.4, 1.6, NA, NA) -#' sorted_rtime <- .force_sorted(x) -#' is.unsorted(x, na.rm = TRUE) -#' -#' @noRd -.force_sorted <- function(x){ - # Select only the non-NA values - nna_idx <- which(!is.na(x)) - vec_temp <- x[nna_idx] - - while (any(diff(vec_temp) < 0)) { - # had to change because which.max gives 1 if the vector is all FALSE.. - idx <- which.max(diff(vec_temp) < 0) - # Find next biggest value - next_idx <- which(vec_temp > vec_temp[idx])[1L] - - if (is.na(next_idx)){ - l <- idx:length(vec_temp) - vec_temp[l] <- seq(vec_temp[idx], by = 0.000001, - length.out = length(l)) - warning("Found decreasing values at the end of vector, ", - "interpolation not possible. Replacing values. See help for more ", - "details") - break - } - # Interpolation - idx_range <- idx:next_idx - vec_temp[idx_range] <- seq(vec_temp[idx], vec_temp[next_idx], - length.out = length(idx_range)) - } - x[nna_idx] <- vec_temp - x -} - #' @export #' @rdname LamaParama matchedRtimes <- function(param){ diff --git a/tests/testthat/test_do_adjustRtime-functions.R b/tests/testthat/test_do_adjustRtime-functions.R index 7c2cb2110..1f90ec845 100644 --- a/tests/testthat/test_do_adjustRtime-functions.R +++ b/tests/testthat/test_do_adjustRtime-functions.R @@ -353,27 +353,6 @@ test_that(".adjust_rt_model works", { expect_true(mean(abs(rt_adj - rt_ref)) < mean(abs(rt_raw - rt_ref))) }) -test_that("force_sorted interpolates correctly", { - vec <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, 1.1, 1.04, 1.4, 1.6, NA, NA) - # Expected result after interpolation - sorted <- c(NA, NA, NA, 1.2, 1.225, 1.25, 1.275, 1.3, 1.333, 1.367, - 1.4, 1.6, NA, NA) - result <- .force_sorted(vec) - expect_equal(result, sorted, tolerance = 0.001) - - # Test with decreasing values at the end - vec <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, 1.4, 1.04, 1.2, 1.04, NA) - expect_warning(result <- .force_sorted(vec), "Replacing") - sorted <- c(NA, NA, NA, 1.2, 1.225, 1.25, 1.275, 1.3, 1.4, 1.400001, - 1.400002, 1.400003, NA) - expect_equal(result, sorted) - - # Test with sorted values - vec <- c(NA, NA, NA, 1.2, 1.3, 1.42, 1.46, 1.49, 1.498, 1.5, 1.6, 1.66, NA) - result <- .force_sorted(vec) - expect_equal(vec, result) -}) - test_that("matchLamasChromPeaks works", { param <- LamaParama(lamas = ref_mz_rt) expect_equal(param@rtMap, list()) diff --git a/vignettes/xcms.Rmd b/vignettes/xcms.Rmd index 3a5cd1b80..924e1b870 100644 --- a/vignettes/xcms.Rmd +++ b/vignettes/xcms.Rmd @@ -1304,14 +1304,18 @@ ref <- loadXcmsData("xmse") tst <- loadXcmsData("faahko_sub2") ``` -Now, we will try to align these two samples to the previous dataset. The first -step is to extract landmark features (called `lamas`). For this, we will -determine the features that are present in every sample of the `ref` dataset -using the `PercentMissingFilter()` parameter in the `filterFeatures()` function. +Now, we will attempt to align these two samples with the previous dataset. The +first step is to extract landmark features (referred to as `lamas`). To achieve +this, we will identify the features present in every QC sample of the `ref` +dataset. To do so, we will categorize (using `factor()`) our data by +`sample_type` and only retain the QC samples. This variable will be utilized to +filter the features using the `PercentMissingFilter()` parameter within the +`filterFeatures()` function (see section above for more information on this +method) ```{r} f <- sampleData(ref)$sample_type -f[f == "QC"] <- NA +f[f != "QC"] <- NA ref <- filterFeatures(ref, PercentMissingFilter(threshold = 0, f = f)) ref_mz_rt <- featureDefinitions(ref)[, c("mzmed","rtmed")] ref_mz_rt

c#LA|5CB>H}Y{zleR&! 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 YwE+MC03QrjWt-zsKmz~(00045TAl1RkN^Mx literal 109180 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%0DR* zzkS3ly#=YCl8D+dBuI;Y{B-2mq9C1-Pa*^m3_7}p1L{$IV|^6jmg;0&Tot5t>rbw7 zn-I(2M$~V9WFklFtsYO%42(*`@#gzdZFKuZZSAslwG+(o{KW)K-wn}w8Ci**vLRS- zZg5`}YQ+;FJg6usf$TRn+po-z0(fOjU05TMcJuA4k#FRV6cGuEQPfn_#uPuxC#bdYiOXavrxVLY}$$B=>EAZ&9D)5X~dD=>T3u>D;-$Q{9GR zM}YDco5MhC8*Y(?fAD>E@Q4tUn_9ibjJxg0TGQ77pE2(X{ByB~t|cdd5t|_Y46C_& zT8KF3V$X@{D>M^w=i4YLiEnBo0`sE?8GB-kbc$=PXc7ysb@6yQ%9 zAZ}+y2c`KOTt)a?;;-!n96>;>vl+9~Fr#OlXb608mO8gMNHj|6>3{a=m2XK8o(udU z9pbn(PCfZq`c3-w&=+`)Pf}m#IPD(7)Q5uG5tw>7f3Hq9edrmJe?4IXNbjM-hAaIm z;9DX{-sn}k_l=O7+hH3lzt6Z-(^XuA2ike_4`Z)gimr(rUUM4uMfChoFm84kaBGXkE1EPBK}U3C8k~52IFokfLdmas)*ufvb`<5gD}3Gae{wQG6B^q|41-${ z)CLvGnkq}pE+^`Em$wiTO}f5lTiLc`4tpZ&0jT@$-c03=vfxh8<#M-Ohs z4kq9PHcJdHsV?}>egCqB3ubDYTeK|cH03sSWZn}y=viXG+z$_%Av4}rk9wZJF>njo zy*X*{a2(U(Rqj3@wGS#(PRy6m6a^qW>TJps$gCoH*Ef|3hqn9mKHe8m(+Pz;eur6hHf87 z%*1Oef$v`XIH;Ji%ZkaxfOvY$NjQ)@0~~T4HT`Ze*6A?2@HCqZ*afmYSAPthhC=gz z*3=pq^!f0%<{BqlcHd)*EzErkSd5%uYL@%%?(!IxLDayRl}La{?h4yBQ-;7}jq3Y| z^>y5^#ux(ONy$`F2c&4Ib5srVYGk?L3}#}z5hNTno@pn4V#~9(zzyS}@V?DH?aT8i z)?uf#_s@o7QnV6M{q1>MzLart_9wA=qGiwx^*%sFyKgQE!!WQZ#+< zg^HA9<9JimhW%rFTFD61g+fyMgwpmJi>fhC`mGF$q~|#QFUH3v8h|!2o-XpfXv_^- z$;7chu62-ly2}MTh&tV3T}&KR*(mFgf<6cB#Hr@Z58;}{`BhH134IjusLejM-J-*d ze+~%`o>?2f^li(XVSR88pw*~BOKvxgX7|L3L{R>FUfmhd!;Xzx0)XA+3jx0Fr62$) zhws*c*?i|n<3RQlo5r*CGdWoST|hV6!I>$=6oL9L=m!@UhV0E*dmP2*6VLpy3!hya z&<#&yXFS_>hwQAmgwhiM7g}9QwYU!d=87xd@qjdAK=Dv4!Xs}8|E$_PC|-Fa2;5T( z_SGaKyuo4=HnP*FO-{}4`hu`jv|X>UJf$MH)V1(4Y~-Trvz3ITkj#K~uu>WXo?{R` zI8|%7r37=QpXraRG9J@l2nl%CXzb2;FKlCg{oeF_fD>aP;K>y&SiD!|Bo3D^zh-G> zHPTD)zGl;q!)4_jj_tRce~*JA<1~JP$=tH@&1A_-6nsW@$9J{ULu)`A@=KT3^xB;yZp*M{B7RJtK@u;~%1oR$dpFpp11y6jbof1S#J4TV(5s z@I+2{^Iy`I9bEXrNA@<~wAtMF2Qp1e*MRL77H?Wk(XC+tvQEJV&0j= zTv5;f^k3h;uf0y=C@iDe?%{Fxwu3C7pNGg&f2DjeO3Nx?X)Jsx06W-m>4f%oITvD0p)RoF4 zFOe{8UbEM4$Vp3#JChl+n}Z70R1~=vFr==@=@Ih znbspL(=8}o?Hpm++>968DUb$M=woCK-3WW|t%7BIaT(0EQgN84z1A zdxADQ2%bT;fUcGvFNH2}inZ-nIrENK#B7o90cO}ukiql2_tcaWUk#^0#u;o`3sU*g z*+acTi~;UV+-i^UCnM1>TpO`X{T&<(!4?IR=OmlL;z?E^Z9s+D<8M*5Z8RcE0I+S8 zt1zgilN0uhYF_ql?uqW=XkRW?CE@3Z`brXs?2|0Jx9IpSN@IY-gI2x~MFW^aaa`Xn zRDnMnZ8qYETV?dP=*$>AunFc`SbL@6hT!4)5-7(_OCgNcQxntAciMZUODxk1Le1M4 zi!lIy^ud4s=$==Qf=kFedcSh_9?b( z^uzxXdpn`}TZQz85`3x)RHLtx<2Wfmi{&x0|SWa z^5qD{pe7<8Qgd2BBBsQ=iFdKtq=l*21`R-9uP;3Gzi!p)&bNUb(y z1W@wSQ)-)V*njie3)Jw4HEN0=&g3#h-E*9=bSSA>l%_Dc+aHurvt-yrzUXRe9JtU? ze$J_aW(md9D;CC#D*H$I-*Rf3pSs+wtkssQ>1a`a7aQZ+_CFO zrDA-onAhPH5oS+{w*OGW>b{_XZIekd z#zr!&8`fm$=KvQfIxLgP6gQLe$zT|aiFrE=!l--AV9wNI28*Rq98N!$xU#%+3Kc-8 zx0ei5m;4vUv2OcRfuzNMLzv(f6-dyCLKk^}(C>)5gmA)5uIZ##t;mg)2HDdS#7%9O zUA?|gKaG`no&po`Jj|M0?WdpA+(W59mYv<3P?686vs=RB*O?TH?W&wn3Pcb%RZ_s(9U@*W3(t? znfA37MDE=$-G`IcIkrg8`b9+@E;*ne2tEBC^;;;VR+{j;%uDl zM3-m?nh+%qz!P5$FwrKXSDpjqOJ%B+98A&GgG-i6pfc7wCNccN;77Y~JFUPta+{!> z*|M$T1`!XFid>_k3-ZSyF2Xyrg1Y;PgJMH9A{v;)MJJ00aF9cYN*?WI`Jhs>@)UtL zuO%75_mn{`%@pHx9!JkJjp)pyb|B~N2?XN_*D28XyMdx!t+hV(v{a}a00$RszIqC6 z*gl}Qi)8b>MD_C16cEQV?#riaNKhp=#S0&l&92xF2Zw-rxgFW^+h?C`+X^v0QY5*B zC{0wXa$0SATT&wxkj_>u8J&?2pg#At*|cj1ftnG zt(>OXUoB(~`56E*!))}pQ6j6DNJeMKBoINQ9dK^n<~7-5VNB{fidJF?R!_I1Zeugs z*NxhnaW6NGr@huY=|HjkawWWG6G~yS*G88N=U(C|z)wRN;5;Mds$D%u*VBZKWDv^C z5ML}sAdmr|q-5sm$L>M}^Xf4vz=5olJofaj9t07Rw0eJ+dt$`c15LF}RAolbvEsQEOkHG&C&IfmK2_FI0B;N8_Z3|)M9 zPKhXWuC8mXwS!E*7~+E{6F|%4B@rY&T^5v$5!U!fLfs+|TFY*8Rsjri?*qh_p_BDg zyA-Nn5rGvq)9$|QofmDd6QGM#WRuz)P#(>d=J3CXMhS`gZ^RgE zTkqAPkTordMxzlSl)Lzj8b*zFXkKC7k*Pjo(C>J`VltRATq~z zipc<^RDFTC`d`fKB-aOn$y=L3A#K-SKTZ1*FgTotX=TtFt?H>M(!M8HE<|J642z2q zkdjK``~4(qrBkrP@b6t>#BiDp^&s(VJ`gWrF#TvmAokCS;$aU@Mu)cb0+MRG)sVMk zoW@vsGbs)7TlQC=kxq9MrWRh$r_38;Ids$cUmQd~C=(Sjv$3_(TAhOl$@|Fpv3M}l z8=Hi1-~48&IFLNA^rD|yC zMG9ULqV=f35&1?^7h794>Wa~W?q5^w!&!UsY&$Gy27jOoB&cKsw@VZ76j9p{jR{#WZI@dQy+Syt9G5P%ZdEsG9Ac3|aDcwRN>Q(FDmJe~kwL8kAdJ`8>B znoRyz)?wj8yIc1x1hD1#pV%d+-az47Q|GegQ^-9p`oOa5?DTA0Rz!4P+?@l2Txy~& zK8B-^gZBL@hq0w7A;xA*`^Z@~iOLE*;mrvkqM%G@Qo06YpZYbH%O~cOCfYR!AC-#U z35wyW;wfqtfxHvw#Kl7vqt_2}gl(mTfkJYSpMS`FW62=PCWf-IxSn z*rhU$;+gQGWF2OqHG|$z(#gavmEWA@9KB{Jbd`|+5aQn1zu(a_D)zu`D)>w`7&Wi? zBRCAKwAXUmErI`sW)w4uAMCHu=}36RYPsr~oOkI$D=3sFn1E~Ul3QQ-<)l2qhRoAJ z;B>bp&=%!M642SG&KJtJzA$-Nh(n4YyBVIHpSKT~0uG`Cg9?-yu+Q}a2yq+6RXDz8 zCD7ap^Bwfcp{<*m2k`kiAu#PZ)Se z$4&Oike&cdj8{IL)d_6@-tU%Vh2pp7kTTl(9>TMPa6c@VPGr$M4(J(umZyISW0UgL zIrj3cot1x&N*cH_(BG)I4&0bs+|m)Pz@Cr*GXlG4x!i4{MbAE4IykzdkJfI2&#jaz zs|dW_b@CV*oQv#cP9YDseKcS)eFB)VsbbRX%#0}a?c=3AzYO&2U<-2BXKx{@f*-@_ z59Tt+&fy?Y{>Dfdfmm2F161iVR_QZ^D%zITS4nV`iFT&EqpW^j|jh z*g{SMe15waVkoA5!S8D0hi51}yF_o?El#Z*b}8Eas~2!=r}Jz*0P;VCCM1xbVx|`s zXX-^YPI&P1hwzZ?+2E)SODB{~2=XAJtJo3qRODiIvCDi}vIb0~=| zo!{3_^(HsKzVihyCjg*&`F`$jzI+6@zkUm+_8M)PSVHV1B_f1C;vw zw7H|mT<;&^1mt$(^%7BiF8ZFg#&j6rV1M~-5$j+an!-~_W!eO}uzJ@FKIjY?i8*G9Y%Cp}Dk z%v%fgYWhhmiu{k*IJ+AuoDFM^0P91~${53Mc8HDK!)OP}l?s z$4ZK)OHK_$SvLy0d$#q?fd6xzt5Rpf3<-Yix@Vcxf}5-*S*i4e9w@KZm&=9or@@%r zda*9LxhKIGVUZS~_p%>f_Ouwgvj64<9OVn2eA7QBh{?o(UW5vlc>+=zAr+AF65F^O zFS2S~^m1k(-2(+p6R#z5GRpZFoEk*Ph8t#hLxzG93%nUkJcICv ziM1?1z47KG^E>>a?^&j^Y!HyaL^OT*jg?*{ROE%yvce*g)L{~t2aW0YmSZ|J5VRc% zl>HNRQ~rPNA#n?}(B30L)4yP0lb08aJ5D`j*B^M39{#iC2s0)eTW#Mj+o^f1Dp%X() zKSujoP}zT?p?%mN`tuW{qplosLsLO+vOx^psA&JcO>6$~v7pc4OTF@;V-ogG zng`$uD9Tf5onS(642!;trty^lPV&`6S=1E~X6X{$DwTYK_+o^VvT)bENl!V4Q}z5M zM0>}$OjJ&>oo&#<6xXHDduwwDmI@^1Y(&dgl9i6xr}*7F;lg25vJrf4h)XeRjR?%f zb=u^O?7gp(Y2augA(!|Ewo%^~D~3lOQ-BM-d}wt%ZSq2|vHJX{thmU;t| z7j|aZvVVQuKZ|bY(tt9nO2rBL_5xQVA7KupLS#d<4%iwjAqX947?tG=qsH|V7OVRQgBE?)Ibtk>uMS{+OjuGNCQw-; z(+qN=qa~gVLF-kyxWKa{^L`|AsS+yr?5cVS`>kPZ6B}^W!uZ|o3u-DTK_K}3^cH=> zM@XV9qJ?v=nSOTlAMSOl0O(hMpGki6M(IKU_SG8YRJQO~2E;m?)GAA7p}H8) z828kuu|G{T`Su3`cKWH(5NTn=ubm<67a~XVR;kkxO=z?KuHJtnUzX`GVhb5AADgC$ zDznM2O}8Of-W+%lYumq#7jwJrcjhH>g~fJv?X{8((6kWJN1prih7lD<%_J#b7@gDH zRz3NdWW2w%6X`C%wE#esd-q2tBs&u%u&##-M*r+24OXVjmGZA;)pqE0Fw;y>b_uHK z|2rUj1V<5#hFZkifKCsVIL0R{M=Adp&OMihNGjZdC^0@=VE=5lLXr1JxPD$u#opNj zE)2*}G0`0Q_uPN!qgrm_fiWmY-^FR=ds;6AZO9guBV$KaR{^ikdgt}=uqE5%xGFLyJg>rba#*#A z1YJwr#Tk2$MdTt^`FK*hI$+DL`N#@N)!<7Yi``~is_cod+R<4}HE+Jz)W05Fn0wVm z4cPb<^uLHHpq$VaYaz^->B0I(V*cz#33wlkWm#QXI8J@JwY1l+yGl+}jN}5>|2KEw z2JM`qwV+0gLv+gI!k53Y&%e}yHng0tKn3+P_N=ohFHa$i|Mh=7kfLrbj{s-Wos@>l zzIb=}R(<~oS6AX}WFU}mmA-?9qce*xwe@Jr zTY+Cvz5`n0Z}-Z_I6Jmzce3|5d&k~iJ5nPi9}D3|Q`QlaDC}QlUQjNLIzUO?Dic= z`eU^Vt$5&~Y8WiG8t17|qTn2VmdE?*f#fpLXNRntqD*8xNczrwPF=j>dTn5Nd+K$e zLV~z5I&szk!&=uK*~e`fN}JEjzG|r??%|}aDuyCg{p;LoarOPIVqa_nd{ykY8sgV;G+B!~X4OJ|mKH_zAfr0rHy!FPI%Nc*b z`KV}pGBUM_-K6n^RWYj#eg~)!l%pRLo4 zXoX9olfO*V)d?WRx+-HVHyowvp{Rm(qM=G9rx0Er3cOutlYK@&+V`|!N2&{_W8eY# zkKNX^I)?wkKVjoeBuhgQDDu!GFY*KC^w48xF%}N$&Vjh#?(Ko5P&W(?+O5>7~!Qy*@C0;3|StB;|~0dQW%m|o5S!tL)pk_X?;>y#6aM67e+E7O~2_=da=jmIhU^?J#ufss6OY8N4+Z} zW%H!*P>a$dbQ}4@K$@j8lK*4da!wonc!04z>qTbIZ-Si&JAE2s0~Lu0R=1KjM2vdt zzEUH&r%R~G20I9!kIxi?-Pu<-XthR2_yFf*usU-5{$+wU8kok|>>GiP(`vp4a|^=y z((@Me+ApIMa0V=b3g;#k03dhN*PeDUvKRt$J50Twp69)=P}sH+*8$GJ3Efup3SO=Z zPtauK?1ln>aR<{W7}j{@NVo*L7Xar=%4>$4)5Yi^=i;_pD^ZU0@rtWBT`HbaF@kTGUKpm2&2neGUyS<36%jZ{2xWg^Xd`FqmEIm$POu z0^BDKF{i%TvV}@SWCwEPXa-0SJ!TYa>{GG)f#Y7`m+bn$dFI)SZ#ipG+G2=0#C*A# z4i&M99L?%fM2{==#MlVImVqr;ikkC~vkuM}yqHvLQ^H}jwMmT<12*8n7_VG8TEA2` zeVt7&^&}?+WrB{OX6F1wfk3-eG7xM9Q2@*o1t6=yD69a_<<~>GS(eUYkmr!6uJk1avomloeLm7mXQP0 z>hu4Mpk6Ef7Abb3pcM>Es_6kJEcsG;|UgTjpHY$N3C_d&Op8MPaGTxZZ+jB@bS zi4u~LVIuf_tAnrUvd$N^B+nR`!jnz+sjhH4o%3sx8zYIbW zwd0}MK07+Hl`#HEuVqWj(hPb530kL`@NKRWtXsT>5d2nU-??ZKB6s%5Z=P8QSl=A}v@J@`=O1t7pl__= z@jHA=E!zP8+PNaJ-hX9WBtOQ%8$4}bG&U{{-}C*c8))P`3TNX(*fJ% z#MKK629Q|&aGyHvkw>a-fDgOf=Dwztk@*FQFfUTFTBUr{use}~eJuh^vm?TCF}c1= zp=VG*60X3nl=0Uluucn$en#?49_NnM=7KGnToHg??w4ZJNYlN0Bg)F5 zSJxpQRy?_hn6m0iHyr$(@u~n>mamkYU4keMq={=9w~k@=4L07@V>nVEw`Ox~-7pC) z+5OWl7(i*8wa{dnc`GMffyvQ5i5_a3BPYg6V^ZA@NNKQ+xLHpWaO|1`aorMn!^ba* zUCV?O{mFK^dUnC)VSN_Lub!O-kVf`;KC19Bvdu$$<$#?@D-SWlZ|crUw5fOB08)U( zJRLy2^ngz>D9rORp5A8r-ktz0K+?YsYHEOQcrYfpUT|q z0^p(w@6Tz5-6N7@({E&FEWVkE>D4s18qD%9Rtl)?jFKz?=Xq^2OsTI?#jX?9gn;wr zj5ceDsP~w~r#Wts?q>f@A@7z*9udB55=fwehK-_)a$&vAuzc}Omqw^Gyg8-$7xSZh z^p+=Z8Z!lDzEU__j;!mY8P3H{GeMUZClW_(Gv2(x8r^TtVUFkBJ|=o*iPa4TY=Mm- zV~_(G4rOL*o7pnu3sz?0a4dFIOt4cr2kEuM-v26fu)k9uT>7L+SVr)P%-Oey*dI~S zis~v+NA2P7%o@0|R?(RuQmZX9lcKj2xkY#*bLYDlUbcERTjGm)Gj~9}dtU(ckzbP0 zZJweWgz(7pakukHiFhFW{537{7LEy&xjSVON$a1i{gNsy7O8==pb<&^v{uA<*CNH6C&%C-Za~E=?N;YG6-(m7S@Y1d|m4% z=F=Z~-O(e|am4D)T`Z3?+yu_EcmUy9t(!+!?`1{X}PLxpK^sfHeu1 zKxviPgDQ1tZiJBUr1TQr9{kP)5V0gY+LFDPi%Qsum=zsrG~^0YE(8?{q2ZQ6CpNf8 zJ)wwhUqRe1k#f%!!Oum;EqwVsw*Kwj9igzTe}~!#zJ8)^3ZI4nh|fII4k;*3&IkX& zWJOpERphEl4|~dK+nIOS_+DnhmquT@-my|B>~2`mEF>EJG!N48O?Oki^HE_#v7h0T z72b2$$*WNqzAlt@YV!}x3`WK;Q2hTn@0+jTn*@~hla6}SXAnK0o|rbneWj5Ev6?M# zmk8bZr5bgOGB|~Gx-=ov`ZVShvx$5*ys$JIJ z3LRvrZ};j=c0YM;4LwlK++qjB#uc7A#T}hwxiiD}Y3+uvEvq!;OV+$?9Q;csy?jc= zSxz<70x8z&!aCvQ%fZ9fBhMHru{#B!+hm9v&U*F4%6y~uGALrk=UZ-2LfqO6`6fKx-smTMPG98-7zVEFMg*A26#D{D)p_d|oJ6hWxN6*( z;tTBvooZXPzQMuF0wz%mksyd0Zm&HCiA~udddc&b;09Df@hpG zOKUBA&E|aU&-xJbkEd@>ZuR$N?9X-8gxC2oaYqcvT3*XYC!;U+_J1=TiRzcpyFIr{ zcJ)nxTCAZqb*N?6xB%Fe++CEave2unpeo&AFH%zviSyk2q{hdRYI5!w^Ovo-(=IJAwhA^M`F=^&281!AYtKeN#jwH)*+I z%<5*4We~AamW6kbING>|a1XKkOWBgH!@&eKIB<_4|G?KktJ8)A;YI9l&Plx=b`u#A zAj3>BB_((*;~CnK=;PoiK||XKzL#?_nQQ3V#Mo2p{2{Poljo6UjT1Am-hS`U&0u8~ zrw}X{yv4+txjK}Hud`>io=^i5NvWBSF$p_G7<7zLACY9c1TARM47CYu$51m-H#ty5FKQrI-o08(3R%iJ^6 zU~?5+zxMnzss^_dlyBhb3nfY-$RxlFJRi4gZkF z%gfxGn~+C<+4X(5=(*)l3)067+D-eF0w`S0CHI-+k`ir&iMxcMpuyAi9O;Arne0X+ zWoNeMVH)S}Di4+2_1b6r8uP=(=Tss=*UeUJUIOw?Gg3TxGq(Pm9b82U_LIP>85i9Dp{f$i zR%Gl^r||j9%`-(_smE^I_t>bEP%6vI%B=zP$j${B!dhwv^wEwrA-FAm&gKG{eY=SG zj=WsQGKkb1>=`Lqi=3tA#@@lf*_}eOzdJop&)pNZHACSbak|42zdq6I`f7EG7D?#- zi;!U+jp3R1Vej6s>Kqvyks|Dh+T>n$aG9}dj+O~!gz?{dohlTzxE7jK)O~F(2S-cG z#2>VANi4gcwQJfucYikys)($tJdk!?{UKw1Khy)ifyPY`Mn|d2%SD->+*BgA6~}Zq zGDHBDLBLp(0%~gj0we_|A>+wm3sxlYz6#VBSaSiIkzuB6Le6D~0QGC3TBS49Ca--$ z0tQs?uo8I90<+P~YDIyN`!P5i=1n>Po-G?mj3E4dp{_ZpTHx0Is@2m4Wd)O&*ld!Oma zZKuno6~bvdzm|!;4nS`z>xekeMX~fdw5rB32*u#$~q*-<)^ ztXWe0cTC~At&B)X=v^^B;1v~$ASC-~{nSOZ??YNB-VcGcNHc4iwX1THf12K!nj4FR zVSJ4UH*Gj`yZ1lJQA-NmANh#=nWtJoPKxi41%^ar05|P~QHs%9D&M3_sxUT8N0UL? z;7n0}&`dIk2P8|ZH)cJqm`Dw!Y(Yfz1v;71|4MBX`1TA36_V#rv-25lAY4VE*|8KK zbWL!jbf8BIAGGB{sg&|hw;#A%8DZ*n_w?;HEiP&r-c3;-V)1i*@4fPsr69xq>YG;AG7gnrD_QME z;o+Q+mSzN)tM>4!;UFLKwXEyy48$2CN4NLD0 zs&CcV`-54+3Cn#GN<7kYVu514QTicSKYo0;3X~MxatS__$-3}Hg7#k%EH=i-O;;>y zDYF>J?VL*0%MYYZFW>BDW)Sdc;Y=(26J?k*=Msx_(1l^f;}(9+)}nA9?f{w%Mb+9b z0LTAGZ|lmPVC(u_!_&^|aB(#MW>0|0+ErV=?cm~$9h3)~^ew4w39b2@pR=imP}E#m z7wlPix|tX`ZZ39A^eOq?@yk!>@x-_+@v}uhIiE#9#RYeg6rpA>{-O zFlrg|eqLrNLNOVEC-J%C*1Q+{#zn777Z4biH<$ZHwD6o!m(>V|v?KYaRH?Imq%eyL zYq7(RA)0%w2RblMP6USldsW=wkU!ep_Jp-md)(oC?#h6LD1aCGAZ4B_lNaR({Y7|Q zR}>3`Prsxwf9LoFS7SC6>F|pZ7`$>xLvF^tqLsk#eE_X2p zai6h{m>(F1-a(M(xAXs{Jr(S~ZlXrIGZ8|XS^DN>rH*bmx#E(~H<$LU1ROF>~E5fV15)o#`=>R1$QXVVCg39w~T(yrEI0G7e9K!$PAG#=bsljK)iO8CPci`|vA~hD4`C{oKtVt*D%->s=3d&+wLX(E zV^7=p3m(qp3y7Osnmh6qQ#XU)9~4UDnAxg^oK_E^9pG=z9MMb`U9PpYCheAI5}=66 zJ=42wRAl=uij1dev{deC_JNW^6*k!5Rbz$@D)^=b(7r-`9TB%Vzw)AmorNJvckEqI z^0H1YF%}KpI5Oi3w@SR{8d({IMjN1oyeK!gS0vlsB)l19)>Be9`V$y#;w#V9Z+76m zGu?sjsSj7zXB&t9ddP4vdCesgW`ia@pROp5dwz4R@(8Bt{Z{0WqSW_{K3DnM!k-bD zP>St=SA!mUns2>J%6edR$-N|wJkYPw;yORfP;LAWZcPW=nDgpHXfYuoLDg2(9Sz=I zLZk7CH?Jqc3&z183f(VyFA8T5krfw&g2#To@e#aHKmeh%w-tkn<5*RI{F3l}n#WF@ zp^9S@pJMV{3E8wT?Mr=ZF-$*$Q|(16VXC1WS;*%@{9_1Q80i}Mda?2{Mh$#VmKcaK z16|vP|I5{C7miXdQ89aT;jYx$Rj>C9k`+JTZIUB)TX5sqmX;zVQ*h3RNpVauPcaCK zyk3y6ki+6iJb~*x@KMl+CnpIw@o=^>fY4YE_lOh5;G?cJZaCWo_!ek=)goq_9vhpU zQ)dEqg|F{?j`+dY?0Ss7x%3bbNB$Z=3z)zpmqx@(`X{TSA9PZYaQ}#V_=q7{FB>@C zOI1GQvv&~#QKvAT(vNhn7by|O#|x%h0kMmS03NsF=OV6x@@X{TP8KDY4PV|9_z0gIx&xcpi1B~#b@(k;JQ zw}?;$gvBV0#!V;ZDjfwk$S~Ky`fK96=7R@kAGFIz@chRR%J?MM*3?4uEANz6C@b_q ztnR~sfGv@f|0qem4-gK>KCp{A%Q+Mj*jfJA-{4f~m{?B|(#U#Ivv6CjMt7^e2Wa^W zgg7!nT8QpyJ6|SiOtq~Pn1^jd348)0;4Q~Cf6|Nv&z#Vtk85tVtF!%FxwD~8%a98R zJb$)_@*lt`gjt7xBOt-Jyt4oxwSxutzS35urW*yqLQ;1-DT~t2oz&V5y-ng!HhBdi zmfRlT>(LfrugkzG2$#rC4G3!9g4`Q&K`erC$11hs6I@+6^wD0#@+;j!dX&N502!E)BCrlKQJ<9=Fff6Pyzz%Qw~9HjBTA3FX>&K>H=te6&*zorbSe1!n{!8 z6oJ1T@`>6vsoPQ!IB!{f2B{sXU-&&^-EW5oD_yXjbnqrSjTSMjX2b2)vcYE6P_nWk zsQ1^(wSiT(d=?9_?d6gGR+To(R$`}o!x)D5mXt7I(}oFN(3&Uj>YQ5dUzP`m?O>2s zcr}BBDdn87+F3R<)YO`a7^ANe?n^rjDL2-aM3v~zsTx6>(-=YiDN-;!hYM4rg~L4e z-r;furS_#&1O(CyX|sm_(BGk_2{6K085sDX0XT#>b+?CqEKBt}n08=SCD4&Vva#7~ zE|_2yB`g+gS;T+n0)^lns-xaYDp-x&;;g^^>^nk-tcWwp{4!Y?S4%UaAFHY~7o z)BbpG${i!DFm1e=&9LfUVVKs&@tcF8}8h{=@yI?vs%s*hC$nB-)#0a4I1-V zvKa}+3VNDjE`TH}{C5LpsPR*J?cwpq z%Z+!**I2Y@(R+>&>-eOvES9F1Q1OUrHC2gadk`j@V6DBDe{Y!~8AUkIXt)Tktw#v| z7teWUv5BYY{2#p%vmwB%tzrI#eiZZd3Uv&C;vLHNuGq08{kxiz8``*0`4f2S-Nt-L z(Q8-*aaaDut0A&@g|sCPbRT}TG0J}Ch;EU`bzVfYAQpCCdlnzqQBlOoXQiK(!(YOer6 zP!#w#cd@%C<5Rj1<#$upZ6kP`i{?-X<)!b14z2GzDe&9}prlUD zXbdun99we@#5cSpU2a2Liw$V?bgA-9Q#M;`XyvyE!lAS32ny}^X-{=clp;37jficb z8J}lZUU7|*l+B*myOj#t{F!{R0AXB^JXnA+c%(TY!bhZxZ-Qjyv1tqaVI0{G_;62u zV=$kZ8{9-6&-uXrWy8g*j@lxaWFY@|<>(uS-VbHzCu-0cP&UBYP-Q-cP6JhH_J+1u zS!`7}0eK(5*QRf_4535Gy#|PU$k=XlKVFnvOWvC~Y>=}&@qr7uQwFh=DD9hn5T~J0 z_u?Pjc~$}|N7<0jDG*W5?az^28%B8KR~Z^c?Y1gp?Happ5i(!D^;}+I@Qad+05&e9 zGSc!!c+PQsH^oXr1@CODL4t~-={I_d@&>fM`T8aC$VyR&-XPW5#xf|oM-+_CEPEUY=!1A>NPNs*0-=?TqVjXlxbfeGy(TPrZQ zoBk2Q=jwvu0)hw{`+X00&P|X8dMD*5$boy zb_(+2ZT@mx(k&ks1?mlP&9qUkwX8X({9QfSw^xWwFiWSbV{+v*iaAwsns;&#F|Y8I zjum2tz0w}z9rTe`eHtGR1Ez%O09ov=(AufA@a0zBBPfl2 zH62(v$LZ7Tbf$pn0cZTb4DGLr=V7jNHfGX;3{?-2fo69h!&mExoWs)jN?yPOKVi+lXtPf6J+nnaTS#^edn6f7)$u z#43HBnt3Jz5u}GV=!kxuJiHG+nK`IS=s9#!IWbt_rwz^WY*gh}Y>^ESg`Q zT9@dDE_(14E}6oT$PYK+xr}6z0nP%|7QA1*>nNO+RUI(I zN09i|Ic9YNkQ2K^_fv;S`Z(l&T4K|Vc@-&Ss{pQRDoHmhrG0u>i`!Ge81npF5^a88mE$0Jo)sylDsCYpb=1NOZYE2uT7Jb@vwzG;zoxbIZ)n?e zUX+=k^aY0c7V^DP(n4b50cWWZa?NrbxZLtTMrVwy?U-z4rb?+s_MDAiO&E9+Uu`|V zF$RF?F~68*daF047!t_K;o0zAvb((qo{ebL()`bN1mFOg_-2k#bNnfbfTA0Hi^gt< zq`hTK!$%d3J0o1fAl9tm{nL6O&WaoKmQDtW4^m8h5G`-D7UZR`ch zv0x#C6geD7&^Zn;51S~|z)uUa@DQ;3gvij`rf)1w52awUN1eDixByMS8b{Jns0VJq z*=$;{W#=I~hBa=^KFzcJGFY@e67^^Y4;Bz}-xg2K9JX75S@IGN(KC%gOvUj#0Z%=^@trvjqNGm6I5 z%_JTfdF#?$^>0Jc0>C)+jYstYVcU$YpiOMCEKo=s&D3F!T^{J2Z%spNq&*Ihn+p zZ|6J8hQUU5RN;Tj)V-`e*;L&qLCL~Z_k33|SkgGT{aYMnGcBuVy6qdmS%P6-Gr#9lG)Mth3Y$UuH$VTN;~YL@E`UH~ z`_!uhm{yO46ewC!=Y$3a7-NTJf4t!R-QC$Ay78A{8M9wh)^IN#61ps;k$tcu0v1@5 z&ZEa;&8#x|HG`qL2@p7&1R|EI4J&hB^WJs5UFKQcq)bCdk_(C&L^yvUqL-R^!&B{m}er9nwig7;jCW`y{0MXC~`ZI-TlI3 z4YftAyWJNtfyh5z`~WLYag~d0_fL6{SY=k>6mKE!BBFvpI;&?Lt`H>w^_(|6EJW9! zJ4HX|TjtS=zZw!&m2MzP%hOoB^D3&MESbl6DWAeHv<|f7 zkSflZU6|(}^o3!;xC!ZUq&`dF?h*g3t1^9YbN*#ByCYZ4we#YK#!2=j&T=2o0(wx1 z#Q-6_zAYVdGdCX_9tnVi7biy_v3)}!{7wE(KJA8XSsc3&+aI%l9Nl!5x{Jlfai(9g zko4vMCJp`#HbUoHlg)8X?CH=BWhL(yXS`Q{WaO18>?jW9TnYH4DFM`0EReFa!6psB zV_+{hJ$qAW_}i0-kXzG^fBt4DvLZx3oiR8J9cwedPF1u!Q)Ksz(gbi>@JTL4L{l{Z zJUW%VPmpQLIRQnLWor7Z*5Bs{9A-eWgKjc)I>H=pIS`Y8@5`6HTeI|Hnq$HH)Al=w z+%Aky^Nt5+Ym-F|qG{sOJPXaZ{Ea}5SqU`&<`3^BwVBaHRhR?$yf;n8!zj>4KC97Z&!?;yc}t+?2|J6sUbSogm#^1h@=E2ab1Jg;A^0e! zEd;G#X^=3($RTf_!C;Q>t~Odo9;w*O#!L>VxKK|0RNaJJd<#@$Lf{mTf;qd3SR{78 z+Drm`EyOZ@y4HZ&j3^`YD}nxkD1%F%xY7xwP%>9Gtt})r6?!eIM4=JH|Ff>3%xJf|sWN>RUA0z<5ScX?|_cpJaEja)tO8B%LNXPM;t<+}-^e}ZksWrP9_WWxh z7`RQ2Z-MNE0Fi<$YF67rnZzPQ4MO9ZxmY>XScAGM%A$S6xk@T)vxc2`LbgXrC%n_h?IP%m`%#L&tUc7Y<&5fWDOu#|^4%*P0=Z#9{riB4^gFm=oi z9B~1Fh?@!VBaMp(vIV*)ZXM`}lky9tXMw}cktj<75(pO7A1g4mdFAC^|HCz+4|X{= z!o_nHzoCwa5}UqPF%Wct4<)qs7|J5~s8l#mN*jlrg*HZUWhZH+*TM$?Av8S_ol76} z8RS%9Y}5L>{`_sMc`tNMxj7O`%c3i=OZB7Ms(o>(!-N2Uh%AQXJPxE%y10O>D;zp| zV0BWIF8cnDk-~vpIXQX!KD8VX0ZD?B0F1b=OX!52S;bt6Ux0{~7e}#Mpz{l74RmAIB}r}9)_QCF z6H$bnr{j9Z$w3{O031OAfl?^yT=HVI|CJNK0>AfL->Y-p-R6-3+2Lt#0u)FwU=^j zMkqQV-||7!Xh(mf#*>x3H|byE6~=$EoT{s&k+cbFJ&z)~-SuW<4+c;Ol-}?8o7(L_ zkX3}y%_Owqd4VL~u<4;VcoBH4Fs1rX^yXZUoLz1=4=I`f6)b)GJ^YbE_NI{}-cjuh zaN5(%`;+jm6O^>nv-XKe}t`MoJp9RlX zQ(1rPaoh+}RJY5xO^i%>2yIjNku=@&9}D`Vd*@XyoZ9N5?pKp~2J&oHa{9_`HlJSY%~$O*+0(l_M*SqeD+Zry6~}V;+`og6 zDSHp@#k;`pIIbTM*sFir{6taQ-}U+N5EO(or0&S2e0#sxNW2f$0f$>o zSiT(AEWUAj#H#ec{xdQZ?(8@7ejygVw4MO${vrc{U+QGqR7?(F-ZUl!E`So(3~=0R zzIu*;Y;&%Z2q{xp6R(D0_c%yCZVV@|iK4+l2?Y_u^s&YZYY5m>s}I$i+eV}A^q{SJ z2)oZ-7>s1|G(Q?0YYt#F>{R`Jq_EopklZlDEta?(h&U+H3|4G*t!cowVk#an2a%lM zXdAel9V}g*Ai}$Ul0yxhSdt|Yidr6583(ZcDMP$yiZh<({bloC=7VWvcG2odvLk2C zLW9Lt8{0TB^0mi#J=c&@!0;DA^1T_78yZ$;fDk(e9!daUpj9*@`=*rMWhkUB0BT0V zM?>o)2=TI1P%Q?umQyg>>}3)2L);D3-c?itlu0R=ipYGG6?~IoaqE_8^!H%S=P(_@ zxotQ+;^`RsQkQLF8iYyE|EQfquuqjSCE_eIwj6p$vsz41@UO>}uAnqmMV#{pr^g6cDN`hpEdXbiS}8du8{a(AVwE(T z)&_+(qMf9m-l{v_>7pS@;?B!0V3^;NuDFKcs7-+n>WxOjz{RP%Q2!;8%{V<8&3#rz z5y0HPjs5JLco`TbrAXdys&#i3qefUhvlFMI21FE4-20NBn7cBgHAtKyOBY53bImfc z*4(+<%hm`=!BVyzLrxv&^RKrf`jta?uA=f^68_XsRK;A;$V3@|b~7gE%KH+fYDe;i zs)R`y-MPfjd;5OyBi&7iw!JbTZj88`D~VO>&35xo^9w827G8*}1gAjrMRJG}KfSes zH4dyn4hgx3OtE53vmRmJ6vk7SqPg+w=Aqudf4JKLzKMVJxXw5!NlT-{11Px-Ff38f z3V0mtn^F+!-N?et=;ZTM6QMDsXBi`5uin$>NRH4dKlmM?TdVSC;6QLt%!>%^{8uNX zdZ5Bo+nu+TW=!gpyUxqu{Zv_UdvU6}J0f8zL%xuu5uvCVuOF0ra;$iiIWdgDc70{g zEaZvQY!AH=ToUihBO|kJ_Y2X+Yw@~x(tu6c4wcGn!ilw2xy8d%poylSs7MA#5VmeW zj#PEABWCygM#Dl@E;|0=3bvX@f?TiMaHH!#1;z#NvSlXeRTY0a)S2$f&}i`|K2Cr)@sSmoJs$(yAnrIg~0w3uqt- zh>T``pT^YvTNnImOaCO#@{XOxT8~t~ITg=x!Q|0DUe3EC7Vg44k}kM`+QO5N_guMR zznDQ438|?m@Gz5Sof{ru12hkhPxk$ss{CI)e$AZYsRliMlZa~}<>rf17Rh^ebHp0T zo7NrppT)@ylU&)_=Egb{JnE|*+uvEX375kY(o8`hGD^R}G7maCcmm06>W@#R6~chb z5wf!zlAoVP5a6Nw@<;Ke-*&-_{yl(t9fW|stu7&rC%5{;7&i4~vgJ6m2e_kF1{B6k z3#XqFPP6B;w~6sSlc+W;;=-&eY$QJ<@{~*+=Zjc@M|(Kz<(NQf$ZT*{0t*zpxXU@B z1fSmxjYo?w2df~_r+rIsIyfLmfDpDmGbkXk8MI$KpV3}8wulGJ+Sn&5YNg%ZT=-#% z_@)1QQb@wd-1|Ro1!b^4U)aj`u*3e94AF~gWz`)Netl8WSgyzoX_jSHP`#7Gn3KO# z5c540p**;>D(oVGEAm!v!}z^b)~TQ+)SVvX$&?jKvGM(Vx???S#+b#{5)?kLVILOs?gCPBQ}Je0vrz7o`%TC z5i||u(KgY0Wr`HKk$@foA zslK=OZJIG#UPFyC3y!pNon@v}bpwfdIG&}c!y-}fLVt?bHuGZO^hU(OHRzLMTY|OB zH!O6pKj(H29g(>BYLt$@!N^&=N~qZ@9<9rrOHPZ-%mZ-~RBNL-;9F}AoO;R!atRIn zKvi?iPZ18!2izG{bYSgeQkaWAFmI)Fgtkb;4a%dz7bA~yIc$%%5_6v$=6%p@0wwN9B=)#XlR>{)jGq8tBjKUlj zQ464-Mex`*js6FIE8V!*=7;j)e_JqUREd6(iedxb+sfra3!x4Dl9rc{E;MY=!{{J6 zQ;1tdhyny=CH}Nd#I3b|@?}MqUEau3>ohm6&z4mfW-g>1%nUg4dEV}`yNWZUYHY91=^ObP`Z^YbqVGmNID1Qb5;tF`#R zx+kRGEiD84yf|}sbLJO+9;DmJB@sA_ndQ>mVY6IFX`yQKx7{yhtyBOS;#mX`$p&nt zlynZ78w`_8c^qWDTc6K?a0z-xo8c(b@}H@w+;D9tfNdb!V~wrR8_$V7S~*79O=bp0 zihGxne7iq}Y$gd*Z729!UU{?I_Z5(%7Sn&-==53da)?>~^9nu`XeYn|U7Y;@nK6)z zygSX()tdJ4lC_R;lhV$5tUTNz7JEkPBVb|utG9-J5WaS#A9^Uojqdq<$Ue>iWl{7m z&1|WPZmuF=q~q*Vto7^7Wvo~l1!M8h=3m%YS5fv|EE9a|!34EDwYlokyKXzt&II^D zU21TN+Nv!5+=h_eQ+x~R=;Y}U2fFacI9GQ$>K)Cy22n9Uxd~e@uPHtH4YB?ecWVS3 zpfde4rpNAYp7sS5@}$zWt&C+@AuTc+zZq>L!Q=!l`>OO`wblOjg%-w$6fDUN5uDqD zt?@EfNWoX^&iNm#(<1yBh)Gbe1pVh)2ebQs2_7@maE26$5M(rhyV6CVXrX_>RC62w zE8s*D8N$+7T_>M&)1qtu7t;K}cW~r1-`aDAZerPwt(&3Zu<|96o*TFPJfMZh11uo& z6!$VuP&TA%eEC)LT=sPLY-=isM=6x|0z2-Zw!_@mp?#s}?M%<3TMT&XpM|NU$UTKx zpF3;b`e`}P`2<`C>Hp4y+r7N8klZ(ei=NKCB?wwVA)gP8m(f^nSE1a!X28Dq<3%H_ zbem+Fm?&ovKb2xOIIf`FiE?+-W2J08=_LbFBc#7!4~!1pj@44u*})#~)1hm`2f^I< z$P$SGm`Nz7e7wV8WSXXShSF4BNnS^CnOFXt?G!!skh2)KILX~6{^?o4$kDS)N&5Y- zQHMCanpfJx=n1p^ucqzSMM!6Dn(k}`XZ(b$G%X82XsE0}D6m&LW;iSmIrJQxiWL<& z^96eJPlIzJQ%G9!KfX6v2r7LC#ad|*z#x`%=|s^w6}K@0+#k%6z9 z({6~e)mrVi7|qMwMy4mmYhMwq4tyv&mam?bnQ_=C8<|wb*aXz3bW)WSbTDxjb#=>R z{u#U@nie~A!1myCldv}pu(_N2@zJ{l!F|D>S&JDPv@BWfM<{Ipa{6 zM)+AU98)GtU3po|MhzsZm7>pCT?}UBojLFt0)02rFci~dv!C~ctH(f9xb$47JC(@< zzv_R{`AWxpM|Ze8xuF1x9ifW**p>knu8)d3dMp{Z*(jv{6@DQqgg;hYPxAr9I%?ncoc-5E1rMnj~5F5zQD(M{T zK2he7BR8`A=tQ`-mgIaWL4YeI$ZH{6j2}~L$!(wCVXtEp!(#CsyBuJ2tO@n7gf|xs z&Os6!8)V=iw(T70cpnTN5JfE>@Je(#?GG^sZqe?$PaSj>sHEqkGJQTrXQSN%Ufd@p zlFiYi`-0d4W0x%Mo|zKC^+QPWczKIN1XT6{VRolKqdcjyv$h(4lce(rzo zy{~x>qHTr{E_R*ItSalV2R}g;a#N~vaVe0*6bN(SDONLq0Ce+?4(iI`TPzZ#-r9cQ zEkx?FQ8@0~h5m-wn=ipjPnxOmMLX?wSFB8j+0A|4Ufy~ zHb5fa=cV~vLUW)KJ65x?vO`VVf0xac4ifQW__*kXRG{8FnDgBsBRCz>q)eczjP$qi z%j;9~D5sg#Bp$i)dU)q1LoQ5f3}gYn?qbC@D)onii4!~^2sXz=9>5PJ+oVyO^Z9ZI z0M7Ps2uHXYr1MSb;d&u`t6rJmzOH6kpF9Hs*f|BMqa1z5zBf=w$xJt@ONSC;)3-N> zXogi90dh68p1*~zTo}Ysv-4VH@^dR+4-SZIKVdP?NUsX1qOAND2UGQZ^vl171>px= zv}L#uO{t}8O{-@BRRb&VF7jA&*dizLL=`y331n2k)fJbP9R}MVcE8;f?E()=_MTs5 zXUC+Siso{4r;R-}p=!d@kO#Uis4P#cvuC&{!%Mq+DI zGaU#At!KmMZAR%CTLRcfGL_{>f)`;=e8Rjk6Qf@P#ru){IV`)rS%!8SkpDuF?aH*; z`iRA!;`OU-UcmF|_n>31E9Xo0OzIR8AcN}KSj_oBQGrMV&{uWPoWj_BM9Lq8>WL*)Uq;w5Yc&&3*#nswY6E&+ImspJ!;hZEL?j1#@frnm-ytO-uw z0RU}OCHW_QBh2uUT8Yv-e|bq&MYc#|ueZ+NHJUvcuHP-tRE<;Ow;KkqDvk(Xk@ZMS zvHu1&k!V;YnWWM4FMbDDarFtof`iTi{^JinY!OZ!Ts!2a9R*m+#lLF#SpLDoVFcWJ zYXu)+FY6w&p<=x5qEpL0xyWQa&E~%-J+XE4k;atGD5fqIqYqS`EtsNH(0__n%cHY`tFh)Gaa-6x#dB05Ph218-J zz0Kimn~Am~lYh&i{uioOdU(ros4@x0Wi0H%6!)#fVndt=e(B3G@$ z-~-#=4seF-Jmru;@3iA?V2(}}pv!m4v%ajMowd7HOD2@I&)FYmZ3|OUk6&0#z+?3B z?A|1RNkT*ouM6EMhm-@c9c4u zxK6m~vfsP0QPGp}4=17Z$s_wfOYN4+2Wl^9-xFEKt_{ZvAlh)BLPVe7eg|J@mUv=$ z5{O{ynG0xYLDIS(sN(Lby@IB6e8w;h^u`V{gGvOd^&|?tGqC$@N(->69j`l}qpI@K zd#S%(wx9#=V~=ffcZZ|yFEyR$40c$BBV?o_4$Xo~v|3rM?hsDe8W`+LxsI{=AIO)o zZXjN(Tt5VG)CW&oYcd4uaZL%`AW>;RW)$k5amta}_m zEUsA>ooRI`HQux|jZBG=`z7yszJ3M}qRXBBa5@4m(sWy?;3+s=4xuh_gqylw4q%z5 z`&!L~s}vZ4BV)P0sk;FFe8JWzdj+Y#-Jg8YQGV2LWjK>?BK$ug>*kX?Ii_*r+1^&4 z-@qu2p$tSPbv0DZq#{)ENk@?tbigLP$wLc-AHB{)cxjorW%8I+RJkXC_Wrdn+f7&R zqi1{fMPCCrZ$t7MsE|d;mvYZ7iJw2+W_6O4+9{?N+~)}@`jIL34<2CR`V+U7gV@)_ zA8Q90nA=!Mdw4PnRqWzRzMb(Hhyn7`^+`j#kyKa|dL!#fNHg0)?7d)Hw0{Q5R>r2z z%2JD(>oEaXAF}V$E&v!ac&$Fdu5H}^d~L};X$$E~W&o&tHo*t=W*^|PW3-a$NTOGc zf462Yn$%Sl;nR@0&$q3pU5$=ce7W@LYWngs-|#@Xq~vK5wewduVb7w+HJD+;Kh&_h zsbIC=AX1VST!$tWflUuQsxlk6Tsy1R)htK_gtLWXB1|MWeI+Y$E8i%OMwY^eEOlR{ z6<1PIo1-mm?XC@w*(IYJD0nEEa#%$sM&h1Y+ju$SY~IEK|BEQRJe7kv8|BsMOyf<> zKvB2}NpLy^N(dj>_M#lnBk?DuDlBn$hcEw&42*cR)!V&s@?N78qwbl+un#U8F zpjNQCj%CxAnM{7T`irHR+?bGj5+zCW^m4*5&bQ8>d{V){s>V`|CorLE2XwBO2vD}C zJF*hLjdWw#Q-DAmw7=DG{<5Zohkk7fVXY$hV6H*46{O@K68i$TD-rs27wfRLNjRrT zPGWRx(`cy>=}9b44mQ^dB^k6Z!EC?AJ#S>BB1m96v?!Zgfutr_Q&4p>o-ZQYHhn0P z4oBrqavwCRU-Tm4u`GM3KzU&W!;}i3aE0qs%P8wgxGF!?qAuFA4N)YYcMg2KfV{#l zB&IbWCCQ8yS;nTavF8x1s}`4VEwinC(LKe*)@-i(g&O1Tuf1Dl=1g~TqSFgx zKH) zQbyP?`%Y#T|g{|n)f4eIbdWgTMu2Ru7juce&(WCqH z*Qc+1)x)&L^n)*YMFsa{s+=`+sDU-Sn5YAqG)`%<{^n89qn}*b-@C3i+X;Z=wOYxG z!<;EFblQEecP!_{L&?``2U8pOD}~4?%Dme2saeO4IIS#lD%?ig*0xMK&OJ@%TEl>0?3-&>27; zD!6zBN^vhEk9Bc4*_&nV-l>n|R-Fl22hz)3xprkXX^PFh4PNCOZ)@>U+sG6plW@Ji zBP-ruS2qI)N|g$-(g^Je$hsJOMtM>~So+Ux6HZs-DdwFG{wr#&5p`f#f8Y%l=izep zy?5Dt0bX(1R*#E-#dz3K)RLmjL~}jR6;xrIe7{p13)bia4%34-di1Z_B@G)Fe-=ak z>-q;T1JLyZxw5FoV0TSjO_`4$SF%bUVR zpI$NX@MkhR4mX`(@=bTIs$fWl=(ya32c)&#WB*}ll%O5bMJXwW!Aq_Tw>JpXu4!ML zaFtlw?Y}`UVoPsxess-GP=K9B3k%lL&_1L{t(Qx<_zBUN} z({YPDQZrC52+Hk!9PGw(mUfkt4su4Drl7eBi9!*?!6?+&I$XQUfB1|G-H^P8tRrP7 zTeb7%AD{HYZB2KOL5$QEwl0BYMg$iGGLqrQH;y{khvlYD&R@@dRq)MI&kfX|{%sm5 z&e~frr&Nx(?on}>Re2d3XrxhoB_$-jo6!koekJ2lzm0j`>a97(-WZIMc)n) z&Q+*8VsbnB*-8?0-c)6NC!nxjD{((qc>K{YAJ*du*99HoIr$+ z(x%2+ah;T5Y#eD;{S8RyFEC|BaIK?7BD%$?|4?~O-Tj>eg7)H8?MWJjHbdrJ$Nl`* ztsA!*C*HKt+O8$@yXSM>CE$}MG*nIT@J2|O!G_I}R7nHxNj@*GbVp#8QydqRA_F}2 zRTu)Q6}Y#`tLdsEWgA~8wv+=U=$72Meh0&!4xrigq{0x{fj@7M2!fY$G`;?ate_3V zzrroIQ%{!68N*sj;CWtTwRWETUEaPhFfo?aBOu59c`3(V-?i{aIl8inRw4^$-idD| zD=2t1w|yu$ckn%V0bV~vVEdyw$u%MC?Xf=D4NF$)s3V3TB6RqD|{d67F;&sehU zW_E!%4xUv_LJxxWzTv*-2u*}~iA+}Mcv?B3K49W%=jm+<#i+%{4w@P^`>%dA%6|>F zZ8u#ix!R>9_M95zgOw2sTkT7lw#$`4vl5?NtXQGau(j=cC@0$p zHfiKoi8=QNAiv~l18x?tqx!D=CwJBc(|i-#>0_<9jGTz-uecUl1DUsy8sC=RDDO3Uk4{dP1r6v5Q6sbpg^GlDrfsth_`HGU&PjfJvnx<8Nw z(K(j;X!5q`p)hCLWQv9sN3Y+bc_ZO&6@7s!OlY``1L?60jY9)~ z@tZSFcCu$PF|b#{baO4Z@Z7q?Gmj9=Lxv~%km1`gt9g5pLaFQLH}B7$fSjD>g7}wm zE62gLhX}2Tq^fGGN<>y3O}rlje9jGBi0}B85OIrH2@23_l~Q$+#QP)@{r}kt(muFK zkxfTTdG~!0!aByCbbfeN=CNnCMVo)vRR7?@q(H+R!5sJEaiNBx`E!`Q&8AuJjE1(& z%w_fGC(i@uiWfmitx>tmWWU`rLRThjIrBQ52-wKmRlBd*0m!)NWm5hiJ-9fIb?hsj z17lXBbrXfr`QYpQ@(oBVKl{FW&C7rz|MB_aQclaR#klS{oj7C=P33C(m>{q_Fm(5< zbfX?sU<5`~V#iC!F?c6^xd(oF5lf7XE%bDCr2N8Q$e{~l#VM(j!wbX0EJUMZ8)wmn z56T1-LD-0;-s?IRp|t=^U~|;1%IEA_+euWgB*F8+hw!>D988MD+C9<7DB$gnX@Jin z2V(66qn0ck+|)ZELW2&Q*E`4Il&8cX7j`q&qsXsa;=2Ye|2DVAf*tHW9!Xm;g}D%y z^ITgQaLSCqn{XzBoJAxW*Q1)74;v>U`SO_F1f}jYnS_xu93s6%UD$;7yYP*~@4~~uW9krhc9_grkM^=GqK2Rh z2Dk<4-;k>alld%Td-EIZ6cPS)*Tc*4MmULf7~#_bYY3Pm{w)L3!PRj+MJUoP-&*Op zM*o}!+oK=9Ki+(}<+EefXCHiUw(LMGHpm>(&bI=gj&tVHg5d}m)?2i@vc!u2RK6I< z93-cYWP0<%TZCc4yMd+cPj19_dt#jRP4PHzMvLel>7l~N=LbGL3#QwbR~^N(LWG*& zBF@e$_DgH%itl;iEbymq)ddKwEA9a0zku-Ds#GG2VlfgW7l)+j5HK2di_jDVs}fMPYYFUMxt(?WyObC-g%nk! z7X+T{gnHH)`Ukr_Ow2oVPq&BRij6uW!^;+BnlaR9Ky%+@+X%v6SyZQadspDbARgoP z7G#;wWQ)WKzoB$xaN>lp$ZS{;Nb1=l*ulD|KUxNGaA(*47+*qXx@g|`P}=KEqAVHT z1MQNqGGNFPRA%^sGD%-iBa;j^4@EZ3dPbt7U&SL<%}d9Q^L|vxM(^7pJxtQQ%|kdM zzuhsY$KFxC8NLNW4hh3{krs(~V}NyxbAJd@Tf!txvK2ag&lv>U=KnizG+ki{wyacH zvF`dKfL|;1b5P-l9kcG5=)w2XQR&v&oabOi+;me(R2!EP`4W_xX?e&9Wkhdbd6R;D z<-+Du)zS@I9TrU+vWSyxtx>A$m6%SP+?zZX4%Q>;ypL8$G~ZA9qc9O`Xd~1uABLUx z&x4pQpMTwrvP768^mMLU{zMf{{G2UAuCSl*P!%m1o7@i(IjeXO9qgOdVm9`M8bp28 zF}p0rr&r1<>iN$xO^XR4s->o|X3$Ws7znAckni}vY;m%_WG@bcB5@Y>RwvFqqr@KBD6DN*d;3)-u9>*#(eBH?o36?D!nam8B9=< zINQ`j$5hDAVukJe=DN1PB$w^DfBK7N>wb%6M&_MkI@TU{e~Ne#0g}|+mVS!TC1+CC zL*63c{p~nDxt=5V=nW#H`H}`gu%Fp31}B@vx}kAA0kE#4?#iG0ExS_4KP%v!@R`k8 zC9_Bt*aharScY75!`|1;31RvF5}KVe+{8D*L6}J*8b-m<9Fl>xWcRSIC3jiWy3pjq z*+XHa>G2R%2OEa*7gUdE`v^t3jQ5BRlRge^n7Z1_@W}C5N>>j>XGUiyKNRSe6DYhq zWcZ9yOL%%EV(^T51!vfSo)EybBT_Mi{uW+bQ#BR6Jq1`plv`w(;%dJS6CaB)u)7K7sb6 zF`I<&esi+6_4jv50hQjehrz7rR?O&rrZ>aH?$0SDQjlyW=0s381!}4i--9hKB*{yo zAG2}7V;kBD>&X@j!18ICdKx+<&fWyknAhdn`@2!hox--Mn1Ma1s{n;*O4CI0^sQpL zk=?SUNkeKU;eMRI*_q>h&D1+|Wl3S=3s+RlOc9J?NI^{+fIwTP{?l+8c*4N*D|axQ zTB`fCwBEPJxFuA_>p;Wo&lvWMsn?%SSrUmD<3{bEcCMJ$6<x+$IH zDCtfz@&3M4FFdTLw9hDRR7Y@wEEDYjUU<-7%2!NeT$Uc4obwb@bo9yVZ(tK3!8>nC z8vtr2^tz9kShaoq&HBU}|C`&6lg>nbR4^+lqaa>rZA|NclGx{4D8(~?VQSahp5CA? z<*e1mP7%Wsu8|_JCiCf$W7swAN>6(wx#Q%Cim<#u+v#?U;dPc=sAf+!_8GHo3FK?U z^LHhx=JDgYs1NjOMPr()J%zOlXSzHf(D#b*?~>eD2+_PuT6 zu!6ifE&KM7s(3kd#Og}^6LFbgFew47GSTUf7At!nHkLB2Cuqx=JjUC~7Ch_} ziX)bRp;B94*;lXqh~Hjj;z`v~YNxuvhcy38WjRb2r~F=l<9=}r|AiU+pRcP+$6uee z3f--k{^Cz+Aq6TMj&z(HzcnDbgSVNl&nDH;UB; zdX!Fv#0!W6m=816F|V0l54*Jusv}=O&4pAsbo`PS^~)~(e)pQXDd>UGVU@SvkPxnh zI5HQK11R0D-N6DwY5CA=isy}~ue?`YEJ9(=EFvCr(^W1sRZ6u_tfAWMi}h>cHb?$A`|vRl6=`gdPDt3cLghP>P2;UX0AbcDcj(F#*v)c`yPbYSt8C?=@tn zT5Qv2vh@X#5j~~dBsLcFgwMM- zEVo{KI?X!NAS*p_eTSZ9(3cIAFExZ%WdJDOyy?^0v#0m>l65pOL%%2b=gICx zgrUe=wLZq3tDRgC$EN_qZ#Bi;Yl^@x_6p%7v*0;v{Kt=kDn=lM9KDBS!5Mi86*c8t zxvZ(ECwL92f&$v&ZyYr)T5y1qhMrCfKBwM}DM5_~iUJKztBqW1vY)$Q?6bI_O@K4x z?JmgvJnyj=nlyAe$oRMXr^J&#w=|s${htTXhTSw z?y-6(3e~6E0IxdX-uf2CQp!5ovbV^0oW&9{A_%FZRH)gqwI%< zq~mlag{0VIb0}4~N(TL9kf_0RfHP|AZ^acdk}J9+h5*})yA0gx_e#nMnq#kn1-n{y zAcP9I78d-EO*D#CE(ZCFd%Oc_lH)(6w#gZD-87BLt>rCnY^=4MNW%O2N)%cU6xoG5Q@0hv zahYNtyR|E_k*q?7=_Zr}S-Ojk!da^V$Sc#j1%HZ|eX@@wHH^1IKz=srn`qZdQwb{guiE}wOSAFF?Ig*?nPDmk+xU)GD!p{-sncP~3W-v7@|Y07yjms!YE z`o{_s`MF>Qpjoox4?_GHZ=6K!n|U@8YORc-aOC}47CLBy<*`$o8n@|^u zS0#(tXJ?$odS4_v;vrMX_8wy7w>Qr!O$mGI{2%WbO{!c?S|Bky?|r&ulFlRk7WYlb z?dNyj)VY0yDK}JYQjwE<#+5;2%C(sGOw<wi?3gG#tK0v_UwbzBk?^*i+&K4+X%i+~9KE@P5}rwzX93Dj?SQy; z_wf12y~?pX3Y>srv8t+K)0JP$^~fIsKDbThaf;c+GsnBk)Dlsid<$$KiNoVmd2~lr zFSe&b602eYzW%M#*l!sJ%3oU^(Xb(>aE#*_YTWcG8;IN_en{e)y9~J71??!s^H3#h z`ItQve+#210aC~LB6x?rc*nSMIQe<+E?^$82$^_)9R4;$#zuY75k{p|3SaA&zu$D(bhKYM3T1O)l0CpzKO-3j?-+hn}D3WDXs)&n(3Xpc@ zRTExmLA@$wrsLFNJR+;zls3g<%N}LZc4`{|wvd#mN&90NQ%{fxI>TAVOPj7;8zNCGZsy78HU`_v7pw0sKV0e52D+Vt1$nu zgf$7*w6&^RZGrcA^;e6(LW*aG1ZP3iRYPsa#b=a*@sUZ8Z3#R8w@_cX3*yhU>cguJ zXMEPR*GdiMc17ZyBS^+Ux>oM?=hK-?Rs<9Js_B}vXw!_Oe&!ut&|iJ#F2jKfI?QZh z4l&116>+VOW{f=B=x?Vl^$tP@9n8lQJKaDNg30_^uA>;HBh1zfhu3fA@<&x-?fOyo zrug=lu3dFp?R~FE7ON&MFF?f9^XY~nkU)5`yS>HBnweJ?nk6ekio{8-n)eeIj^SQ>V} zusvi>s6H81oHCiFRrNRGZr{wIfqOA1VPB=5>CBUJEEG$iRDf44KHH=-%%WM7(GpF# zGYHk2wm=KHlvAzhVMSa5t?yglicb4QcH^9${{&|D(+MdN-x`o72XER}&zA9cQlpch z*?b>T3}PcXj>!s<=}EMgfDsx&D6i>4ZvHPc<|NPwxoO!9L36nas`{`n=pc*x;n;^@ zJzxWOI166rD)$YS=ejVyNuL{rJ{m-1eUq1hlmVTYeg=c+zT4Ijeczk*iKjLwb)*H> zjdMgIWr$ur9UKCw@rjWLCavOmE3V zR_}jGhq{l+y&cm$PW`|6Hr}0p-)cjdLw+C5=T z6s$OYM6QHwa`yS3cuIakCP+p;=l_E@tK+mr!TNS3U;C!aTzG@hUY|y3`8zd zNcbnxgE3x}jm_&$kEH#%b^l~FZJcg(%ysZL!c`zh#j?8&U-i(q@X^}sCCN~^!dN2N z0Lin7KnH@$Is?hy$gs+lR`e@GGC3>^(tud$@{q=|!x$tM*IWwfG;Fg)c01Hm4q!;( z>v?)OL&wF}3>9;!Rm`aGMB(dm4Ns}!q{?&T(c&m$O*;iH+ij9Wrtm%@oFl#oOnjh% z@G*~V4d%cd3xL@ZTKD0%^oM$E3*Q;r6F+$oEg3nLDuR@C%XT-Y^dr!^cksi%Z8lqz7UJ4 zU{lmt5eK+}O?)0{oXODb9W8h|Zcj1VynLnI%hO|5280K z*h1&>AB*FqgREvrRL?!V*T^woNJash^B{U;HlkY03-nb#>4(UkXx%nz#=M~4Cw;^xuG5z6Q&pZ99KiD2ckn2|r1w9@T&(-~E}U+0 zjwd-AlP;qgr#^)hsqbVFA3#s0l2$NYnYz_Q3uZNeI!0GvRd zf!RPSqv=-LYXd=N__wGSp1gwMLvW8G9PhdXV=Kd?$bp$_6{lQCV<2$lXlK=xcI