ProteoWizard
IsotopeEnvelopeEstimator.hpp
Go to the documentation of this file.
1 //
2 // $Id: IsotopeEnvelopeEstimator.hpp 1638 2009-12-18 23:26:34Z chambm $
3 //
4 //
5 // Original author: Darren Kessner <darren@proteowizard.org>
6 //
7 // Copyright 2007 Spielberg Family Center for Applied Proteomics
8 // Cedars Sinai Medical Center, Los Angeles, California 90048
9 //
10 // Licensed under the Apache License, Version 2.0 (the "License");
11 // you may not use this file except in compliance with the License.
12 // You may obtain a copy of the License at
13 //
14 // http://www.apache.org/licenses/LICENSE-2.0
15 //
16 // Unless required by applicable law or agreed to in writing, software
17 // distributed under the License is distributed on an "AS IS" BASIS,
18 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 // See the License for the specific language governing permissions and
20 // limitations under the License.
21 //
22 
23 
24 #ifndef _ISOTOPEENVELOPEESTIMATOR_HPP_
25 #define _ISOTOPEENVELOPEESTIMATOR_HPP_
26 
27 
29 #include "Chemistry.hpp"
30 #include "IsotopeCalculator.hpp"
31 
32 
33 namespace pwiz {
34 namespace chemistry {
35 
36 
37 /// Class used for calculating a theoretical isotope envelope for a given mass,
38 /// based on an estimate of the elemental composition for that mass. For peptides,
39 /// the elemental composition estimate is based on the average elemental composition
40 /// of amino acid residues. Mass distributions are calculated on construction of the
41 /// object and cached for quick access.
43 {
44  public:
45 
47  {
48  enum Type {Peptide};
49 
51  unsigned int cacheSize;
52  double cacheMaxMass;
54  const IsotopeCalculator* isotopeCalculator; // must be valid during construction only
55 
57  : type(Peptide),
58  cacheSize(10000),
59  cacheMaxMass(100000),
60  normalization(IsotopeCalculator::NormalizeMass | // monoisotopic == 0
61  IsotopeCalculator::NormalizeAbundance), // norm_2 == 1
62  isotopeCalculator(0)
63  {}
64  };
65 
66  IsotopeEnvelopeEstimator(const Config& config);
68 
69  MassDistribution isotopeEnvelope(double mass) const;
70 
71  private:
72 
73  class Impl;
74  std::auto_ptr<Impl> impl_;
75 
76  // no copying
79 };
80 
81 
82 } // namespace chemistry
83 } // namespace pwiz
84 
85 
86 #endif // _ISOTOPEENVELOPEESTIMATOR_HPP_