optimize_filter: Filter criteria optimization to maximize the number of...

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

Description

Adjusts parameters in the "MSnIDFilter" instance to achieve the most number of spectra, peptides or proteins/accessions within pre-set FDR upper limit.

Usage

1
2
    optimize_filter(filterObj, msnidObj, fdr.max, method, 
                    level, n.iter, mc.cores=NULL)

Arguments

filterObj

An instance of class "MSnIDFilter".

msnidObj

An instance of class "MSnID".

fdr.max

Upper limit on acceptable false discovery rate (FDR).

method

Optimization method. Possible values are "Grid" or same values as for the method argument of the optim function. Tested and recommended arguments (besides "Grid") of method are "Nelder-Mead" or "SANN".

level

Determines at what level to perform optimization. Possible values are "PSM", "peptides" or "accession".

n.iter

For method "Grid" is approxomate number of evaluation point. For "Nelder-Mean" and "SANN" methods see optim.

mc.cores

Controls the number of enabled cores for parallel processing. Make sense only for "Grid" optimizaton. Default is getOption("mc.cores", 2L). See mclapply for details.

Details

The "Grid" method is brute-force optimization through evaluation of approximately n.iter combinations of the parameters set in the "MSnIDFilter" object. The enumeration of the parameter combinations proceeds as follows. The n.iter number is getting split given the dimensionality of the problem (that is the number of filter parameters in the "MSnIDFilter" object. For each parameter the evaluation points are equally spaced according to quantiles of the parameter distribution. This way we enumerate the grid that has more evaluation points in relatively more dense areas.

Note, optimization is computationally expensive. Thus, the optimize_filter call is memoised using facilities from the R.cache package. Once the same call of optime_filter function issued second time the results will be retrieved from cache.

Value

Returns an instance of "MSnIDFilter" that is maximized to provide the most number of identifications while maintaining a pre-set confidence (FDR).

Author(s)

Vladislav A Petyuk vladislav.petyuk@pnnl.gov

See Also

MSnID evaluate_filter apply_filter

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
data(c_elegans)

# explicitely adding parameters that will be used for data filtering
msnidObj$msmsScore <- -log10(msnidObj$`MS-GF:SpecEValue`)
msnidObj$absParentMassErrorPPM <- abs(mass_measurement_error(msnidObj))

# Setting up filter object
filtObj <- MSnIDFilter(msnidObj)
filtObj$absParentMassErrorPPM <- list(comparison="<", threshold=10.0)
filtObj$msmsScore <- list(comparison=">", threshold=10.0)

system.time({
    filtObj.grid <- optimize_filter(filtObj, msnidObj, fdr.max=0.01, 
                                    method="Grid", level="peptide", n.iter=50)})
show(filtObj.grid)

# Fine tuning. Nelder-Mead optimization.
system.time({
    filtObj.nm <- optimize_filter(filtObj.grid, msnidObj, fdr.max=0.01, 
                                    method="Nelder-Mead", level="peptide", 
                                    n.iter=50)})
show(filtObj.nm)

# Fine tuning. Simulated Annealing optimization.
system.time({
    filtObj.sann <- optimize_filter(filtObj.grid, msnidObj, fdr.max=0.01, 
                                    method="SANN", level="peptide", n.iter=50)})
show(filtObj.sann)

vladpetyuk/MSnID documentation built on June 25, 2021, 6:35 a.m.