Learn R Programming

MALDIquant (version 1.22.3)

binPeaks: Align Peaks into discrete bins.

Description

This function looks for similar peaks (mass) across MassPeaks objects and equalizes their mass.

Usage

binPeaks(l, method=c("strict", "relaxed", "reference"), tolerance=0.002)

Value

Returns a list of mass adjusted MassPeaks objects.

Arguments

l

list, list of MassPeaks objects.

method

bin creation rule. "strict" creates bins never containing two or more peaks of the same sample. "relaxed" allows multiple peaks of the same sample in one bin. "reference" generates bins around the mass values from the first MassPeaks object in l.

tolerance

double, maximal relative deviation of a peak position (mass) to be considered as identical. Must be multiplied by 10^-6 for ppm, e.g. use tolerance=5e-6 for 5 ppm.

Author

Sebastian Gibb mail@sebastiangibb.de

Details

The algorithm is based on the following workflow:

  1. Put all mass in a sorted vector.

  2. Calculate differences between each neighbor.

  3. Divide the mass vector at the largest gap (largest difference) and form a left and a right bin.

  4. Rerun step 3 for the left and/or the right bin if they don't fulfill the following criteria:

    • All peaks in a bin are near to the mean (method == "strict" or method == "relaxed") (abs(mass-meanMass)/meanMass < tolerance) or the reference mass (method == "reference"; abs(mass-reference)/reference < tolerance).

    • method == "strict": The bin doesn't contain two or more peaks of the same sample.

method == "strict": The new peak positions (mass value) are the mean mass of a bin.
method == "relaxed": The new peak positions for the highest peaks of each sample in a bin are generated by the mean mass of this peaks. The lower peaks are not changed. method == "reference": The new peak positions for the highest peaks of each sample in a bin are generated by the mass of peaks of the first MassPeaks object. Lower peaks are not changed.

See Also

intensityMatrix, MassPeaks

Website: https://strimmerlab.github.io/software/maldiquant/

Examples

Run this code
## load package
library("MALDIquant")

## create two MassPeaks objects
p <- list(createMassPeaks(mass=seq(100, 500, 100), intensity=1:5),
          createMassPeaks(mass=c(seq(100.2, 300.2, 100), 395), intensity=1:4))

binnedPeaks <- binPeaks(p, tolerance=0.002)

## compare result
iM1 <- intensityMatrix(p)
iM2 <- intensityMatrix(binnedPeaks)

all(dim(iM1) == c(2, 9)) # TRUE
all(dim(iM2) == c(2, 6)) # TRUE

show(iM2)

## increase tolerance
binnedPeaks <- binPeaks(p, tolerance=0.1)

iM3 <- intensityMatrix(binnedPeaks)

all(dim(iM3) == c(2, 5)) # TRUE

show(iM3)

## differences between "strict" and "relaxed"
p <- c(createMassPeaks(mass=c(1, 1.01, 3), intensity=c(2, 1, 1)),
       createMassPeaks(mass=c(0.99, 3), intensity=rep(1, 2)),
       createMassPeaks(mass=c(1.02, 3), intensity=rep(1, 2)))

intensityMatrix(binPeaks(p, method="strict", tolerance=0.05))
intensityMatrix(binPeaks(p, method="relaxed", tolerance=0.05))

## use a reference
ref <- createMassPeaks(mass=c(1, 3), intensity=rep(1, 2))
## include the reference
intensityMatrix(binPeaks(c(ref, p), method="reference", tolerance=0.05))
## drop the reference
intensityMatrix(binPeaks(c(ref, p), method="reference", tolerance=0.05)[-1])

Run the code above in your browser using DataLab