The current parameters msconvert provides for setting up filtering and processing is too rigid and inadequate for the types of processing we will have in pwiz::analysis.
We should provide the following:
- filtering based on arbitrary criteria like TIC, MS level, nativeID, id, index, scan time, selected ion m/z(s), isolation window boundary(s), etc.
- intensity thresholding on a per spectrum basis
- peak picking
- charge deconvolution
- precursor m/z and/or charge state recalculation
These processing steps may happen, for the most part, in an arbitrary order. There are some dependencies, e.g. native peak picking must be first, charge deconvolution must come before deisotoping, different algorithms may prefer or demand profile or centroid data, you can't do deconvolution twice, etc.
Where multiple algorithms will be available for a single generic process, the preferred design to select between them is a single generic class (e.g. SpectrumList_Smoother) with a parameter to pick between algorithms. The problem with this design is different algorithms may need different parameters: i.e. Savitzky-Golay smoothing allows for choosing different point counts and polynomial order, whereas sliding average smoothing only has a window size. How can we handle this?