From bac75c39db90d0d5f6291d0ff4bad850f45a6ee3 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Mon, 18 Mar 2024 13:16:01 +0100 Subject: [PATCH 01/10] force_increase() addition --- DESCRIPTION | 2 +- NAMESPACE | 1 + NEWS.md | 5 +++ R/force_increase.R | 51 +++++++++++++++++++++++++++ man/force_increase.Rd | 27 ++++++++++++++ man/gnps.Rd | 2 +- src/MsCoreUtils.dll | Bin 0 -> 174023 bytes tests/testthat/test_force_increase.R | 20 +++++++++++ 8 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 R/force_increase.R create mode 100644 man/force_increase.Rd create mode 100644 src/MsCoreUtils.dll create mode 100644 tests/testthat/test_force_increase.R diff --git a/DESCRIPTION b/DESCRIPTION index 1b190a61..c30f5996 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: MsCoreUtils Title: Core Utils for Mass Spectrometry Data -Version: 1.15.4 +Version: 1.15.5 Description: MsCoreUtils defines low-level functions for mass spectrometry data and is independent of any high-level data structures. These functions include mass spectra processing diff --git a/NAMESPACE b/NAMESPACE index 2e1e8a00..3fe6d6dc 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -21,6 +21,7 @@ export(estimateBaselineConvexHull) export(estimateBaselineMedian) export(estimateBaselineSnip) export(estimateBaselineTopHat) +export(force_increase) export(formatRt) export(getImputeMargin) export(gnps) diff --git a/NEWS.md b/NEWS.md index 43eb57f4..0425712f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,10 @@ # MsCoreUtils 1.15 +## MsCoreUtils 1.15.5 + +- Add function `force_increase()` to adjust a vector to ensure increasing + values. + ## MsCoreUtils 1.15.4 - Fix documentation of `ndotproduct`. diff --git a/R/force_increase.R b/R/force_increase.R new file mode 100644 index 00000000..051f9bbc --- /dev/null +++ b/R/force_increase.R @@ -0,0 +1,51 @@ +#' @title Forcing a numeric vector into a monotonously increasing sequence. +#' +#' @description +#' This function performs interpolation on the non-increasing parts of an +#' input vector to ensure its values are continuously increasing. +#' +#' @param x `numeric` vector. +#' +#' @return A vector with continuously increasing values. +#' +#' @note +#' NA values will not be replaced. +#' +#' @examples +#' x <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, NA, 1.04, 1.4, 1.6, NA, NA) +#' sorted_rtime <- force_increase(x) +#' is.unsorted(x, na.rm = TRUE) +#' +#' @export +#' +#' @rdname force_increase +force_increase <- function(x){ + # Select only the non-NA values + if (!is.numeric(x) || !is.integer(x)) + stop("'x' needs to be numeric or integer") + nna_idx <- which(!is.na(x)) + vec_temp <- x[nna_idx] + + while (any(diff(vec_temp) < 0)) { + 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 +} + diff --git a/man/force_increase.Rd b/man/force_increase.Rd new file mode 100644 index 00000000..250246ea --- /dev/null +++ b/man/force_increase.Rd @@ -0,0 +1,27 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/force_increase.R +\name{force_increase} +\alias{force_increase} +\title{Forcing a numeric vector into a monotonously increasing sequence.} +\usage{ +force_increase(x) +} +\arguments{ +\item{x}{\code{numeric} vector.} +} +\value{ +A vector with continuously increasing values. +} +\description{ +This function performs interpolation on the non-increasing parts of an +input vector to ensure its values are continuously increasing. +} +\note{ +NA values will not be replaced. +} +\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_increase(x) +is.unsorted(x, na.rm = TRUE) + +} diff --git a/man/gnps.Rd b/man/gnps.Rd index cabb3fb8..d28abefe 100644 --- a/man/gnps.Rd +++ b/man/gnps.Rd @@ -118,7 +118,7 @@ Other grouping/matching functions: \code{\link{closest}()} Other distance/similarity functions: -\code{\link{distance}} +\code{\link{distance}()} } \author{ Johannes Rainer, Michael Witting, based on the code from diff --git a/src/MsCoreUtils.dll b/src/MsCoreUtils.dll new file mode 100644 index 0000000000000000000000000000000000000000..4650bd4aefd4c768fb6d2a108f1711604525003f GIT binary patch literal 174023 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 hx((FOQ(W=0)zK~uORhyZJHg02$%)ub!X Date: Mon, 18 Mar 2024 13:35:24 +0100 Subject: [PATCH 02/10] fix --- R/force_increase.R | 2 +- man/force_increase.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/force_increase.R b/R/force_increase.R index 051f9bbc..b6fc85ad 100644 --- a/R/force_increase.R +++ b/R/force_increase.R @@ -21,7 +21,7 @@ #' @rdname force_increase force_increase <- function(x){ # Select only the non-NA values - if (!is.numeric(x) || !is.integer(x)) + if (!is.numeric(x) && !is.integer(x)) stop("'x' needs to be numeric or integer") nna_idx <- which(!is.na(x)) vec_temp <- x[nna_idx] diff --git a/man/force_increase.Rd b/man/force_increase.Rd index 250246ea..4eee7afb 100644 --- a/man/force_increase.Rd +++ b/man/force_increase.Rd @@ -20,7 +20,7 @@ input vector to ensure its values are continuously increasing. NA values will not be replaced. } \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) +x <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, NA, 1.04, 1.4, 1.6, NA, NA) sorted_rtime <- force_increase(x) is.unsorted(x, na.rm = TRUE) From 16a9606438f5f09666b1baaec71f34b1818ebb8e Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Mon, 18 Mar 2024 14:31:06 +0100 Subject: [PATCH 03/10] name fixes --- NAMESPACE | 2 +- NEWS.md | 2 +- R/{force_increase.R => force_sorted.R} | 4 ++-- man/{force_increase.Rd => force_sorted.Rd} | 8 ++++---- man/gnps.Rd | 2 +- .../{test_force_increase.R => test_force_sorted.R} | 6 +++--- 6 files changed, 12 insertions(+), 12 deletions(-) rename R/{force_increase.R => force_sorted.R} (96%) rename man/{force_increase.Rd => force_sorted.Rd} (83%) rename tests/testthat/{test_force_increase.R => test_force_sorted.R} (84%) diff --git a/NAMESPACE b/NAMESPACE index 3fe6d6dc..19e75602 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -21,7 +21,7 @@ export(estimateBaselineConvexHull) export(estimateBaselineMedian) export(estimateBaselineSnip) export(estimateBaselineTopHat) -export(force_increase) +export(force_sorted) export(formatRt) export(getImputeMargin) export(gnps) diff --git a/NEWS.md b/NEWS.md index 0425712f..9562a827 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,7 +2,7 @@ ## MsCoreUtils 1.15.5 -- Add function `force_increase()` to adjust a vector to ensure increasing +- Add function `force_sorted()` to adjust a vector to ensure increasing/sorted values. ## MsCoreUtils 1.15.4 diff --git a/R/force_increase.R b/R/force_sorted.R similarity index 96% rename from R/force_increase.R rename to R/force_sorted.R index b6fc85ad..9c932371 100644 --- a/R/force_increase.R +++ b/R/force_sorted.R @@ -18,8 +18,8 @@ #' #' @export #' -#' @rdname force_increase -force_increase <- function(x){ +#' @rdname force_sorted +force_sorted <- function(x){ # Select only the non-NA values if (!is.numeric(x) && !is.integer(x)) stop("'x' needs to be numeric or integer") diff --git a/man/force_increase.Rd b/man/force_sorted.Rd similarity index 83% rename from man/force_increase.Rd rename to man/force_sorted.Rd index 4eee7afb..ef55e609 100644 --- a/man/force_increase.Rd +++ b/man/force_sorted.Rd @@ -1,10 +1,10 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/force_increase.R -\name{force_increase} -\alias{force_increase} +% Please edit documentation in R/force_sorted.R +\name{force_sorted} +\alias{force_sorted} \title{Forcing a numeric vector into a monotonously increasing sequence.} \usage{ -force_increase(x) +force_sorted(x) } \arguments{ \item{x}{\code{numeric} vector.} diff --git a/man/gnps.Rd b/man/gnps.Rd index d28abefe..cabb3fb8 100644 --- a/man/gnps.Rd +++ b/man/gnps.Rd @@ -118,7 +118,7 @@ Other grouping/matching functions: \code{\link{closest}()} Other distance/similarity functions: -\code{\link{distance}()} +\code{\link{distance}} } \author{ Johannes Rainer, Michael Witting, based on the code from diff --git a/tests/testthat/test_force_increase.R b/tests/testthat/test_force_sorted.R similarity index 84% rename from tests/testthat/test_force_increase.R rename to tests/testthat/test_force_sorted.R index 448ce0cd..00bbafba 100644 --- a/tests/testthat/test_force_increase.R +++ b/tests/testthat/test_force_sorted.R @@ -3,18 +3,18 @@ test_that("forceSorting works", { # 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_increase(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_increase(vec), "Replacing") + 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_increase(vec) + result <- force_sorted(vec) expect_equal(vec, result) }) From ee9c81309f27964126936d100d9ea4768d17729d Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Mon, 18 Mar 2024 14:37:23 +0100 Subject: [PATCH 04/10] example fix --- R/force_sorted.R | 2 +- man/force_sorted.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/force_sorted.R b/R/force_sorted.R index 9c932371..01d4b59f 100644 --- a/R/force_sorted.R +++ b/R/force_sorted.R @@ -13,7 +13,7 @@ #' #' @examples #' x <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, NA, 1.04, 1.4, 1.6, NA, NA) -#' sorted_rtime <- force_increase(x) +#' sorted_rtime <- force_sorted(x) #' is.unsorted(x, na.rm = TRUE) #' #' @export diff --git a/man/force_sorted.Rd b/man/force_sorted.Rd index ef55e609..aaf23532 100644 --- a/man/force_sorted.Rd +++ b/man/force_sorted.Rd @@ -21,7 +21,7 @@ NA values will not be replaced. } \examples{ x <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, NA, 1.04, 1.4, 1.6, NA, NA) -sorted_rtime <- force_increase(x) +sorted_rtime <- force_sorted(x) is.unsorted(x, na.rm = TRUE) } From 62339b51ed8846e61109ac0db5c0aa4b10d733d9 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Tue, 19 Mar 2024 06:45:26 +0100 Subject: [PATCH 05/10] Fix Laurent --- R/force_sorted.R | 31 ++++++++++++++++++++++++------- man/force_sorted.Rd | 23 ++++++++++++++++++++--- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/R/force_sorted.R b/R/force_sorted.R index 01d4b59f..dd6df18c 100644 --- a/R/force_sorted.R +++ b/R/force_sorted.R @@ -2,10 +2,18 @@ #' #' @description #' This function performs interpolation on the non-increasing parts of an -#' input vector to ensure its values are continuously increasing. +#' input vector to ensure its values are monotonously increasing. +#' If the values are non-increasing at the end of the vector, these values +#' will be monotonously increasing by the value defined with parameter `by ` +#' from the last increasing value. #' #' @param x `numeric` vector. #' +#' @param by `numeric(1)` value that will determine the monotonous increase in +#' case the values at the end of the vector are non-increasing and +#' therefore interpolation would not be possible. Default +#' to `by = 0.000001`. +#' #' @return A vector with continuously increasing values. #' #' @note @@ -13,13 +21,22 @@ #' #' @examples #' x <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, NA, 1.04, 1.4, 1.6, NA, NA) -#' sorted_rtime <- force_sorted(x) +#' sorted_vec <- force_sorted(x) +#' is.unsorted(x, na.rm = TRUE) +#' +#' ## Vector non increasing at the end +#' x <- c(1, 2, 1.5, 2) +#' sorted_rtime <- force_sorted(x, by = 0.1) #' is.unsorted(x, na.rm = TRUE) #' +#' ## We can see the values were not interpolated but rather replaced by the +#' ## last increasing value `2` and increasing by 0.1. +#' sorted_vec +#' #' @export #' #' @rdname force_sorted -force_sorted <- function(x){ +force_sorted <- function(x, by = 0.000001) { # Select only the non-NA values if (!is.numeric(x) && !is.integer(x)) stop("'x' needs to be numeric or integer") @@ -31,13 +48,13 @@ force_sorted <- function(x){ # Find next biggest value next_idx <- which(vec_temp > vec_temp[idx])[1L] - if (is.na(next_idx)){ + if (is.na(next_idx)) { l <- idx:length(vec_temp) - vec_temp[l] <- seq(vec_temp[idx], by = 0.000001, + vec_temp[l] <- seq(vec_temp[idx], by = by, length.out = length(l)) warning("Found decreasing values at the end of vector, ", - "interpolation not possible. Replacing values. See help ", - "for more details") + "interpolation not possible there. Increasing values by", + by, " instead. See help for more details") break } # Interpolation diff --git a/man/force_sorted.Rd b/man/force_sorted.Rd index aaf23532..7cf862da 100644 --- a/man/force_sorted.Rd +++ b/man/force_sorted.Rd @@ -4,24 +4,41 @@ \alias{force_sorted} \title{Forcing a numeric vector into a monotonously increasing sequence.} \usage{ -force_sorted(x) +force_sorted(x, by = 1e-06) } \arguments{ \item{x}{\code{numeric} vector.} + +\item{by}{\code{numeric(1)} value that will determine the monotonous increase in +case the values at the end of the vector are non-increasing and +therefore interpolation would not be possible. Default +to \code{by = 0.000001}.} } \value{ A vector with continuously increasing values. } \description{ This function performs interpolation on the non-increasing parts of an -input vector to ensure its values are continuously increasing. +input vector to ensure its values are monotonously increasing. +If the values are non-increasing at the end of the vector, these values +will be monotonously increasing by the value defined with parameter \code{by } +from the last increasing value. } \note{ NA values will not be replaced. } \examples{ x <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, NA, 1.04, 1.4, 1.6, NA, NA) -sorted_rtime <- force_sorted(x) +sorted_vec <- force_sorted(x) +is.unsorted(x, na.rm = TRUE) + +## Vector non increasing at the end +x <- c(1, 2, 1.5, 2) +sorted_rtime <- force_sorted(x, by = 0.1) is.unsorted(x, na.rm = TRUE) +## We can see the values were not interpolated but rather replaced by the +## last increasing value `2` and increasing by 0.1. +sorted_vec + } From 7aa1a2604f93eadfda981d2c4e651f93b3228681 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Tue, 19 Mar 2024 07:04:45 +0100 Subject: [PATCH 06/10] fix warning --- R/force_sorted.R | 2 +- tests/testthat/test_force_sorted.R | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/force_sorted.R b/R/force_sorted.R index dd6df18c..1b94f767 100644 --- a/R/force_sorted.R +++ b/R/force_sorted.R @@ -53,7 +53,7 @@ force_sorted <- function(x, by = 0.000001) { vec_temp[l] <- seq(vec_temp[idx], by = by, length.out = length(l)) warning("Found decreasing values at the end of vector, ", - "interpolation not possible there. Increasing values by", + "interpolation not possible there. Increasing values by ", by, " instead. See help for more details") break } diff --git a/tests/testthat/test_force_sorted.R b/tests/testthat/test_force_sorted.R index 00bbafba..bbe52634 100644 --- a/tests/testthat/test_force_sorted.R +++ b/tests/testthat/test_force_sorted.R @@ -8,7 +8,7 @@ test_that("forceSorting works", { # 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") + expect_warning(result <- force_sorted(vec), "Increasing") 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) From 776f064c4ac421836aa5a00f45e13708e6ac3b37 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Tue, 19 Mar 2024 10:49:36 +0100 Subject: [PATCH 07/10] Fix increment --- R/force_sorted.R | 13 ++++++++----- man/force_sorted.Rd | 5 +++-- tests/testthat/test_force_sorted.R | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/R/force_sorted.R b/R/force_sorted.R index 1b94f767..6b1be54f 100644 --- a/R/force_sorted.R +++ b/R/force_sorted.R @@ -12,7 +12,8 @@ #' @param by `numeric(1)` value that will determine the monotonous increase in #' case the values at the end of the vector are non-increasing and #' therefore interpolation would not be possible. Default -#' to `by = 0.000001`. +#' to `by = .Machine$double.eps` which is the smallest positive +#' floating-point number x such that 1 + x != 1. #' #' @return A vector with continuously increasing values. #' @@ -36,7 +37,7 @@ #' @export #' #' @rdname force_sorted -force_sorted <- function(x, by = 0.000001) { +force_sorted <- function(x, by = .Machine$double.eps) { # Select only the non-NA values if (!is.numeric(x) && !is.integer(x)) stop("'x' needs to be numeric or integer") @@ -52,9 +53,11 @@ force_sorted <- function(x, by = 0.000001) { l <- idx:length(vec_temp) vec_temp[l] <- seq(vec_temp[idx], by = by, length.out = length(l)) - warning("Found decreasing values at the end of vector, ", - "interpolation not possible there. Increasing values by ", - by, " instead. See help for more details") + warning("Found decreasing values at the end of the vector. ", + "Interpolation is not possible in this region. Instead, ", + "replacing these values with a sequence that starts from ", + "the last increasing value and increments by ", by, + ". See help for more details") break } # Interpolation diff --git a/man/force_sorted.Rd b/man/force_sorted.Rd index 7cf862da..4c2a832c 100644 --- a/man/force_sorted.Rd +++ b/man/force_sorted.Rd @@ -4,7 +4,7 @@ \alias{force_sorted} \title{Forcing a numeric vector into a monotonously increasing sequence.} \usage{ -force_sorted(x, by = 1e-06) +force_sorted(x, by = .Machine$double.eps) } \arguments{ \item{x}{\code{numeric} vector.} @@ -12,7 +12,8 @@ force_sorted(x, by = 1e-06) \item{by}{\code{numeric(1)} value that will determine the monotonous increase in case the values at the end of the vector are non-increasing and therefore interpolation would not be possible. Default -to \code{by = 0.000001}.} +to \code{by = .Machine$double.eps} which is the smallest positive +floating-point number x such that 1 + x != 1.} } \value{ A vector with continuously increasing values. diff --git a/tests/testthat/test_force_sorted.R b/tests/testthat/test_force_sorted.R index bbe52634..714ef0e4 100644 --- a/tests/testthat/test_force_sorted.R +++ b/tests/testthat/test_force_sorted.R @@ -8,7 +8,7 @@ test_that("forceSorting works", { # 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), "Increasing") + 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) From fa20de106f75af0c651adb03b340eab91db5d5a7 Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Tue, 19 Mar 2024 11:24:37 +0100 Subject: [PATCH 08/10] Update test_force_sorted.R --- tests/testthat/test_force_sorted.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testthat/test_force_sorted.R b/tests/testthat/test_force_sorted.R index 714ef0e4..676fea18 100644 --- a/tests/testthat/test_force_sorted.R +++ b/tests/testthat/test_force_sorted.R @@ -8,7 +8,7 @@ test_that("forceSorting works", { # 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") + expect_warning(result <- force_sorted(vec, by = 0.000001), "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) From 29449bf66920e9a8477c0af6e2e1dc7b8bfefc7f Mon Sep 17 00:00:00 2001 From: Philippine Louail Date: Wed, 20 Mar 2024 08:37:39 +0100 Subject: [PATCH 09/10] Johannes fixes --- .gitignore | 1 + NEWS.md | 4 ++-- R/force_sorted.R | 15 ++++++++------- man/force_sorted.Rd | 15 ++++++++------- man/gnps.Rd | 2 +- src/MsCoreUtils.dll | Bin 174023 -> 0 bytes 6 files changed, 20 insertions(+), 17 deletions(-) delete mode 100644 src/MsCoreUtils.dll diff --git a/.gitignore b/.gitignore index 9789cbce..6a64548f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ docs local_data *.o *.so +*.dll diff --git a/NEWS.md b/NEWS.md index 729d88ec..029aba87 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,8 +2,8 @@ ## MsCoreUtils 1.15.5 -- Add function `force_sorted()` to adjust a vector to ensure increasing/sorted - values. +- Add function `force_sorted()` to adjust a numeric vector to ensure +increasing/sorted values. ## MsCoreUtils 1.15.4 diff --git a/R/force_sorted.R b/R/force_sorted.R index 6b1be54f..b587e7f3 100644 --- a/R/force_sorted.R +++ b/R/force_sorted.R @@ -1,24 +1,25 @@ #' @title Forcing a numeric vector into a monotonously increasing sequence. #' #' @description -#' This function performs interpolation on the non-increasing parts of an -#' input vector to ensure its values are monotonously increasing. -#' If the values are non-increasing at the end of the vector, these values -#' will be monotonously increasing by the value defined with parameter `by ` -#' from the last increasing value. +#' This function performs interpolation on the non-increasing parts of a +#' numeric input vector to ensure its values are monotonously increasing. +#' If the values are non-increasing at the end of the vector, these values will +#' be replaced by a sequence of numeric values, starting from the last +#' increasing value in the input vector, and increasing by a very small value, +#' which can be defined with parameter `by ` #' #' @param x `numeric` vector. #' #' @param by `numeric(1)` value that will determine the monotonous increase in #' case the values at the end of the vector are non-increasing and -#' therefore interpolation would not be possible. Default +#' therefore interpolation would not be possible. Defaults #' to `by = .Machine$double.eps` which is the smallest positive #' floating-point number x such that 1 + x != 1. #' #' @return A vector with continuously increasing values. #' #' @note -#' NA values will not be replaced. +#' NA values will not be replaced and be returned as-is. #' #' @examples #' x <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, NA, 1.04, 1.4, 1.6, NA, NA) diff --git a/man/force_sorted.Rd b/man/force_sorted.Rd index 4c2a832c..7a48aecf 100644 --- a/man/force_sorted.Rd +++ b/man/force_sorted.Rd @@ -11,7 +11,7 @@ force_sorted(x, by = .Machine$double.eps) \item{by}{\code{numeric(1)} value that will determine the monotonous increase in case the values at the end of the vector are non-increasing and -therefore interpolation would not be possible. Default +therefore interpolation would not be possible. Defaults to \code{by = .Machine$double.eps} which is the smallest positive floating-point number x such that 1 + x != 1.} } @@ -19,14 +19,15 @@ floating-point number x such that 1 + x != 1.} A vector with continuously increasing values. } \description{ -This function performs interpolation on the non-increasing parts of an -input vector to ensure its values are monotonously increasing. -If the values are non-increasing at the end of the vector, these values -will be monotonously increasing by the value defined with parameter \code{by } -from the last increasing value. +This function performs interpolation on the non-increasing parts of a +numeric input vector to ensure its values are monotonously increasing. +If the values are non-increasing at the end of the vector, these values will +be replaced by a sequence of numeric values, starting from the last +increasing value in the input vector, and increasing by a very small value, +which can be defined with parameter \code{by } } \note{ -NA values will not be replaced. +NA values will not be replaced and be returned as-is. } \examples{ x <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, NA, 1.04, 1.4, 1.6, NA, NA) diff --git a/man/gnps.Rd b/man/gnps.Rd index cabb3fb8..d28abefe 100644 --- a/man/gnps.Rd +++ b/man/gnps.Rd @@ -118,7 +118,7 @@ Other grouping/matching functions: \code{\link{closest}()} Other distance/similarity functions: -\code{\link{distance}} +\code{\link{distance}()} } \author{ Johannes Rainer, Michael Witting, based on the code from diff --git a/src/MsCoreUtils.dll b/src/MsCoreUtils.dll deleted file mode 100644 index 4650bd4aefd4c768fb6d2a108f1711604525003f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174023 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 hx((FOQ(W=0)zK~uORhyZJHg02$%)ub!X Date: Wed, 20 Mar 2024 14:22:01 +0100 Subject: [PATCH 10/10] Laurent fix --- R/force_sorted.R | 12 ++++++------ man/force_sorted.Rd | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/R/force_sorted.R b/R/force_sorted.R index b587e7f3..a3846dd6 100644 --- a/R/force_sorted.R +++ b/R/force_sorted.R @@ -23,17 +23,17 @@ #' #' @examples #' x <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, NA, 1.04, 1.4, 1.6, NA, NA) -#' sorted_vec <- force_sorted(x) -#' is.unsorted(x, na.rm = TRUE) +#' y <- force_sorted(x) +#' is.unsorted(y, na.rm = TRUE) #' #' ## Vector non increasing at the end #' x <- c(1, 2, 1.5, 2) -#' sorted_rtime <- force_sorted(x, by = 0.1) -#' is.unsorted(x, na.rm = TRUE) +#' y <- force_sorted(x, by = 0.1) +#' is.unsorted(y, na.rm = TRUE) #' #' ## We can see the values were not interpolated but rather replaced by the #' ## last increasing value `2` and increasing by 0.1. -#' sorted_vec +#' y #' #' @export #' @@ -57,7 +57,7 @@ force_sorted <- function(x, by = .Machine$double.eps) { warning("Found decreasing values at the end of the vector. ", "Interpolation is not possible in this region. Instead, ", "replacing these values with a sequence that starts from ", - "the last increasing value and increments by ", by, + "the last increasing value and increments by ", by, ". See help for more details") break } diff --git a/man/force_sorted.Rd b/man/force_sorted.Rd index 7a48aecf..05c2389d 100644 --- a/man/force_sorted.Rd +++ b/man/force_sorted.Rd @@ -31,16 +31,16 @@ NA values will not be replaced and be returned as-is. } \examples{ x <- c(NA, NA, NA, 1.2, 1.1, 1.14, 1.2, 1.3, NA, 1.04, 1.4, 1.6, NA, NA) -sorted_vec <- force_sorted(x) -is.unsorted(x, na.rm = TRUE) +y <- force_sorted(x) +is.unsorted(y, na.rm = TRUE) ## Vector non increasing at the end x <- c(1, 2, 1.5, 2) -sorted_rtime <- force_sorted(x, by = 0.1) -is.unsorted(x, na.rm = TRUE) +y <- force_sorted(x, by = 0.1) +is.unsorted(y, na.rm = TRUE) ## We can see the values were not interpolated but rather replaced by the ## last increasing value `2` and increasing by 0.1. -sorted_vec +y }