Recipe 3.2 - Fragmenting a Peptide
Problem
You want to fragment a Peptide in-silico
Solution
PeptideFragmenter will do the job Here is how to create an instance of PeptideFragmenter that will produce fragments b and y
PeptideFragmenter fragmenter = new PeptideFragmenter(EnumSet.of(IonType.b, IonType.y), PeakList.Precision.DOUBLE);
If you need to generate fragments with losses, you have to explicitly provide the peak generators to the constructor. Note that the previous code example was using a BackbonePeakGenerator.
Set<IonType> ionTypes = EnumSet.of(IonType.b, IonType.y, IonType.i, IonType.p);
Mass waterLoss = Composition.parseComposition("H-2O-1");
Mass ammoniumLoss = Composition.parseComposition("H-3N-1");
List<PeptidePeakGenerator<PepFragAnnotation>> peakGenerators = Lists.newArrayList();
peakGenerators.add(new BackbonePeakGenerator(ionTypes, 1));
peakGenerators.add(new PeptideNeutralLossPeakGenerator(waterLoss,
EnumSet.of(AminoAcid.S, AminoAcid.T, AminoAcid.D, AminoAcid.E), ionTypes, 1));
peakGenerators.add(new PeptideNeutralLossPeakGenerator(ammoniumLoss,
EnumSet.of(AminoAcid.Q, AminoAcid.K, AminoAcid.R, AminoAcid.N), ionTypes, 1));
PeptideFragmenter fragmenter = new PeptideFragmenter(peakGenerators, PeakList.Precision.DOUBLE);
Generating n-1 x 4 (2 charges + 2 ion types) fragments.
PeptideFragmenter fragmenter = new PeptideFragmenter(EnumSet.of(IonType.b, IonType.y), PeakList.Precision.DOUBLE);
Peptide peptide = Peptide.parse("GYDSPR");
// generating peptide b and y fragments with charges +1 and +2
PeptideSpectrum peptideSpectrum = fragmenter.fragment(peptide, 2);
Assert.assertEquals(20, peptideSpectrum.size());
Discussion
See also
Recipe 1.5 to learn more about Peptide.
|