OpenMS
ProteinHit.h
Go to the documentation of this file.
1 // Copyright (c) 2002-2023, The OpenMS Team -- EKU Tuebingen, ETH Zurich, and FU Berlin
2 // SPDX-License-Identifier: BSD-3-Clause
3 //
4 // --------------------------------------------------------------------------
5 // $Maintainer: Timo Sachsenberg $
6 // $Authors: $
7 // --------------------------------------------------------------------------
8 
9 #pragma once
10 
11 #include <iosfwd>
12 #include <vector>
13 #include <functional>
14 #include <set>
15 #include <map>
16 
18 #include <OpenMS/CONCEPT/Types.h>
21 
22 namespace OpenMS
23 {
32  class OPENMS_DLLAPI ProteinHit :
33  public MetaInfoInterface
34  {
35 public:
36  static const double COVERAGE_UNKNOWN; // == -1
37 
39 
40  class OPENMS_DLLAPI ProteinHitAccessionHash
42  {
43  public:
44  size_t operator()(const ProteinHit & p)
45  {
46  return std::hash<std::string>{}(p.getAccession());
47  }
48 
49  };
50  class OPENMS_DLLAPI ProteinHitPtrAccessionHash
51  {
52  public:
53  size_t operator()(const ProteinHit * p)
54  {
55  return std::hash<std::string>{}(p->getAccession());
56  }
57 
58  };
60 
62 
63  class OPENMS_DLLAPI ScoreMore
65  {
66 public:
67  template <typename Arg>
68  bool operator()(const Arg & a, const Arg & b)
69  {
70 #pragma clang diagnostic push
71 #pragma clang diagnostic ignored "-Wfloat-equal"
72  if (a.getScore() != b.getScore())
73 #pragma clang diagnostic pop
74  {
75  return a.getScore() > b.getScore();
76  }
77  return a.getAccession() > b.getAccession();
78  }
79 
80  };
81 
83  class OPENMS_DLLAPI ScoreLess
84  {
85 public:
86  template <typename Arg>
87  bool operator()(const Arg & a, const Arg & b)
88  {
89 #pragma clang diagnostic push
90 #pragma clang diagnostic ignored "-Wfloat-equal"
91  if (a.getScore() != b.getScore())
92 #pragma clang diagnostic pop
93  {
94  return a.getScore() < b.getScore();
95  }
96  return a.getAccession() < b.getAccession();
97  }
98 
99  };
101 
104 
107 
109  ProteinHit(double score, UInt rank, String accession, String sequence);
110 
112  ProteinHit(const ProteinHit &) = default;
113 
115  ProteinHit(ProteinHit&&) = default;
116 
118 
120  ProteinHit & operator=(const ProteinHit &) = default;
121 
123  ProteinHit& operator=(ProteinHit&&) = default; // TODO: add noexcept (gcc 4.8 bug)
124 
127 
129  bool operator==(const ProteinHit & rhs) const;
130 
132  bool operator!=(const ProteinHit & rhs) const;
133 
134 
137 
139  double getScore() const;
140 
142  UInt getRank() const;
143 
145  const String & getSequence() const;
146 
148  const String & getAccession() const;
149 
152 
154  double getCoverage() const;
155 
157  void setScore(const double score);
158 
160  void setRank(UInt newrank);
161 
163  void setSequence(const String & sequence);
164  void setSequence(String && sequence);
165 
167  void setAccession(const String & accession);
168 
170  void setDescription(const String & description);
171 
173  void setCoverage(const double coverage);
174 
176  const std::set<std::pair<Size, ResidueModification> >& getModifications() const;
177 
179  void setModifications(std::set<std::pair<Size, ResidueModification> >& mods);
181 
182 protected:
183  double score_;
187  double coverage_;
188  std::set<std::pair<Size, ResidueModification> > modifications_;
189  };
190 
192  OPENMS_DLLAPI std::ostream& operator<< (std::ostream& stream, const ProteinHit& hit);
193 
194 } // namespace OpenMS
195 
Interface for classes that can store arbitrary meta information (Type-Name-Value tuples).
Definition: MetaInfoInterface.h:35
Hash of a ProteinHit based on its accession only!
Definition: ProteinHit.h:42
size_t operator()(const ProteinHit &p)
Definition: ProteinHit.h:44
size_t operator()(const ProteinHit *p)
Definition: ProteinHit.h:53
Lesser predicate for scores of hits.
Definition: ProteinHit.h:84
bool operator()(const Arg &a, const Arg &b)
Definition: ProteinHit.h:87
bool operator()(const Arg &a, const Arg &b)
Definition: ProteinHit.h:68
Representation of a protein hit.
Definition: ProteinHit.h:34
double getScore() const
returns the score of the protein hit
double getCoverage() const
returns the coverage (in percent) of the protein hit based upon matched peptides
bool operator==(const ProteinHit &rhs) const
Equality operator.
void setSequence(const String &sequence)
sets the protein sequence
String sequence_
the amino acid sequence of the protein hit
Definition: ProteinHit.h:186
UInt rank_
the position(rank) where the hit appeared in the hit list
Definition: ProteinHit.h:184
void setModifications(std::set< std::pair< Size, ResidueModification > > &mods)
sets the set of modified protein positions
void setSequence(String &&sequence)
ProteinHit()
Default constructor.
void setScore(const double score)
sets the score of the protein hit
bool operator!=(const ProteinHit &rhs) const
Inequality operator.
const std::set< std::pair< Size, ResidueModification > > & getModifications() const
returns the set of modified protein positions
std::set< std::pair< Size, ResidueModification > > modifications_
modified positions in a protein
Definition: ProteinHit.h:188
void setRank(UInt newrank)
sets the rank
const String & getSequence() const
returns the protein sequence
UInt getRank() const
returns the rank of the protein hit
const String & getAccession() const
returns the accession of the protein
ProteinHit(double score, UInt rank, String accession, String sequence)
Values constructor.
String accession_
the protein identifier
Definition: ProteinHit.h:185
void setDescription(const String &description)
sets the description of the protein
void setAccession(const String &accession)
sets the accession of the protein
double coverage_
coverage of the protein based upon the matched peptide sequences
Definition: ProteinHit.h:187
ProteinHit & operator=(const MetaInfoInterface &source)
Assignment for MetaInfo.
ProteinHit & operator=(const ProteinHit &)=default
Assignment operator.
String getDescription() const
returns the description of the protein
double score_
the score of the protein hit
Definition: ProteinHit.h:183
ProteinHit & operator=(ProteinHit &&)=default
Move assignment operator.
void setCoverage(const double coverage)
sets the coverage (in percent) of the protein hit based upon matched peptides
static const double COVERAGE_UNKNOWN
Definition: ProteinHit.h:36
ProteinHit(ProteinHit &&)=default
Move constructor.
ProteinHit(const ProteinHit &)=default
Copy constructor.
A more convenient string class.
Definition: String.h:34
unsigned int UInt
Unsigned integer type.
Definition: Types.h:68
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:22
std::ostream & operator<<(std::ostream &os, const AccurateMassSearchResult &amsr)