Recipe 3.1 - Digesting a Protein
Problem
You want to digest a Protein in-silico.
Solution
The digestion is done by the object ProteinDigester.
Use ProteinDigester.Builder to build an immutable instance of ProteinDigester.
Building ProteinDigester
The Builder needs only on mandatory parameter: a Protease or a CleavageSiteMatcher.
Protease enum provides a selection of 27 proteases based on descriptions of their cleavage sites here.
ProteinDigester digester = new ProteinDigester.Builder(Protease.TRYPSIN).build();
It's also possible to create custom ProteinDigester by defining a custom CleavageSiteMatcher
// the cleavage site expects the following pattern: Pn ... P4 P3 P2 P1 | P1' P2' P3' ... Pm'
// where '|' represent the cleavage between amino-acid at position 1 and 1'
CleavageSiteMatcher csm = new CleavageSiteMatcher("N|G");
ProteinDigester hydroxylamine = new ProteinDigester.Builder(csm).build();
Building with more optional parameters: semi digestion, with/without missed-cleavages…
ProteinDigester digester = new ProteinDigester.Builder(Protease.TRYPSIN)
.missedCleavageMax(2).semi()
.addFixedMod(AminoAcid.T, Modification.parseModification("H3PO4"))
.build();
Digestion
Once instanciated, method digest(protein) is applied on a Protein object and returns products of digestion
Protein prot = ProteinFactory.newUniprotProtein("Q13231");
// standard mode (no missed-cleavage)
List<Peptide> digests = digester.digest(prot);
or alternatively method digest(protein, container) is applied on a Protein object and digests will be stored into the given container
// provide a container to store digests
List<Peptide> digests = new ArrayList<Peptide>();
digester.digest(prot, digests);
With Variable modifications
// standard mode (no missed-cleavage)
List<Peptide> digests = digester.digest(prot);
Assert.assertEquals(44, digests.size());
// this factory generate set of ProteinDigestProduct given variable modifications
ModifiedPeptideFactory factory = new ModifiedPeptideFactory.Builder()
.addTarget(EnumSet.of(AminoAcid.T, AminoAcid.Y, AminoAcid.S), ModAttachment.SIDE_CHAIN, Modification.parseModification("PO3H-1"))
.build();
List<Peptide> varModProteinDigests = factory.createVarModPeptides(digests.get(1));
Counting cleavage sites
Counting the number of cleavage sites of any SymbolSequence
// count cleavage sites in a Protein
int count = digester.countCleavageSites(ProteinFactory.newUniprotProtein("Q13231"));
// count cleavage sites in a Peptide with Protease
count = Protease.TRYPSIN.countCleavageSites(Peptide.parse("RESALYTNIKALASKR"));
Assert.assertEquals(3, count);
Discussion
See also
See also Recipe 1.8 to generate Peptide with variable modifications.
|