Recipe 3.7. Filtering MS peak lists
Problem
You want to filter MS peak lists.
Solution
A filter process a MS peak list and return a sub-peak list with selected peaks only. Any MS filters have to subclass AbstractPeakListFilter.
import org.expasy.jpl.core.ms.spectrum.filter.*; import org.expasy.jpl.core.ms.spectrum.PeakList; // the peak list to filter PeakList pl = new PeakListImpl.Builder(new double[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}) .intensities(new double[] {2, 4, 6, 8, 10, 1, 3, 5, 7, 9}) .build(); // this filter select the 3 most intense peaks AbstractPeakListFilter filter = new NHighestPeaksFilter(3); // the filter object make the job here PeakList subPl = filter.transform(pl); final double[] ms = newPL.getMzs(); Assert.assertTrue(Arrays.equals(new double[] {4.0, 5.0, 10.0}, ms));
A filter can also include a list of approved mzs even if it does not pass the filter:
import import org.apache.commons.collections15.Transformer; // this filter select the 3 most intense peaks AbstractPeakListFilter filter = new NHighestPeaksFilter(3); // a white list with a tolerance filter.setWhiteList(Arrays.asList(2.3), 0.5); // the filter object make the job here PeakList subPl = filter.transform(pl); final double[] ms = newPL.getMzs(); Assert.assertTrue(Arrays.equals(new double[] {2.0, 4.0, 5.0, 10.0}, ms));
Discussion
See Also