library(knitr) opts_chunk$set(tidy = FALSE, comment = NA)
OrgMassSpecR is a package for organic/biological mass spectrometry. This vignette demonstrates some of the functions in a larger context than the help file examples.
First, load the package.
IsotopicDistribution assist in identifying unknown mass spectra, or in confirming peak identities in known spectra. The monoisotopic mass of DDE, a breakdown product of the pesticide DDT, is calculated as follows.
MonoisotopicMass(formula = list(C=14, H=8, Cl=4))
The monoisotopic masses due to successive losses of chlorine, which are observed in the electron impact mass spectrum of DDE, are calculated by repeated calls to
MonoisotopicMass(formula = list(C=14, H=8, Cl=3)) MonoisotopicMass(formula = list(C=14, H=8, Cl=2))
The monoisotopic mass of 13C12 labeled DDE (an internal/surrogate standard for the quantification of DDE) is calculated using the list component
MonoisotopicMass(formula = list(C=2, H=8, Cl=4, x = 12), isotopes = list(x = 13.0033548378))
The isotopic distribution of DDE is simulated using
IsotopicDistribution. This function uses a binning approach based on
sample, where the probabilities are the natural abundances of the isotopes. The output of this function is a table, but it is often helpful to plot the distribution.
dde.dist <- IsotopicDistribution(formula = list(C=14, H=8, Cl=4)) dde.dist
# plot library(lattice) print(xyplot(percent ~ mz, data = dde.dist, type = "h", xlab = "m/z", ylab = "intensity (%)", main = "Isotopic Distribution, DDE") )
The similarity between two mass spectra can be examined using
SpectrumSimilarity. This function makes a head-to-tail plot of the spectra and calculates a mass spectral similarity score based on the dot product of the two mass-aligned intensity vectors. See the help file for an example.
The following functions assist in setting up multiple reaction monitoring (MRM) assays for the quantification of proteins. These assays require the selection of "signature peptides" (1,2).
Peptides resulting from a protein digestion with trypsin or pepsin can be prediced using
hsa <- Digest(example.sequence) head(hsa)
Next, peptides between 5 and 12 amino acids are selected (the range is somewhat arbitrary; small peptides may not be specific to the target protein, large peptides may have low sensitivity).
hsa.sub <- subset(hsa, nchar(hsa$peptide) >= 5 & nchar(hsa$peptide) <= 12) head(hsa.sub)
The filtered table can be used to screen a digest for the presence of these peptides by operating the triple quadrupole instrument in Q1 selected ion mode with Q2 and Q3 open. Assuming peptides YLYEIAR and AEFAEVSK are found (the number is kept small for this example), the next step is to determine their most intense MRM transitions. The b- and y-ions of the peptides are calculated using
transitions <- FragmentPeptide(c("YLYEIAR", "AEFAEVSK")) head(transitions)
This table can be used to screen the MRM transitions. The table is formatted to facilitate easy selection of the appropriate precursor ion and product ion charge states.
FragmentPepetide by default use
IAA=TRUE, specifying iodoacetylated cysteine.
Once the signature peptides for the target protein have been determined, MRM transitions for the internal standard peptides must be set up. Generally, either synthetic 13C-labeled peptides or 15N-labeled proteins are used. 15N-labeled proteins are added prior to the digestion to yield 15N-labeled peptides.
The MRM transitions for YLYEIAR with the terminal arginine 13C-labeled are calculated as follows.
c13.labeled <- FragmentPeptide("YLYEIAr", custom = list(code = "r", mass = MonoisotopicMass(formula = list(C=6, H=12, N=4, O=1), isotopes = list(C=13.0033548378)))) head(c13.labeled)
The MRM transitions for fully 15N-labeled YLYEIAR are calculated as follows. Note that
Digest do not label the nitrogens incorporated into the peptide due to iodoacetamide treatment (when IAA = TRUE and 15N = TRUE).
n15.labeled <- FragmentPeptide("YLYEIAR", N15 = TRUE) head(n15.labeled)
An acquired full-scan peptide spectrum can be plotted using
PeptideSpectrum. The peptide sequence must be known to determine the fragment ion identities (i.e., the function does not sequence the peptide de novo). This function was created to catalog full-scan mass spectra and double check that the most intense ions observed by MRM screens correspond to the most intense ions observed in full scan mode. See the help file for an example.
Before use as an internal standard, the 15N incorporation in the expressed protein should be measured. The incorporation should be high enough that the isotopic envelop of the internal standard signature peptide does not overlap with that of the corresponding unlabeled signature peptide.
The isotopic distribution of 15N labeled peptides is calculated using
theoretical.dist <- IsotopicDistributionN("YEVQGEVFTKPQLWP", incorp = 0.99) print(xyplot(percent ~ mz, data = theoretical.dist, type = "h", xlab = "m/z", ylab = "intensity (%)", main = "Theoretical Isotopic Distribution,\n YEVQGEVFTKPQLWP, 99% 15N") )
The theoretical distribution is compared to the measured distribution. In this example, visual inspection shows the incorporation in the peptide, and by extension the protein, is about 99% (although in a real experiment more than one peptide should be measured to confirm the results). See the
IsotopicDistributionN help file for an example calculating and plotting a range of 15N incorporations.
example.spectrum.labeled$percent <- with(example.spectrum.labeled, intensity / max(intensity) * 100) print(xyplot(percent ~ mz, data = example.spectrum.labeled, type = "l", xlab = "m/z", ylab = "intensity (%)", main = "Measured Isotopic Distribution,\n YEVQGEVFTKPQLWP") )
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.