peakDetection
according the height and the sharpness (width) of the peak. This function can be called automatically from peakDetection
if score=TRUE
.
"peakScoring"(peaks, data, threshold="25%")
"peakScoring"(peaks, data, threshold="25%", mc.cores=1)
"peakScoring"(peaks, data, threshold="25%", weight.width=1, weight.height=1, dyad.length=38)
"peakScoring"(peaks, data, threshold="25%", weight.width=1, weight.height=1, dyad.length=38, mc.cores=1)
peakDetection
. Could be a numeric
vector with the position of the peaks, or a IRanges
object with the extended range of the peak.
For both types, list support is implemented as a numeric
list or a IRangesList
threshold
previously used in peakDetection
function, if applicable. 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)).
trim
value given to the processReads
function.
list
or IRangeList
, and multiple cores support is available, the maximum number of cores for parallel processing
numeric
input, the value returned is a data.frame
containing a 'peak' and a 'score' column. If the input is a list
, the result will be a list
of data.frame
.If input is a IRanges
or IRangesList
, the result will be a RangedData object with one or multiple spaces respectively and a 3 data column with the mixed, width and heigh score.
The height score (score_h
) tells how large is a peak, higher means more coverage or intensity, so better positioned nucleosome. This score is obtained by checking the observed peak value in a Normal distribution with the mean and sd of data
. This value is between 0 and 1.
The width score (score_w
) is a mesure of how sharp is a peak. With a NGS coverage in mind, a perfect phased (well-positioned) nucleosome is this that starts and ends exactly in the same place many times. The shape of this ideal peak will be a rectangular shape of the lenght of the read. A wider top of a peak could indicate fuzzyness. The parameter dyad.length
tells how long should be the "flat" region of an ideal peak. The optimum value for this parameter is the lenght of the read in single-ended data or the trim
value of the function processReads
. For Tiling Array, the default value should be fine.
This score is obtained calculating the ratio between the mean of the nucleosome scope (the one provided by range in the elements of peaks
) and the dyad.length
central bases. This value is normalized between 0 and 1.
For punctual, single points peaks (provided by numeric
vector or list as peaks
attribute) the score returned is the height score.
For range peaks
the weighted sum of the heigth and width scores is used. This is: ((score_h * weigth.height) / sum.wei) + ((score_w * weigth.widht) / sum.wei)
. Note that you can query for only one score by weting its weight to 1 and the other to 0.
peakDetection
, processReads
,
#Generate a synthetic map
map = syntheticNucMap(nuc.len=40, lin.len=130) #Trimmed length nucleosome map
#Get the information of dyads and the coverage
peaks = c(map$wp.starts, map$fz.starts)
cover = filterFFT(coverage(map$syn.reads))
#Calculate the scores
scores = peakScoring(peaks, cover)
plotPeaks(scores$peak, cover, scores=scores$score, start=5000, end=10000)
Run the code above in your browser using DataLab