Description
After chromatographic peak detection I find myself frequently looking through identified peaks to see whether they make sense or are just noise (I guess that sounds familiar to most people). Things I frequently encounter are:
- signal from an ion that got split into two separate peaks.
- streches of neighboring peaks, i.e. noisy signal (we're using HILIC) that results in rather long streches of peak-like signal. For these centWave detects usual several peaks every now and then.
What I would propose is to implement a cleanChromPeaks
function that could be called after findChromPeaks
to clean up messy signal or refine identified peaks. It's signature could be findChromPeaks(object = "XCMSnExp", param)
with param
being a parameter object defining the settings for a specific cleaning algorithm. Examples could be:
JoinNeighboringPeaksParam
: join chromatographic peaks if their m/z range is overlapping and if they are not more than x seconds apart. To avoid joining isomers, skip peaks for which the intensity atrtmax
is less thanx
% of the peak's apex.CleanBroadPeaksParam
: remove chromatographic peaks that are wider than x seconds.
Other implementations could follow. They all should take an XCMSnExp
and a parameter object as input and return an XCMSnExp
(with cleaned/improved chromatographic peaks).
I guess other people might also have similar utility functions already implemented (@stanstrup , @michaelwitting ?) that could be added too.