OpenMS
TargetedExperimentHelper.h
Go to the documentation of this file.
1 // --------------------------------------------------------------------------
2 // OpenMS -- Open-Source Mass Spectrometry
3 // --------------------------------------------------------------------------
4 // Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
5 // ETH Zurich, and Freie Universitaet Berlin 2002-2023.
6 //
7 // This software is released under a three-clause BSD license:
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright
11 // notice, this list of conditions and the following disclaimer in the
12 // documentation and/or other materials provided with the distribution.
13 // * Neither the name of any author or any participating institution
14 // may be used to endorse or promote products derived from this software
15 // without specific prior written permission.
16 // For a full list of authors, refer to the file AUTHORS.
17 // --------------------------------------------------------------------------
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 // ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
22 // INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 // --------------------------------------------------------------------------
31 // $Maintainer: Timo Sachsenberg $
32 // $Authors: Andreas Bertsch $
33 // --------------------------------------------------------------------------
34 
35 #pragma once
36 
38 
40 #include <OpenMS/CONCEPT/Types.h>
42 #include <OpenMS/CONCEPT/Macros.h>
43 
45 #include <OpenMS/METADATA/CVTerm.h>
49 
50 #include <boost/numeric/conversion/cast.hpp>
51 
52 namespace OpenMS
53 {
54 
61  namespace TargetedExperimentHelper
62  {
63 
64  struct Configuration :
65  public CVTermList
66  {
69  std::vector<CVTermList> validations;
70  };
71 
72  struct CV
73  {
74  CV(const String & new_id, const String & new_fullname, const String & new_version, const String & new_URI) :
75  id(new_id),
76  fullname(new_fullname),
77  version(new_version),
78  URI(new_URI)
79  {
80 
81  }
82 
87 
88  bool operator==(const CV & cv) const
89  {
90  return id == cv.id &&
91  fullname == cv.fullname &&
92  version == cv.version &&
93  URI == cv.URI;
94  }
95 
96  };
97 
98  struct Protein :
99  public CVTermList
100  {
101  Protein() = default;
102  bool operator==(const Protein& rhs) const
103  {
104  return CVTermList::operator==(rhs) &&
105  id == rhs.id &&
106  sequence == rhs.sequence;
107  }
108 
111 
112  };
113 
124  class OPENMS_DLLAPI RetentionTime :
125  public CVTermListInterface
126  {
127 public:
128 
129  enum class RTUnit : std::int8_t
130  {
131  SECOND = 0,
132  MINUTE,
133  UNKNOWN,
134  SIZE_OF_RTUNIT
135  };
136 
137  enum class RTType : std::int8_t
138  {
139  LOCAL = 0,
140  NORMALIZED,
141  PREDICTED,
142  HPINS,
143  IRT,
144  UNKNOWN,
145  SIZE_OF_RTTYPE
146  };
147 
150  software_ref(""),
151  retention_time_unit(RTUnit::SIZE_OF_RTUNIT),
152  retention_time_type(RTType::SIZE_OF_RTTYPE),
153  retention_time_set_(false),
154  retention_time_(0.0)
155  // retention_time_width(0.0),
156  // retention_time_lower(0.0),
157  // retention_time_upper(0.0)
158  {
159  }
160 
161  RetentionTime(const RetentionTime &) = default;
162  RetentionTime(RetentionTime &&) noexcept = default;
163  virtual ~RetentionTime() = default;
164  RetentionTime & operator=(const RetentionTime &) & = default;
165  RetentionTime & operator=(RetentionTime &&) & = default;
166 
167  bool operator==(const RetentionTime & rhs) const
168  {
169  return CVTermListInterface::operator==(rhs) &&
170  software_ref == rhs.software_ref &&
171  retention_time_unit == rhs.retention_time_unit &&
172  retention_time_type == rhs.retention_time_type &&
173  retention_time_set_ == rhs.retention_time_set_ &&
174  retention_time_ == rhs.retention_time_;
175  }
176 
177  bool isRTset() const
178  {
179  return retention_time_set_;
180  }
181  void setRT(double rt)
182  {
183  retention_time_ = rt;
184  retention_time_set_ = true;
185  }
186  double getRT() const
187  {
188  OPENMS_PRECONDITION(isRTset(), "RT needs to be set")
189  return retention_time_;
190  }
191 
195 
196 private:
197 
200  // double retention_time_width;
201  // double retention_time_lower;
202  // double retention_time_upper;
203  };
204 
210  class OPENMS_DLLAPI PeptideCompound :
211  public CVTermList
212  {
213 public:
214  PeptideCompound() = default;
215  PeptideCompound(const PeptideCompound &) = default;
216  PeptideCompound(PeptideCompound &&) noexcept = default;
217  PeptideCompound & operator=(const PeptideCompound &) & = default;
218  PeptideCompound & operator=(PeptideCompound &&) & = default;
219 
220  bool operator==(const PeptideCompound & rhs) const
221  {
222  return CVTermList::operator==(rhs) &&
223  rts == rhs.rts &&
224  id == rhs.id &&
225  charge_ == rhs.charge_ &&
226  charge_set_ == rhs.charge_set_;
227  }
228 
230  void setChargeState(int charge)
231  {
232  charge_ = charge;
233  charge_set_ = true;
234  }
235 
237  bool hasCharge() const
238  {
239  return charge_set_;
240  }
241 
243  int getChargeState() const
244  {
245  OPENMS_PRECONDITION(charge_set_, "Cannot return charge which was never set")
246  return charge_;
247  }
248 
250  void setDriftTime(double dt)
251  {
252  drift_time_ = dt;
253  }
254 
256  double getDriftTime() const
257  {
258  return drift_time_;
259  }
260 
262 
264  bool hasRetentionTime() const
265  {
266  return (!rts.empty() && rts[0].isRTset());
267  }
268 
273  double getRetentionTime() const
274  {
275  if (!hasRetentionTime())
276  {
277  throw Exception::IllegalArgument(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION,
278  "No retention time information available");
279  }
280  return rts[0].getRT();
281  }
282 
285  {
286  if (!hasRetentionTime())
287  {
288  throw Exception::IllegalArgument(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION,
289  "No retention time information available");
290  }
291  return rts[0].retention_time_type;
292  }
293 
296  {
297  if (!hasRetentionTime())
298  {
299  throw Exception::IllegalArgument(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION,
300  "No retention time information available");
301  }
302  return rts[0].retention_time_unit;
303  }
305 
307  std::vector<RetentionTime> rts;
308 
309 protected:
310  int charge_{0};
311  bool charge_set_{false};
312  double drift_time_{-1};
313  };
314 
321  class OPENMS_DLLAPI Compound :
322  public PeptideCompound
323  {
324 public:
325 
327  theoretical_mass(0.0)
328  {
329  }
330 
331  Compound(const Compound &) = default;
332  Compound(Compound &&) noexcept = default;
333  Compound & operator=(const Compound &) & = default;
334  Compound & operator=(Compound &&) & = default;
335 
336  bool operator==(const Compound & rhs) const
337  {
338  return PeptideCompound::operator==(rhs) &&
339  molecular_formula == rhs.molecular_formula &&
340  smiles_string == rhs.smiles_string &&
341  theoretical_mass == rhs.theoretical_mass;
342  }
343 
347 
348 protected:
349 
350  };
351 
358  class OPENMS_DLLAPI Peptide :
359  public PeptideCompound
360  {
361 public:
362  struct Modification :
363  public CVTermListInterface
364  {
369 
372  location(-1),
373  unimod_id(-1)
374  {
375  }
376 
377  };
378 
379  Peptide() = default;
380  Peptide(const Peptide &) = default;
381  Peptide(Peptide &&) noexcept = default;
382  Peptide & operator=(const Peptide &) & = default;
383  Peptide & operator=(Peptide &&) & = default;
384 
385  bool operator==(const Peptide & rhs) const
386  {
387  return PeptideCompound::operator==(rhs) &&
388  protein_refs == rhs.protein_refs &&
389  evidence == rhs.evidence &&
390  sequence == rhs.sequence &&
391  mods == rhs.mods &&
392  peptide_group_label_ == rhs.peptide_group_label_;
393  }
394 
406  void setPeptideGroupLabel(const String & label)
407  {
408  peptide_group_label_ = label;
409  }
410 
413  {
414  return peptide_group_label_;
415  }
417 
418  std::vector<String> protein_refs;
421  std::vector<Modification> mods;
422 
423 protected:
425  };
426 
427  struct OPENMS_DLLAPI Contact :
428  public CVTermList
429  {
431  CVTermList()
432  {
433  }
434 
435  bool operator==(const Contact & rhs) const
436  {
437  return CVTermList::operator==(rhs) &&
438  id == rhs.id;
439  }
440 
442  };
443 
444  struct OPENMS_DLLAPI Publication :
445  public CVTermList
446  {
448  CVTermList()
449  {
450  }
451 
452  bool operator==(const Publication & rhs) const
453  {
454  return CVTermList::operator==(rhs) &&
455  id == rhs.id;
456  }
457 
459  };
460 
461  struct OPENMS_DLLAPI Instrument :
462  public CVTermList
463  {
465  CVTermList()
466  {
467  }
468 
469  bool operator==(const Instrument & rhs) const
470  {
471  return CVTermList::operator==(rhs) &&
472  id == rhs.id;
473  }
474 
476  };
477 
478  struct OPENMS_DLLAPI Prediction :
479  public CVTermList
480  {
482  CVTermList()
483  {
484  }
485 
486  bool operator==(const Prediction & rhs) const
487  {
488  return CVTermList::operator==(rhs) &&
489  contact_ref == rhs.contact_ref &&
490  software_ref == rhs.software_ref;
491  }
492 
495  };
496 
503  struct OPENMS_DLLAPI Interpretation :
504  public CVTermListInterface
505  {
506 
507  /*
508  enum ResidueType
509  {
510  Full = 0, // with N-terminus and C-terminus
511  Internal, // internal, without any termini
512  NTerminal, // only N-terminus
513  CTerminal, // only C-terminus
514  AIon, // MS:1001229 N-terminus up to the C-alpha/carbonyl carbon bond
515  BIon, // MS:1001224 N-terminus up to the peptide bond
516  CIon, // MS:1001231 N-terminus up to the amide/C-alpha bond
517  XIon, // MS:1001228 amide/C-alpha bond up to the C-terminus
518  YIon, // MS:1001220 peptide bond up to the C-terminus
519  ZIon, // MS:1001230 C-alpha/carbonyl carbon bond
520  Precursor, // MS:1001523 Precursor ion
521  BIonMinusH20, // MS:1001222 b ion without water
522  YIonMinusH20, // MS:1001223 y ion without water
523  BIonMinusNH3, // MS:1001232 b ion without ammonia
524  YIonMinusNH3, // MS:1001233 y ion without ammonia
525  NonIdentified, // MS:1001240 Non-identified ion
526  Unannotated, // no stored annotation
527  SizeOfResidueType
528  };
529  */
530 
532 
533  unsigned char ordinal;
534  unsigned char rank;
536 
537  // Constructor
540  ordinal(0),
541  rank(0),
542  iontype(Residue::Unannotated) // Unannotated does not imply any MS OBO term
543  {
544  }
545 
549  bool operator==(const Interpretation & rhs) const
550  {
551  return CVTermListInterface::operator==(rhs) &&
552  ordinal == rhs.ordinal &&
553  rank == rhs.rank &&
554  iontype == rhs.iontype;
555  }
556 
557  bool operator!=(const Interpretation & rhs) const
558  {
559  return !(operator==(rhs));
560  }
562 
563  };
564 
571  struct OPENMS_DLLAPI TraMLProduct :
572  public CVTermListInterface
573  {
574  TraMLProduct() = default;
575  bool operator==(const TraMLProduct & rhs) const
576  {
577  return CVTermListInterface::operator==(rhs) &&
578  charge_ == rhs.charge_ &&
579  charge_set_ == rhs.charge_set_ &&
580  mz_ == rhs.mz_ &&
581  configuration_list_ == rhs.configuration_list_ &&
582  interpretation_list_ == rhs.interpretation_list_;
583  }
584 
585  void setChargeState(int charge)
586  {
587  charge_ = charge;
588  charge_set_ = true;
589  }
590 
592  bool hasCharge() const
593  {
594  return charge_set_;
595  }
596 
597  int getChargeState() const
598  {
599  OPENMS_PRECONDITION(charge_set_, "Cannot return charge which was never set")
600  return charge_;
601  }
602 
603  double getMZ() const
604  {
605  return mz_;
606  }
607 
608  void setMZ(double mz)
609  {
610  mz_ = mz;
611  }
612 
613  const std::vector<Configuration> & getConfigurationList() const
614  {
615  return configuration_list_;
616  }
617 
618  void addConfiguration(const Configuration& configuration)
619  {
620  configuration_list_.push_back(configuration);
621  }
622 
623  const std::vector<Interpretation> & getInterpretationList() const
624  {
625  return interpretation_list_;
626  }
627 
628  void addInterpretation(const Interpretation& interpretation)
629  {
630  interpretation_list_.push_back(interpretation);
631  }
632 
634  {
635  return interpretation_list_.clear();
636  }
637 
638 private:
639  int charge_{0};
640  bool charge_set_{false};
641  double mz_{0};
642  std::vector<Configuration> configuration_list_;
643  std::vector<Interpretation> interpretation_list_;
644  };
645 
647  OPENMS_DLLAPI OpenMS::AASequence getAASequence(const Peptide& peptide);
648 
650  OPENMS_DLLAPI void setModification(int location, int max_size, const String& modification, OpenMS::AASequence & aas);
651 
652  }
653 
654 } // namespace OpenMS
655 
Representation of a peptide/protein sequence.
Definition: AASequence.h:112
Interface to the controlled vocabulary term list.
Definition: CVTermListInterface.h:59
bool operator==(const CVTermListInterface &rhs) const
equality operator
Representation of controlled vocabulary term list.
Definition: CVTermList.h:54
bool operator==(const CVTermList &cv_term_list) const
equality operator
A method or algorithm argument contains illegal values.
Definition: Exception.h:650
Representation of an amino acid residue.
Definition: Residue.h:63
ResidueType
Definition: Residue.h:152
A more convenient string class.
Definition: String.h:60
Represents a compound (small molecule)
Definition: TargetedExperimentHelper.h:323
String molecular_formula
Definition: TargetedExperimentHelper.h:344
double theoretical_mass
Definition: TargetedExperimentHelper.h:346
Compound(Compound &&) noexcept=default
String smiles_string
Definition: TargetedExperimentHelper.h:345
Compound()
Definition: TargetedExperimentHelper.h:326
Base class to represent either a peptide or a compound.
Definition: TargetedExperimentHelper.h:212
std::vector< RetentionTime > rts
Definition: TargetedExperimentHelper.h:307
bool hasRetentionTime() const
Check whether compound or peptide has an annotated retention time.
Definition: TargetedExperimentHelper.h:264
double getRetentionTime() const
Gets compound or peptide retention time.
Definition: TargetedExperimentHelper.h:273
PeptideCompound(const PeptideCompound &)=default
String id
Definition: TargetedExperimentHelper.h:306
int getChargeState() const
Return the peptide or compound charge state.
Definition: TargetedExperimentHelper.h:243
bool operator==(const PeptideCompound &rhs) const
Definition: TargetedExperimentHelper.h:220
PeptideCompound(PeptideCompound &&) noexcept=default
void setChargeState(int charge)
Set the peptide or compound charge state.
Definition: TargetedExperimentHelper.h:230
RetentionTime::RTType getRetentionTimeType() const
Get compound or peptide retentiontime type.
Definition: TargetedExperimentHelper.h:284
bool hasCharge() const
Whether peptide or compound has set charge state.
Definition: TargetedExperimentHelper.h:237
RetentionTime::RTUnit getRetentionTimeUnit() const
Get compound or peptide retentiontime unit (minute/seconds)
Definition: TargetedExperimentHelper.h:295
double getDriftTime() const
Return the peptide or compound ion mobility drift time.
Definition: TargetedExperimentHelper.h:256
void setDriftTime(double dt)
Set the peptide or compound ion mobility drift time.
Definition: TargetedExperimentHelper.h:250
Represents a peptide (amino acid sequence)
Definition: TargetedExperimentHelper.h:360
String getPeptideGroupLabel() const
Get the peptide group label.
Definition: TargetedExperimentHelper.h:412
String sequence
Definition: TargetedExperimentHelper.h:420
CVTermList evidence
Definition: TargetedExperimentHelper.h:419
std::vector< Modification > mods
Definition: TargetedExperimentHelper.h:421
std::vector< String > protein_refs
Definition: TargetedExperimentHelper.h:418
void setPeptideGroupLabel(const String &label)
Set the peptide group label.
Definition: TargetedExperimentHelper.h:406
Peptide(Peptide &&) noexcept=default
String peptide_group_label_
Definition: TargetedExperimentHelper.h:424
This class stores a retention time structure that is used in TargetedExperiment (representing a TraML...
Definition: TargetedExperimentHelper.h:126
double getRT() const
Definition: TargetedExperimentHelper.h:186
String software_ref
Definition: TargetedExperimentHelper.h:192
RetentionTime(RetentionTime &&) noexcept=default
bool retention_time_set_
Definition: TargetedExperimentHelper.h:198
RetentionTime(const RetentionTime &)=default
RTUnit
Definition: TargetedExperimentHelper.h:130
RTType
Definition: TargetedExperimentHelper.h:138
RetentionTime()
Definition: TargetedExperimentHelper.h:148
RTUnit retention_time_unit
Definition: TargetedExperimentHelper.h:193
RTType retention_time_type
Definition: TargetedExperimentHelper.h:194
double retention_time_
Definition: TargetedExperimentHelper.h:199
bool isRTset() const
Definition: TargetedExperimentHelper.h:177
void setRT(double rt)
Definition: TargetedExperimentHelper.h:181
OPENMS_INT32_TYPE Int32
Signed integer type (32bit)
Definition: Types.h:56
#define OPENMS_PRECONDITION(condition, message)
Precondition macro.
Definition: openms/include/OpenMS/CONCEPT/Macros.h:120
bool operator==(const IDBoostGraph::ProteinGroup &lhs, const IDBoostGraph::ProteinGroup &rhs)
OpenMS::AASequence getAASequence(const Peptide &peptide)
helper function that converts a Peptide object to a AASequence object
void setModification(int location, int max_size, const String &modification, OpenMS::AASequence &aas)
helper function that sets a modification on a AASequence object
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:48
Definition: TargetedExperimentHelper.h:73
String fullname
Definition: TargetedExperimentHelper.h:84
bool operator==(const CV &cv) const
Definition: TargetedExperimentHelper.h:88
String version
Definition: TargetedExperimentHelper.h:85
String id
Definition: TargetedExperimentHelper.h:83
CV(const String &new_id, const String &new_fullname, const String &new_version, const String &new_URI)
Definition: TargetedExperimentHelper.h:74
String URI
Definition: TargetedExperimentHelper.h:86
Definition: TargetedExperimentHelper.h:66
String instrument_ref
Definition: TargetedExperimentHelper.h:68
std::vector< CVTermList > validations
Definition: TargetedExperimentHelper.h:69
String contact_ref
Definition: TargetedExperimentHelper.h:67
Definition: TargetedExperimentHelper.h:429
String id
Definition: TargetedExperimentHelper.h:441
bool operator==(const Contact &rhs) const
Definition: TargetedExperimentHelper.h:435
Contact()
Definition: TargetedExperimentHelper.h:430
Definition: TargetedExperimentHelper.h:463
bool operator==(const Instrument &rhs) const
Definition: TargetedExperimentHelper.h:469
String id
Definition: TargetedExperimentHelper.h:475
Instrument()
Definition: TargetedExperimentHelper.h:464
Product ion interpretation.
Definition: TargetedExperimentHelper.h:505
IonType iontype
which type of ion (b/y/z/ ...), see Residue::ResidueType
Definition: TargetedExperimentHelper.h:535
bool operator!=(const Interpretation &rhs) const
Definition: TargetedExperimentHelper.h:557
Interpretation()
Definition: TargetedExperimentHelper.h:538
Residue::ResidueType IonType
Interpretation IonType.
Definition: TargetedExperimentHelper.h:531
bool operator==(const Interpretation &rhs) const
Definition: TargetedExperimentHelper.h:549
unsigned char ordinal
MS:1000903 : product ion series ordinal (e.g. 8 for a y8 ion)
Definition: TargetedExperimentHelper.h:533
unsigned char rank
MS:1000926 : product interpretation rank (e.g. 1 for the most likely rank)
Definition: TargetedExperimentHelper.h:534
Definition: TargetedExperimentHelper.h:364
Int32 unimod_id
Definition: TargetedExperimentHelper.h:368
double mono_mass_delta
Definition: TargetedExperimentHelper.h:366
double avg_mass_delta
Definition: TargetedExperimentHelper.h:365
Int32 location
Definition: TargetedExperimentHelper.h:367
Modification()
Definition: TargetedExperimentHelper.h:370
Definition: TargetedExperimentHelper.h:480
String software_ref
Definition: TargetedExperimentHelper.h:493
Prediction()
Definition: TargetedExperimentHelper.h:481
String contact_ref
Definition: TargetedExperimentHelper.h:494
bool operator==(const Prediction &rhs) const
Definition: TargetedExperimentHelper.h:486
Definition: TargetedExperimentHelper.h:100
String sequence
Definition: TargetedExperimentHelper.h:110
String id
Definition: TargetedExperimentHelper.h:109
bool operator==(const Protein &rhs) const
Definition: TargetedExperimentHelper.h:102
Definition: TargetedExperimentHelper.h:446
bool operator==(const Publication &rhs) const
Definition: TargetedExperimentHelper.h:452
String id
Definition: TargetedExperimentHelper.h:458
Publication()
Definition: TargetedExperimentHelper.h:447
Represents a product ion.
Definition: TargetedExperimentHelper.h:573
void resetInterpretations()
Definition: TargetedExperimentHelper.h:633
void addConfiguration(const Configuration &configuration)
Definition: TargetedExperimentHelper.h:618
void addInterpretation(const Interpretation &interpretation)
Definition: TargetedExperimentHelper.h:628
const std::vector< Configuration > & getConfigurationList() const
Definition: TargetedExperimentHelper.h:613
void setMZ(double mz)
Definition: TargetedExperimentHelper.h:608
const std::vector< Interpretation > & getInterpretationList() const
Definition: TargetedExperimentHelper.h:623
int getChargeState() const
Definition: TargetedExperimentHelper.h:597
bool charge_set_
Whether product ion charge is set or not.
Definition: TargetedExperimentHelper.h:640
void setChargeState(int charge)
Definition: TargetedExperimentHelper.h:585
std::vector< Configuration > configuration_list_
Product ion configurations used.
Definition: TargetedExperimentHelper.h:642
int charge_
Product ion charge.
Definition: TargetedExperimentHelper.h:639
bool hasCharge() const
Whether product has set charge state.
Definition: TargetedExperimentHelper.h:592
std::vector< Interpretation > interpretation_list_
Product ion interpretation.
Definition: TargetedExperimentHelper.h:643
bool operator==(const TraMLProduct &rhs) const
Definition: TargetedExperimentHelper.h:575
double mz_
Product ion m/z.
Definition: TargetedExperimentHelper.h:641
double getMZ() const
Definition: TargetedExperimentHelper.h:603