Class: Ms::Mascot::Spectrum
- Inherits:
-
InSilico::Spectrum
- Object
- InSilico::Spectrum
- Ms::Mascot::Spectrum
- Defined in:
- lib/ms/mascot/spectrum.rb
Overview
Generates a Mascot-style theoretical spectrum. When the masses are set correctly, the theoretical spectrum will have zero error and full coverage (for whatever series are generated) when identified using Mascot.
Peptide Mass Error
The peptide mass calculated by Spectrum is inexact wrt to Mascot. Mascot uses some unknown algorithm to speed up it’s calculation and introduces some rounding/truncation error somewhere along the line. For instance, if you calculate the mass of a peptide by directly using the Unimod masses, it will NOT be the mass used by Mascot. For example:
def molecule_mass(c, h, n, o, s)
c * 12 + h * 1.007825035 + n * 14.003074 + o * 15.99491463 + s * 31.9720707
end
# Formula for MFSFVDLR: C(47)H(69)N(11)O(11)S(0)
# Formula for water: C(0) H(2) N(0) O(1) S(0)
molecule_mass(47, 69, 11, 11, 1) + molecule_mass(0, 2, 0, 1, 0)
# => 1013.500437745
Now by comparision:
mascot: 1013.500443
unimod: 1013.500437745
delta: 0.000005255
Similar or worse errors are typical and cannot be elimited by any known permutation (calculating from the residue masses, rounding etc). See gist.github.com/31241 for tasks that perform the calculation using various permutations.
One helpful note if you try to break the code, you can set the number of sig figs to 6 in mascot.dat (MassDecimalPlaces) and read the exact peptide mass numbers directly from a result page.
Spectrum calculates peptide mass using the masses in mass_map, ie the rounded residue masses.
Constant Summary collapse
- Element =
Constants::Libraries::Element
- DEFAULT_MASS_MAP =
A map of the default [monoisotopic, average] masses for a variety of constants used by Mascot. The element masses can be traced back to Unimod and the residues calculated by using the Unimod masses, then rounding.
– Taken from the configuration pages on the Hansen Lab server:
{}
Instance Attribute Summary collapse
-
#mass_map ⇒ Object
readonly
A hash of masses to use in place of the Element/Molecule masses normally used in calculating a spectrum.
Instance Method Summary collapse
-
#initialize(sequence, nterm = HYDROGEN, cterm = HYDROXIDE) ⇒ Spectrum
constructor
A new instance of Spectrum.
Constructor Details
#initialize(sequence, nterm = HYDROGEN, cterm = HYDROXIDE) ⇒ Spectrum
Returns a new instance of Spectrum.
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/ms/mascot/spectrum.rb', line 139 def initialize(sequence, nterm=HYDROGEN, cterm=HYDROXIDE) @mass_map = {} DEFAULT_MASS_MAP.each_pair do |const, (mono, avg)| @mass_map[const] = mono end super do |element| @mass_map[element] end [:a, :b, :c, :cladder].each {|key| mask_locations key, [-1] } [:x, :y, :Y, :z, :nladder].each {|key| mask_locations key, [0] } # # mask prolines # mask_locations :c, residue_locations['P'].collect {|i| i-1} # mask_locations :z, residue_locations['P'] end |
Instance Attribute Details
#mass_map ⇒ Object (readonly)
A hash of masses to use in place of the Element/Molecule masses normally used in calculating a spectrum. By default mass map contains the monoisotopic masses specified in DEFAULT_MASS_MAP.
Note: to generate a zero-error spectrum for Mascot, it is important that mass_map contains the exact masses used by the server. If your server uses non-default masses, override the values in DEFAULT_MASS_MAP to affect all instances, or just mass_map to affect a single instance. See:
http://your.mascot.server/x-cgi/ms-config.exe
To check the mass values for your server.
137 138 139 |
# File 'lib/ms/mascot/spectrum.rb', line 137 def mass_map @mass_map end |