ProteoWizard
PrecursorMassFilter.hpp
Go to the documentation of this file.
1 //
2 // $Id: PrecursorMassFilter.hpp 2469 2011-01-18 19:27:57Z chambm $
3 //
4 //
5 // Original author: Chris Paulse <cpaulse <a.t> systemsbiology.org>
6 //
7 // Copyright 2009 Institute for Systems Biology, Seattle, WA
8 //
9 // Licensed under the Apache License, Version 2.0 (the "License");
10 // you may not use this file except in compliance with the License.
11 // You may obtain a copy of the License at
12 //
13 // http://www.apache.org/licenses/LICENSE-2.0
14 //
15 // Unless required by applicable law or agreed to in writing, software
16 // distributed under the License is distributed on an "AS IS" BASIS,
17 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 // See the License for the specific language governing permissions and
19 // limitations under the License.
20 //
21 
22 
23 #ifndef _PRECURSORMASSFILTER_HPP_
24 #define _PRECURSORMASSFILTER_HPP_
25 
26 
30 
31 
32 namespace pwiz {
33 namespace analysis {
34 
35 // See Table 1 of
36 // "Post Acquisition ETD Spectral Processing of Increased Peptide Identifications" -- PUB 1
37 // by D. M. Good et al
38 //
39 // Experimental Section and Table 1 of
40 // "Analytical Utility of Small Neutral Losses from Reduced Species in Electron
41 // Capture Dissociation Studied Using SwedECD Database" by M. Falth et al -- PUB 2
42 //
43 // Cooper, H. J., Hakansson, K., Marshall, A.G., Hudgins, R. R., Haselmann, K. F.,
44 // Kjeldsen, F., Budnik, B. A. Polfer, N. C., Zubarev, R. A., Letter: the diagnostic value of
45 // amino acid side-chain losses in electron capture dissociation of polypeptides. Comment
46 // on: "Can the (M(.)-X) region in electron capture dissociation provide reliable information on
47 // amino acid composition of polypeptides?", Eur. J. Mass Spectrom. 8, 461-469 (2002). -- PUB 3
48  //17.027 Da NH3
49  //18.011 Da H2O
50  //27.995 Da CO
51  //32.026 Da CH3OH
52  //34.053 Da N2H6 (2xNH3)
53  //35.037 Da H4NO
54  //36.021 Da H4O2 (2xH2O)
55  //74.019 Da C3H6S
56  //82.053 Da C4H6N2
57  //86.072 Da C3H8N3
58  //99.068 Da C4H9N3
59  //101.095 Da C4H11N3
60  //108.058 Da C7H8O
61  //(131.074 Da C9H9N)
62  //44.037 Da CH4N2
63  //45.021 Da CH3NO
64  //46.006 Da CH2O2
65  //46.042 Da C2H6O
66  //59.037 Da C2H5NO
67  //59.048 Da CH5N3
68  //73.089 Da C4H11N
69 
70 #define NUM_NEUTRAL_LOSS_SPECIES 25
71 
72 // All entries are PUB 1 Table 1 except where noted
73 static const char* defaultNeutralLossFormulae[] = {
74  "H1", // ubiquitous neutral loss (PUB 2)
75  "N1H2", // ubiquitous neutral loss (PUB 2)
76  "N1H3",
77  "H2O1",
78  "C1O1",
79  "C1H4O1",
80  "N2H6", // 2 * NH3
81  "H5N1O1", // Typo in PUB 1 Table 1 NH3 + H2O
82  "H4O2", // 2 * H2O
83  "C1H3N2", // PUB 2 Table 1
84  "C1H4N2",
85  "C1H3N1O1",
86  "C1H2O2",
87  "C2H6O1",
88  "C2H5N1O1",
89  "C1H5N3",
90  "C2H4O2", // PUB 2 Table 1
91  "C4H11N1", // PUB 3
92  "C3H6S1", // PUB 3
93  "C4H6N2", // PUB 3
94  "C3H8N3", // PUB 3
95  "C4H9N3", // PUB 3
96  "C4H11N3", // PUB 3
97  "C7H8O1", // PUB 3
98  "C9H9N1" // PUB 3
99 };
100 
101 
103 
104 
106 {
107 
108  /// PrecursorMassFilter's parameters
110  {
111  Config(
112  MZTolerance tolerance = MZTolerance(0.1),
113  bool removePrecursor_ = true,
114  bool removeReducedChargePrecursors_ = true,
115  bool useBlanketFiltering_ = false,
116  int numNeutralLossSpecies = NUM_NEUTRAL_LOSS_SPECIES,
117  const char* neutralLossSpecies_[] = defaultNeutralLossFormulae
118  );
119 
120  MZTolerance matchingTolerance;
121 
122  /// remove the precursor m/z from the MS2 spectrum
124 
125  /** electron transfer in ETD or ECD creates intact precursors with reduced charge states
126  * this flag specifies their removal. */
128 
129  /** intact precursors can undergo loss of neutral molecules after the dissociation event
130  * this flag specifies the removal of these "neutral loss" ions (precursor mass - neutral loss mass)/charge */
131  std::vector<pwiz::chemistry::Formula> neutralLossSpecies;
133 
134  /// flag indicates neutral loss removal by applying a charge scaled 60 Da exclusion window below the charge reduced precursor
136  };
137 
138  PrecursorMassFilter(const Config&);
139  virtual void operator () (const pwiz::msdata::SpectrumPtr) const;
140  virtual void describe(pwiz::msdata::ProcessingMethod&) const;
141 
143 
144  private:
145  struct Impl;
146  boost::shared_ptr<Impl> impl_;
147 };
148 
149 } // namespace analysis
150 } // namespace pwiz
151 
152 
153 #endif // _PRECURSORMASSFILTER_HPP_