diff --git a/DESCRIPTION b/DESCRIPTION index 47b81ac5..7006652c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: Spectra Title: Spectra Infrastructure for Mass Spectrometry Data -Version: 1.15.5 +Version: 1.15.6 Description: The Spectra package defines an efficient infrastructure for storing and handling mass spectrometry spectra and functionality to subset, process, visualize and compare spectra data. It provides different diff --git a/NEWS.md b/NEWS.md index 383deb8b..953f9468 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,10 @@ # Spectra 1.15 +## Changes in 1.15.6 + +- Fix in `selectSpectraVariables()` for `MsBackendMzR`: ensure peaks variables + `"mz"` and `"intensity"` are not by default removed. + ## Changes in 1.15.5 - Add new `filterPeaksRanges()` function to filter mass peaks by ranges on diff --git a/R/MsBackendDataFrame.R b/R/MsBackendDataFrame.R index 424e64da..c13052b7 100644 --- a/R/MsBackendDataFrame.R +++ b/R/MsBackendDataFrame.R @@ -406,7 +406,7 @@ setMethod("selectSpectraVariables", "MsBackendDataFrame", spectraVariables(object))], collapse = ", "), " not available") keep <- spectraVariables[spectraVariables %in% - colnames(object@spectraData)] + colnames(object@spectraData)] if (length(keep)) object@spectraData <- object@spectraData[, keep, drop = FALSE] @@ -414,7 +414,7 @@ setMethod("selectSpectraVariables", "MsBackendDataFrame", if (length(msg)) stop(msg) object@peaksVariables <- intersect(object@peaksVariables, - colnames(object@spectraData)) + spectraVariables) validObject(object) object }) diff --git a/tests/testthat/test_MsBackendDataFrame.R b/tests/testthat/test_MsBackendDataFrame.R index 3b8fe64c..4b41d6d0 100644 --- a/tests/testthat/test_MsBackendDataFrame.R +++ b/tests/testthat/test_MsBackendDataFrame.R @@ -622,15 +622,32 @@ test_that("selectSpectraVariables,MsBackendDataFrame works", { be <- backendInitialize(MsBackendDataFrame(), df) res <- selectSpectraVariables(be, c("dataStorage", "other_col")) + + expect_equal(res@peaksVariables, be@peaksVariables) expect_equal(colnames(res@spectraData), c("dataStorage", "other_col")) expect_equal(msLevel(res), c(NA_integer_, NA_integer_)) res <- selectSpectraVariables(be, c("dataStorage", "rtime")) expect_equal(colnames(res@spectraData), c("dataStorage", "rtime")) + expect_equal(res@peaksVariables, be@peaksVariables) expect_error(selectSpectraVariables(be, "rtime"), "dataStorage is/are missing") expect_error(selectSpectraVariables(be, "something"), "something not available") + + df$mz <- list(c(1.2, 1.4), c(5.3, 34.5, 52.1)) + df$intensity <- list(c(123, 121.1), c(1231.1, 343.1, 21.1)) + be <- backendInitialize(MsBackendDataFrame(), df) + res <- selectSpectraVariables(be, c("dataStorage", "other_col")) + expect_equal(colnames(res@spectraData), c("dataStorage", "other_col")) + expect_equal(msLevel(res), c(NA_integer_, NA_integer_)) + expect_equal(res@peaksVariables, character()) + + be <- backendInitialize(MsBackendDataFrame(), df) + res <- selectSpectraVariables(be, c("dataStorage", "mz", "intensity")) + expect_equal(colnames(res@spectraData), c("dataStorage", "mz", "intensity")) + expect_equal(msLevel(res), c(NA_integer_, NA_integer_)) + expect_equal(res@peaksVariables, c("mz", "intensity")) }) test_that("$,$<-,MsBackendDataFrame works", { diff --git a/tests/testthat/test_MsBackendMzR.R b/tests/testthat/test_MsBackendMzR.R index dee66253..d051b8e6 100644 --- a/tests/testthat/test_MsBackendMzR.R +++ b/tests/testthat/test_MsBackendMzR.R @@ -493,6 +493,14 @@ test_that("selectSpectraVariables,MsBackendMzR works", { "scanIndex")) expect_equal(colnames(res@spectraData), c("dataStorage", "msLevel", "rtime", "scanIndex")) + expect_equal(res@peaksVariables, character()) + + res <- selectSpectraVariables(be, c("dataStorage", "msLevel", "rtime", + "scanIndex", "mz", "intensity")) + expect_equal(colnames(res@spectraData), c("dataStorage", "msLevel", "rtime", + "scanIndex")) + expect_equal(res@peaksVariables, c("mz", "intensity")) + expect_error(selectSpectraVariables(be, c("dataStorage", "msLevel")), "scanIndex is/are missing") }) @@ -559,6 +567,7 @@ test_that("dropNaSpectraVariables works with MsBackendMzR", { expect_equal(mz(res[1]), mz(sciex_mzr[1])) expect_true(length(spectraVariables(res)) < length(spectraVariables(sciex_mzr))) + expect_equal(res@peaksVariables, sciex_mzr@peaksVariables) }) test_that("supportsSetBackend,MsBackendMzR", {