Proteome Informatics Group > Java Proteomic Library
 

Recipe 3.1. Creating a MS peak list

Problem

We want to build a new MS peak list.

Solution

A simple peak list needs a mass-to-charge ratio peak'values.

// the m/z values
double[] mzs = new double[] { /*** list of sorted doubles ***/ };

// the builder needs mzs to create a peak list
PeakList pl =
	new PeakListImpl.Builder(mzs).build();

The builder proposes a set of optional parameters via supplementary methods:

// here is an experimental peak list
PeakList plExperimental =
	new PeakListImpl.Builder(mzs).intensities(intensities).build();
	
// here is a peak list with annotations
PeakList plAnnotated =
	new PeakListImpl.Builder(mzs).annotations(annotations).build();

// by default, null intensity peaks are kept, you can enable a few options
double[] mzs = new double[] {1.1, 2.2, 3.3, 4.2, 4.4, 5.5, 6.6, 7.7, 8.8};
double[] intensities = new double[] {4, 6, 0, 10, 1, 3, 0, 7, 9};
	
// 1. removal of all peaks where intensity is null 	
pl = new PeakListImpl.Builder(masses).intensities(intensities)
	.discardNonIntensePeaks().build();
		
Assert.assertEquals(7, pl.size());

// 2a. reset null intensities (set with min intensity/100)
pl = new PeakListImpl.Builder(masses).intensities(intensities)
	.resetNonIntensePeaks().build();
		
Assert.assertEquals(0.01, pl.getIntensityAt(2), 0.01);

// 2b. reset null intensities (set with min intensity/100)
pl = new PeakListImpl.Builder(masses).intensities(intensities)
	.resetNonIntensePeaks(1000).build();

Assert.assertEquals(0.001, pl.getIntensityAt(2), 0.001);

// sub peak lists
// a 1st way
PeakList subPl =
	new PeakListImpl.Builder(pl).indices(Arrays.asList(2, 3)).build();
	
// a second way
subPl =
	new PeakListImpl.Builder(pl).from(2).to(4).build();

Once peak lists have been created, you may have to get some informations. JPLMSPeakLists provides a set of utilitary methods for peak lists:

JPLMSPeakLists peakListUtil = JPLMSPeakLists.getInstance();

// get the sorted indices of intensities (ascending)
peakListUtil.getSortedIndexIntensityUp(plExperimental);

// get the intensity peak max index 
peakListUtil.getMaxIntensityIndex(plExperimental);

// merge peaks in a new peak list
peakListUtil.merge(plExperimental, pl);

// get an interval over peak indices in an interval of mzs
Interval interval = peakListUtil.getIndexRange(pl, 100, 1000);

Discussion

See Also