Skip to content

Commit

Permalink
Merge pull request #17 from EMSL-Computing/bugfix/mass_filter
Browse files Browse the repository at this point in the history
hard code mass filter columns
  • Loading branch information
clabornd committed Feb 9, 2023
2 parents 6df6a14 + b10ac32 commit dd3bc3a
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 7 deletions.
5 changes: 2 additions & 3 deletions R/applyFilt.R
Original file line number Diff line number Diff line change
Expand Up @@ -124,17 +124,16 @@ applyFilt.massFilt <- function(filter_object, ftmsObj, min_mass = 200, max_mass
if(length(max_mass) != 1) stop("max_mass must be of length 1")

edata_cname <- getEDataColName(ftmsObj)
mass_cname = getMassColName(ftmsObj)

mass_info <- filter_object[,mass_cname]
mass_info <- filter_object[,"Mass"]

# get indices for which ones meet the requirement #
inds <- which(mass_info <= max_mass & mass_info >= min_mass)

if(length(inds) < 1) stop("Filtering using the specified minimum and maximum masses results in no peaks left in the data.")

# sample identifiers to keep #
edata_ids = filter_object[inds, edata_cname]
edata_ids = filter_object[inds, "ID__"]

temp_edata = ftmsObj$e_data[which(ftmsObj$e_data[,edata_cname] %in% edata_ids),]
temp_emeta = ftmsObj$e_meta[which(ftmsObj$e_meta[,edata_cname] %in% edata_ids),]
Expand Down
5 changes: 2 additions & 3 deletions R/mass_filter.R
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,10 @@ mass_filter <- function(ftmsObj){
mass_id = getMassColName(ftmsObj)

# pull two columns from e_meta #
res = data.frame(ID = ftmsObj$e_meta[,edata_id], ftmsObj$e_meta[,mass_id])
names(res)[2] = mass_id
res = data.frame(`ID__` = ftmsObj$e_meta[,edata_id], Mass = ftmsObj$e_meta[,mass_id])

# make sure mass column is numeric #
res[,mass_id] = as.numeric(as.character(res[,mass_id]))
res[,"Mass"] = as.numeric(as.character(res[,"Mass"]))

class(res) = c("massFilt", "data.frame")

Expand Down
8 changes: 7 additions & 1 deletion tests/testthat/test_filters.R
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,17 @@ context("filtering on peakData objects")
test_that("mass filters work correctly on peakData", {
data("examplePeakData")

# test with a random mass column name and make sure it is unique
tmp_masscol = sample(LETTERS, 10)
tmp_masscol = make.unique(c(colnames(examplePeakData$e_meta), tmp_masscol))[ncol(examplePeakData$e_meta) + 1]

examplePeakData$e_meta[[tmp_masscol]] <- examplePeakData$e_meta[[getMassColName(examplePeakData)]]
attributes(examplePeakData)$cnames$mass_cname = tmp_masscol

filtData <- mass_filter(examplePeakData)
expect_true(inherits(filtData, "massFilt"))
expect_true(inherits(filtData, "data.frame"))
expect_true(ncol(filtData) == 2)
expect_true(all(c(getEDataColName(examplePeakData), getMassColName(examplePeakData)) %in% colnames(filtData)))

peakObj2 <- applyFilt(filtData, examplePeakData, min_mass = 200, max_mass = 900)
expect_true(inherits(peakObj2, "peakData"))
Expand Down

0 comments on commit dd3bc3a

Please sign in to comment.