peakDetection: Detect peaks (local maximum) from values series

Description Usage Arguments Details Value Note Author(s) See Also Examples

Description

This function allows a efficient recognition of the local maximums (peaks) in a given numeric vector.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
peakDetection(data, threshold = 0.25, chromosome = NULL, width = 1,
  score = TRUE, min.cov = 2, mc.cores = 1)

## S4 method for signature 'list'
peakDetection(data, threshold = "25%", width = 1,
  score = TRUE, min.cov = 2, mc.cores = 1)

## S4 method for signature 'numeric'
peakDetection(data, threshold = "25%",
  chromosome = NULL, width = 1, score = TRUE, min.cov = 2,
  mc.cores = 1)

Arguments

data

Input numeric values, or a list of them

threshold

Threshold value from which the peaks will be selected. Can be given as a percentage string (i.e., "25\%" will use the value in the 1st quantile of data) or as an absolute coverage numeric value (i.e., 20 will not look for peaks in regions without less than 20 reads (or reads per milion)).

chromosome

Optionally specify the name of the chromosome for input data that doesn't specify it.

width

If a positive integer > 1 is given, the peaks are returned as a range of the given width centered in the local maximum. Useful for nucleosome calling from a coverage peak in the dyad.

score

If TRUE, the results will be scored using peakScoring() function.

min.cov

Minimum coverage that a peak needs in order to be considered as a nucleosome call.

mc.cores

The number of cores to use, i.e. at most how many child processes will be run simultaneously. Parallelization requires at least two cores.

Details

It's recommended to smooth the input with filterFFT prior the detection.

Value

The type of the return depends on the input parameters:

Note

If width > 1, those ranges outside the range 1:length(data) will be skipped.

Author(s)

Oscar Flores [email protected]

See Also

filterFFT(), peakScoring()

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# Generate a random peaks profile
reads <- syntheticNucMap(nuc.len=40, lin.len=130)$syn.reads
cover <- coverage.rpm(reads)

# Filter them
cover_fft <- filterFFT(cover)

# Detect and plot peaks (up a bit the threshold for accounting synthetic
# data)
peaks <- peakDetection(cover_fft, threshold="40%", score=TRUE)
plotPeaks(peaks, cover_fft, threshold="40%", start=10000, end=15000)

# Now use ranges version, which accounts for fuzziness when scoring
peaks <- peakDetection(cover_fft, threshold="40%", score=TRUE, width=147)
plotPeaks(peaks, cover_fft, threshold="40%", start=10000, end=15000)

nucleR documentation built on Nov. 1, 2018, 2:23 a.m.