ProteoWizard
PeakData.hpp
Go to the documentation of this file.
1 //
2 // $Id$
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 #ifndef _PEAKDATA_HPP_
24 #define _PEAKDATA_HPP_
25 
26 
33 #include "boost/shared_ptr.hpp"
34 #include <vector>
35 #include <string>
36 
37 
38 namespace pwiz {
39 namespace data {
40 namespace peakdata {
41 
42 
43 using namespace pwiz::util;
44 using namespace pwiz::minimxml;
45 using namespace minimxml::SAXParser;
46 
47 
50 
51 
53 {
54  int id;
55 
56  double mz;
57  double retentionTime;
58 
59  double intensity; // peak height
60  double area; // sum/total intensity
61  double error; // error in model fit
62 
63  std::vector<pwiz::math::OrderedPair> data;
64 
65  // optional attributes
66 
67  enum Attribute
68  {
71  Attribute_Decay
72  };
73 
74  typedef std::map<Attribute, double> Attributes;
76 
77  Peak(double _mz = 0, double _retentionTime = 0);
78 
79  double getAttribute(Attribute attribute) const;
80 
81  bool operator==(const Peak& that) const;
82  bool operator!=(const Peak& that) const;
83 
84  void write(minimxml::XMLWriter& writer) const;
85  void read(std::istream& is);
86 };
87 
88 
90 {
92  HandlerPeak(Peak* _peak = 0) : peak(_peak)
93  {
94  parseCharacters = true;
95  autoUnescapeCharacters = false;
96  }
97 
98  virtual Status startElement(const std::string& name,
99  const Attributes& attributes,
101 
104 };
105 
106 
107 PWIZ_API_DECL std::ostream& operator<<(std::ostream& os, const Peak& peak);
108 PWIZ_API_DECL std::istream& operator>>(std::istream& is, Peak& peak);
109 
110 
112 {
114  int charge;
115  double score;
116  std::vector<Peak> peaks;
117 
118  PeakFamily() : mzMonoisotopic(0), charge(0), score(0) {}
119  double sumAmplitude() const {return 0;}
120  double sumArea() const {return 0;}
121 
122  void write(minimxml::XMLWriter& writer) const;
123  void read(std::istream& is);
124 
125  bool operator==(const PeakFamily& that) const;
126  bool operator!=(const PeakFamily& that) const;
127 };
128 
129 
130 PWIZ_API_DECL std::ostream& operator<<(std::ostream& os, const PeakFamily& peakFamily);
131 PWIZ_API_DECL std::istream& operator>>(std::istream& is, PeakFamily& peakFamily);
132 
133 
135 {
136  size_t index;
137  std::string nativeID;
138  int scanNumber; // TODO: remove
142  std::vector<PeakFamily> peakFamilies;
143 
144  Scan() : index(0), scanNumber(0), retentionTime(0), observationDuration(0) {}
145 
146  void write(minimxml::XMLWriter& writer) const;
147  void read(std::istream& is);
148 
149  bool operator==(const Scan& scan) const;
150  bool operator!=(const Scan& scan) const;
151 };
152 
153 
154 PWIZ_API_DECL std::ostream& operator<<(std::ostream& os, const Scan& scan);
155 PWIZ_API_DECL std::istream& operator>>(std::istream& is, Scan& scan);
156 
157 
159 {
160 
161  std::string name;
162  std::string version;
163  std::string source;
164 
166  {
167  std::string name;
168  std::string value;
169 
170  Parameter() : name(""), value("") {};
171  Parameter(std::string name_, std::string value_) : name(name_), value(value_) {}
172  void write(minimxml::XMLWriter& xmlWriter) const;
173  void read(std::istream& is);
174  bool operator==(const Parameter& that) const;
175  bool operator!=(const Parameter& that) const;
176 
177  };
178 
179  std::vector<Parameter> parameters;
180 
181  Software() : name(""), version(""), source(""), parameters(0) {}
182  void write(minimxml::XMLWriter& xmlWriter) const;
183  void read(std::istream& is);
184 
185  bool operator==(const Software& that) const;
186  bool operator!=(const Software& that) const;
187 };
188 
189 
191 {
192  std::string sourceFilename;
194  std::vector<Scan> scans;
195 
196  void write(pwiz::minimxml::XMLWriter& xmlWriter) const;
197  void read(std::istream& is);
198 
199  bool operator==(const PeakData& that) const;
200  bool operator!=(const PeakData& that) const;
201 };
202 
203 
204 PWIZ_API_DECL std::ostream& operator<<(std::ostream& os, const PeakData& pd);
205 PWIZ_API_DECL std::istream& operator>>(std::istream& is, PeakData& pd);
206 
207 
208 ///
209 /// struct for an eluted peak (PEAK ELution)
210 ///
212 {
213  // metadata
214  double mz;
216  double maxIntensity;
218  double mzVariance;
219 
220  // peak data
221  std::vector<Peak> peaks;
222 
223  // construction
225  Peakel(const Peak& peak);
226 
227  /// recalculates all metadata based on peak data
229 
230  // retention times grabbed from peak data; assume peaks are ordered by retention time
231  double retentionTimeMin() const;
232  double retentionTimeMax() const;
233 
234  void write(pwiz::minimxml::XMLWriter& xmlWriter) const;
235  void read(std::istream& is);
236 
237  bool operator==(const Peakel& that) const;
238  bool operator!=(const Peakel& that) const;
239 };
240 
241 
242 typedef boost::shared_ptr<Peakel> PeakelPtr;
243 
244 
246 {
248  HandlerPeakel(Peakel* _peakel = 0) : peakel(_peakel){}
249  virtual Status startElement(const std::string& name, const Attributes& attributes, stream_offset position);
250 
251  private:
253  size_t _peakCount;
254 };
255 
256 
257 PWIZ_API_DECL std::ostream& operator<<(std::ostream& os, const Peakel& peakel);
258 PWIZ_API_DECL std::istream& operator>>(std::istream& is, Peakel& peakel);
259 
260 
262 {
265 
266  std::string id; // assigned by feature detection, for easier lookup
267  double mz;
269  int charge;
271  double rtVariance;
272  double score;
273  double error;
274  std::vector<PeakelPtr> peakels;
275 
277 
278  // retention time range calculation based on first two Peakels
279  double retentionTimeMin() const;
280  double retentionTimeMax() const;
281 
282  void write(pwiz::minimxml::XMLWriter& xmlWriter) const;
283  void read(std::istream& is);
284 
285  bool operator==(const Feature& that) const;
286  bool operator!=(const Feature& that) const;
287 
288  // note: copy/assignment are shallow copy (same peakels)
289 };
290 
291 
292 typedef boost::shared_ptr<Feature> FeaturePtr;
293 
294 
295 struct HandlerFeature : public SAXParser::Handler // included in header file for accession by MatchData
296 {
298  HandlerFeature(Feature* _feature = 0) : feature(_feature){}
299 
300  virtual Status startElement(const std::string& name, const Attributes& attributes, stream_offset position);
301 
302  private:
304  size_t _peakelCount;
305 };
306 
307 
308 PWIZ_API_DECL std::ostream& operator<<(std::ostream& os, const Feature& feature);
309 PWIZ_API_DECL std::istream& operator>>(std::istream& is, Feature& feature);
310 
311 
313 {
315  std::vector<FeaturePtr> features;
316 
317  void write(pwiz::minimxml::XMLWriter& xmlWriter) const;
318  void read(std::istream& is);
319 
320 private:
321 
324 
325 };
326 
327 
328 } // namespace peakdata
329 } // namespace data
330 } // namespace pwiz
331 
332 #endif // _PEAKDATA_HPP_
333 
pwiz::data::peakdata::Feature::retentionTime
double retentionTime
Definition: PeakData.hpp:268
pwiz::data::peakdata::FeatureFile::FeatureFile
FeatureFile(FeatureFile &)
pwiz::data::peakdata::Software::Parameter::operator==
bool operator==(const Parameter &that) const
pwiz::data::peakdata::Peak::data
std::vector< pwiz::math::OrderedPair > data
Definition: PeakData.hpp:63
pwiz::data::peakdata::Software::Parameter::write
void write(minimxml::XMLWriter &xmlWriter) const
pwiz::data::peakdata::PeakData
Definition: PeakData.hpp:191
pwiz::minimxml::XMLWriter
The XMLWriter class provides simple, tag-level XML syntax writing.
Definition: XMLWriter.hpp:48
pwiz::data::peakdata::Peak::error
double error
Definition: PeakData.hpp:61
pwiz::data::peakdata::PeakDataFormatVersion_Major
const int PeakDataFormatVersion_Major
Definition: PeakData.hpp:48
pwiz::data::peakdata::PeakFamily::operator!=
bool operator!=(const PeakFamily &that) const
pwiz::data::CalibrationParameters
Definition: CalibrationParameters.hpp:46
pwiz::data::peakdata::Peakel::retentionTimeMin
double retentionTimeMin() const
pwiz::data::peakdata::FeatureFile::write
void write(pwiz::minimxml::XMLWriter &xmlWriter) const
pwiz::data::peakdata::FeaturePtr
boost::shared_ptr< Feature > FeaturePtr
Definition: PeakData.hpp:292
pwiz::data::peakdata::Peak
Definition: PeakData.hpp:53
pwiz::data::peakdata::Peakel::retentionTime
double retentionTime
Definition: PeakData.hpp:215
pwiz::data::peakdata::HandlerFeature::_handlerPeakel
HandlerPeakel _handlerPeakel
Definition: PeakData.hpp:303
pwiz::data::peakdata::Feature::Feature
Feature()
pwiz::minimxml::SAXParser::Handler
SAX event handler interface.
Definition: SAXParser.hpp:316
pwiz
Definition: ChromatogramList_Filter.hpp:36
pwiz::data::peakdata::HandlerFeature::startElement
virtual Status startElement(const std::string &name, const Attributes &attributes, stream_offset position)
pwiz::data::peakdata::HandlerPeakel::peakel
Peakel * peakel
Definition: PeakData.hpp:247
pwiz::data::peakdata::Feature::mz
double mz
Definition: PeakData.hpp:267
pwiz::data::peakdata::PeakFamily::sumAmplitude
double sumAmplitude() const
Definition: PeakData.hpp:119
pwiz::data::peakdata::Software::operator==
bool operator==(const Software &that) const
pwiz::data::peakdata::Feature::score
double score
Definition: PeakData.hpp:272
pwiz::data::peakdata::PeakFamily::write
void write(minimxml::XMLWriter &writer) const
pwiz::data::peakdata::Scan::retentionTime
double retentionTime
Definition: PeakData.hpp:139
pwiz::data::peakdata::PeakFamily::operator==
bool operator==(const PeakFamily &that) const
pwiz::data::peakdata::Software::parameters
std::vector< Parameter > parameters
Definition: PeakData.hpp:179
pwiz::data::peakdata::Feature::retentionTimeMax
double retentionTimeMax() const
pwiz::data::peakdata::Peak::id
int id
Definition: PeakData.hpp:54
pwiz::data::peakdata::PeakFamily
Definition: PeakData.hpp:112
pwiz::data::peakdata::Software
Definition: PeakData.hpp:159
pwiz::data::peakdata::Feature::calculateMetadata
void calculateMetadata()
pwiz::data::peakdata::Scan::observationDuration
double observationDuration
Definition: PeakData.hpp:140
pwiz::data::peakdata::Peak::Peak
Peak(double _mz=0, double _retentionTime=0)
pwiz::data::peakdata::Scan::operator==
bool operator==(const Scan &scan) const
pwiz::data::peakdata::Scan
Definition: PeakData.hpp:135
pwiz::data::peakdata::Peakel::retentionTimeMax
double retentionTimeMax() const
pwiz::data::peakdata::FeatureFile::FeatureFile
FeatureFile()
Definition: PeakData.hpp:314
pwiz::msdata::id::value
PWIZ_API_DECL std::string value(const std::string &id, const std::string &name)
convenience function to extract a named value from an id string
pwiz::data::peakdata::Scan::nativeID
std::string nativeID
Definition: PeakData.hpp:137
SAXParser.hpp
PWIZ_API_DECL
#define PWIZ_API_DECL
Definition: Export.hpp:32
pwiz::data::peakdata::Feature::error
double error
Definition: PeakData.hpp:273
pwiz::data::peakdata::Software::Parameter::read
void read(std::istream &is)
pwiz::data::peakdata::FeatureFile
Definition: PeakData.hpp:313
pwiz::data::peakdata::HandlerFeature::feature
Feature * feature
Definition: PeakData.hpp:297
pwiz::data::peakdata::Peakel
struct for an eluted peak (PEAK ELution)
Definition: PeakData.hpp:212
pwiz::data::peakdata::Software::Parameter::name
std::string name
Definition: PeakData.hpp:167
pwiz::data::peakdata::PeakFamily::sumArea
double sumArea() const
Definition: PeakData.hpp:120
pwiz::data::peakdata::operator>>
PWIZ_API_DECL std::istream & operator>>(std::istream &is, Peak &peak)
pwiz::data::peakdata::Software::write
void write(minimxml::XMLWriter &xmlWriter) const
pwiz::data::peakdata::HandlerPeak::characters
virtual Status characters(const SAXParser::saxstring &text, stream_offset position)
pwiz::data::peakdata::Peakel::read
void read(std::istream &is)
pwiz::data::peakdata::Peakel::Peakel
Peakel(const Peak &peak)
Export.hpp
pwiz::data::peakdata::Peakel::operator!=
bool operator!=(const Peakel &that) const
pwiz::data::peakdata::Scan::operator!=
bool operator!=(const Scan &scan) const
OrderedPair.hpp
pwiz::util
Definition: almost_equal.hpp:33
pwiz::data::peakdata::PeakFamily::peaks
std::vector< Peak > peaks
Definition: PeakData.hpp:116
pwiz::data::peakdata::FeatureFile::read
void read(std::istream &is)
pwiz::data::peakdata::HandlerPeak::HandlerPeak
HandlerPeak(Peak *_peak=0)
Definition: PeakData.hpp:92
pwiz::data::peakdata::Peakel::operator==
bool operator==(const Peakel &that) const
pwiz::data::peakdata::HandlerFeature
Definition: PeakData.hpp:296
pwiz::data::peakdata::Peak::intensity
double intensity
Definition: PeakData.hpp:59
pwiz::data::peakdata::FeatureFile::features
std::vector< FeaturePtr > features
Definition: PeakData.hpp:315
pwiz::minimxml::SAXParser::Handler::Status
Handler returns the Status struct as a means of changing the parser's behavior.
Definition: SAXParser.hpp:333
pwiz::data::peakdata::HandlerPeak::peak
Peak * peak
Definition: PeakData.hpp:91
XMLWriter.hpp
pwiz::data::peakdata::PeakelPtr
boost::shared_ptr< Peakel > PeakelPtr
Definition: PeakData.hpp:242
pwiz::data::peakdata::Peakel::calculateMetadata
void calculateMetadata()
recalculates all metadata based on peak data
pwiz::data::peakdata::Peakel::write
void write(pwiz::minimxml::XMLWriter &xmlWriter) const
pwiz::data::peakdata::Peak::operator!=
bool operator!=(const Peak &that) const
pwiz::minimxml::SAXParser::Handler::Attributes
Definition: SAXParser.hpp:352
pwiz::data::peakdata::FeatureFile::operator=
FeatureFile operator=(FeatureFile &)
pwiz::data::peakdata::Software::operator!=
bool operator!=(const Software &that) const
pwiz::data::peakdata::HandlerPeak::startElement
virtual Status startElement(const std::string &name, const Attributes &attributes, stream_offset position)
pwiz::data::peakdata::Peakel::mz
double mz
Definition: PeakData.hpp:214
pwiz::data::peakdata::PeakData::operator!=
bool operator!=(const PeakData &that) const
pwiz::data::peakdata::Scan::read
void read(std::istream &is)
pwiz::data::peakdata::Peak::retentionTime
double retentionTime
Definition: PeakData.hpp:57
pwiz::minimxml
Definition: SAXParser.hpp:43
pwiz::data::peakdata::Peak::mz
double mz
Definition: PeakData.hpp:56
pwiz::data::peakdata::Feature::id
std::string id
Definition: PeakData.hpp:266
pwiz::data::peakdata::Peakel::mzVariance
double mzVariance
Definition: PeakData.hpp:218
pwiz::data::peakdata::Software::name
std::string name
Definition: PeakData.hpp:161
pwiz::data::unimod::position
PWIZ_API_DECL Position position(CVID cvid=CVID_Unknown)
returns a Position corresponding to one of the following CVIDs: CVID_Unknown: Position::Anywhere MS_m...
pwiz::data::peakdata::HandlerPeakel
Definition: PeakData.hpp:246
pwiz::data::peakdata::Scan::peakFamilies
std::vector< PeakFamily > peakFamilies
Definition: PeakData.hpp:142
pwiz::data::peakdata::Peak::Attribute_Phase
@ Attribute_Phase
Definition: PeakData.hpp:70
pwiz::data::peakdata::Scan::write
void write(minimxml::XMLWriter &writer) const
pwiz::proteome::AminoAcid::Info::record
PWIZ_API_DECL const Record & record(Type type)
returns the amino acid's Record by type
pwiz::util::MSIHandler::Record
Definition: MSIHandler.hpp:39
pwiz::data::peakdata::Software::version
std::string version
Definition: PeakData.hpp:162
pwiz::data::peakdata::PeakFamily::score
double score
Definition: PeakData.hpp:115
pwiz::data::peakdata::PeakFamily::PeakFamily
PeakFamily()
Definition: PeakData.hpp:118
pwiz::data::peakdata::Feature::charge
int charge
Definition: PeakData.hpp:269
pwiz::data::peakdata::Software::Parameter::Parameter
Parameter(std::string name_, std::string value_)
Definition: PeakData.hpp:171
pwiz::data::peakdata::PeakFamily::read
void read(std::istream &is)
pwiz::data::peakdata::Feature
Definition: PeakData.hpp:262
pwiz::data::peakdata::Peak::write
void write(minimxml::XMLWriter &writer) const
pwiz::data::peakdata::PeakData::software
Software software
Definition: PeakData.hpp:193
pwiz::data::peakdata::Peakel::maxIntensity
double maxIntensity
Definition: PeakData.hpp:216
pwiz::data::peakdata::PeakFamily::charge
int charge
Definition: PeakData.hpp:114
pwiz::data::peakdata::Feature::read
void read(std::istream &is)
pwiz::data::peakdata::Software::source
std::string source
Definition: PeakData.hpp:163
pwiz::data::peakdata::Feature::retentionTimeMin
double retentionTimeMin() const
pwiz::minimxml::SAXParser::saxstring
Definition: SAXParser.hpp:61
pwiz::data::peakdata::Peak::getAttribute
double getAttribute(Attribute attribute) const
pwiz::data::peakdata::Peak::read
void read(std::istream &is)
pwiz::data::peakdata::Scan::calibrationParameters
CalibrationParameters calibrationParameters
Definition: PeakData.hpp:141
pwiz::data::peakdata::HandlerFeature::_peakelCount
size_t _peakelCount
Definition: PeakData.hpp:304
pwiz::data::peakdata::Peak::Attribute_Frequency
@ Attribute_Frequency
Definition: PeakData.hpp:69
pwiz::data::peakdata::PeakData::operator==
bool operator==(const PeakData &that) const
pwiz::data::peakdata::operator<<
PWIZ_API_DECL std::ostream & operator<<(std::ostream &os, const Peak &peak)
pwiz::data::peakdata::PeakData::write
void write(pwiz::minimxml::XMLWriter &xmlWriter) const
pwiz::data::peakdata::HandlerPeak
Definition: PeakData.hpp:90
pwiz::data::peakdata::Peak::area
double area
Definition: PeakData.hpp:60
pwiz::data::peakdata::Scan::index
size_t index
Definition: PeakData.hpp:136
pwiz::data::peakdata::Software::Parameter
Definition: PeakData.hpp:166
pwiz::data::peakdata::Feature::operator!=
bool operator!=(const Feature &that) const
pwiz::data::peakdata::Scan::Scan
Scan()
Definition: PeakData.hpp:144
pwiz::data::peakdata::Peakel::peaks
std::vector< Peak > peaks
Definition: PeakData.hpp:221
pwiz::data::peakdata::Peak::operator==
bool operator==(const Peak &that) const
pwiz::data::peakdata::Feature::rtVariance
double rtVariance
Definition: PeakData.hpp:271
CalibrationParameters.hpp
pwiz::data::peakdata::Software::Software
Software()
Definition: PeakData.hpp:181
pwiz::data::peakdata::Feature::peakels
std::vector< PeakelPtr > peakels
Definition: PeakData.hpp:274
pwiz::data::peakdata::Peakel::totalIntensity
double totalIntensity
Definition: PeakData.hpp:217
pwiz::data::peakdata::HandlerFeature::HandlerFeature
HandlerFeature(Feature *_feature=0)
Definition: PeakData.hpp:298
pwiz::data::peakdata::Feature::operator==
bool operator==(const Feature &that) const
pwiz::data::peakdata::HandlerPeakel::_handlerPeak
HandlerPeak _handlerPeak
Definition: PeakData.hpp:252
pwiz::data::peakdata::Peak::Attribute
Attribute
Definition: PeakData.hpp:68
pwiz::data::peakdata::PeakFamily::mzMonoisotopic
double mzMonoisotopic
Definition: PeakData.hpp:113
pwiz::data::peakdata::PeakData::scans
std::vector< Scan > scans
Definition: PeakData.hpp:194
pwiz::data::peakdata::Peak::Attributes
std::map< Attribute, double > Attributes
Definition: PeakData.hpp:74
pwiz::data::peakdata::HandlerPeakel::startElement
virtual Status startElement(const std::string &name, const Attributes &attributes, stream_offset position)
pwiz::data::peakdata::Scan::scanNumber
int scanNumber
Definition: PeakData.hpp:138
pwiz::data::peakdata::Peakel::Peakel
Peakel()
pwiz::data::peakdata::HandlerPeakel::_peakCount
size_t _peakCount
Definition: PeakData.hpp:253
pwiz::data::peakdata::PeakDataFormatVersion_Minor
const int PeakDataFormatVersion_Minor
Definition: PeakData.hpp:49
pwiz::minimxml::SAXParser::Handler::stream_offset
boost::iostreams::stream_offset stream_offset
Definition: SAXParser.hpp:583
pwiz::data::peakdata::PeakData::sourceFilename
std::string sourceFilename
Definition: PeakData.hpp:192
pwiz::data::peakdata::Software::Parameter::value
std::string value
Definition: PeakData.hpp:168
pwiz::data::peakdata::Software::Parameter::Parameter
Parameter()
Definition: PeakData.hpp:170
pwiz::data::peakdata::HandlerPeakel::HandlerPeakel
HandlerPeakel(Peakel *_peakel=0)
Definition: PeakData.hpp:248
MSIHandler.hpp
pwiz::data::peakdata::PeakData::read
void read(std::istream &is)
pwiz::data::peakdata::Peak::attributes
Attributes attributes
Definition: PeakData.hpp:75
pwiz::data::peakdata::Software::read
void read(std::istream &is)
pwiz::data::peakdata::Feature::write
void write(pwiz::minimxml::XMLWriter &xmlWriter) const
pwiz::data::peakdata::Feature::totalIntensity
double totalIntensity
Definition: PeakData.hpp:270
pwiz::data::peakdata::Feature::Feature
Feature(const MSIHandler::Record &record)
pwiz::data::peakdata::Software::Parameter::operator!=
bool operator!=(const Parameter &that) const