Skip to content

Commit

Permalink
working on addIdentificationData-MSnExp,mzRident - see issue #232
Browse files Browse the repository at this point in the history
  • Loading branch information
LaurentGatto committed Jul 27, 2017
1 parent 7795968 commit 597ffea
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 19 deletions.
43 changes: 34 additions & 9 deletions R/methods-MSnExp.R
Original file line number Diff line number Diff line change
Expand Up @@ -265,24 +265,46 @@ setMethod("removeReporters", "MSnExp",
setMethod("addIdentificationData", c("MSnExp", "character"),
function(object, id,
fcol = c("spectrum.file", "acquisition.number"),
icol = c("spectrumFile", "acquisitionnum"),
icol = c("spectrumID", "acquisitionNum"),
acc = "DatabaseAccess",
desc = "DatabaseDescription",
pepseq = "sequence",
verbose = isMSnbaseVerbose()) {
addIdentificationData(object, id = mzID(id, verbose = verbose),
fcol = fcol, icol = icol)
addIdentificationData(object, id = mzR::openIDfile(id),
fcol = fcol, icol = icol,
acc, desc, pepseq)
})

setMethod("addIdentificationData", c("MSnExp", "mzRident"),
function(object, id,
fcol = c("spectrum.file", "acquisition.number"),
icol = c("spectrumID", "acquisitionNum"),
acc = "DatabaseAccess",
desc = "DatabaseDescription",
pepseq = "sequence",
...) {
## prepare id
addIdentificationData(object, id,
fcol = fcol, icol = icol,
acc, desc, pepseq)
})

setMethod("addIdentificationData", c("MSnExp", "mzIDClasses"),
function(object, id,
fcol = c("spectrum.file", "acquisition.number"),
icol = c("spectrumFile", "acquisitionnum"), ...) {
icol = c("spectrumFile", "acquisitionnum"),
acc = "accession",
desc = "description",
pepseq = "pepseq",
...) {
addIdentificationData(object, id = flatten(id),
fcol = fcol, icol = icol)
fcol = fcol, icol = icol,
acc, desc, pepseq)
})

setMethod("addIdentificationData", c("MSnExp", "data.frame"),
function(object, id,
fcol = c("spectrum.file", "acquisition.number"),
icol = c("spectrumFile", "acquisitionnum"), ...) {
function(object, id, fcol, icol, acc, desc, pepseq,
...) {
## we temporaly add the spectrum.file/acquisition.number information
## to our fData data.frame because
## utils.mergeSpectraAndIdentificationData needs this information
Expand All @@ -297,7 +319,10 @@ setMethod("addIdentificationData", c("MSnExp", "data.frame"),

fd <- utils.mergeSpectraAndIdentificationData(fd, id,
fcol = fcol,
icol = icol)
icol = icol,
acc = acc,
desc = desc,
pepseq = pepseq)

## after adding the identification data we remove the
## temporary data to avoid duplication and problems in quantify
Expand Down
21 changes: 11 additions & 10 deletions R/utils.R
Original file line number Diff line number Diff line change
Expand Up @@ -765,7 +765,8 @@ utils.leftJoin <- function(x, y, by, by.x=by, by.y=by,
# @noRd
utils.mergeSpectraAndIdentificationData <- function(featureData, id,
fcol = c("file", "acquisition.number"),
icol = c("file", "acquisitionnum")) {
icol = c("file", "acquisitionnum"),
acc, desc, pepseq) {
## mzR::acquisitionNum (stored in fData()[, "acquisition.number"] and
## mzID::acquisitionnum should be identical
if (!all(fcol %in% colnames(featureData))) {
Expand All @@ -789,8 +790,8 @@ utils.mergeSpectraAndIdentificationData <- function(featureData, id,
id <- id[o, ]

## use flat version of accession/description if multiple ones are available
id$accession <- ave(id$accession, id[, icol], FUN=utils.vec2ssv)
id$description <- ave(id$description, id[, icol], FUN=utils.vec2ssv)
id[, acc] <- ave(id[, acc], id[, icol], FUN=utils.vec2ssv)
id[, desc] <- ave(id[, desc], id[, icol], FUN=utils.vec2ssv)

## remove duplicated entries
id <- id[!duplicated(id[, icol]), ]
Expand All @@ -802,23 +803,23 @@ utils.mergeSpectraAndIdentificationData <- function(featureData, id,
)

## number of members in the protein group
featureData$nprot <- sapply(utils.ssv2list(featureData$accession),
featureData$nprot <- sapply(utils.ssv2list(featureData[, acc]),
function(x) {
n <- length(x)
if (n == 1 && is.na(x)) return(NA)
n
})
## number of peptides observed for each protein
featureData$npep.prot <- as.integer(ave(featureData$accession,
featureData$pepseq,
featureData$npep.prot <- as.integer(ave(featureData[, acc],
featureData[, pepseq],
FUN = length))
## number of PSMs observed for each protein
featureData$npsm.prot <- as.integer(ave(featureData$accession,
featureData$accession,
featureData$npsm.prot <- as.integer(ave(featureData[, acc],
featureData[, acc],
FUN = length))
## number of PSMs observed for each protein
featureData$npsm.pep <- as.integer(ave(featureData$pepseq,
featureData$pepseq,
featureData$npsm.pep <- as.integer(ave(featureData[, pepseq],
featureData[, pepseq],
FUN = length))
return(featureData)
}
Expand Down

0 comments on commit 597ffea

Please sign in to comment.