OpenMS
ProForma.h
Go to the documentation of this file.
1 // Copyright (c) 2002-present, The OpenMS Team -- EKU Tuebingen, ETH Zurich, and FU Berlin
2 // SPDX-License-Identifier: BSD-3-Clause
3 //
4 // --------------------------------------------------------------------------
5 // $Maintainer: Ayesha Feroz $
6 // $Authors: Ayesha Feroz, Tom Müller$
7 // --------------------------------------------------------------------------
8 #ifndef OPENMS_CHEMISTRY_PROFORMA_H
9 #define OPENMS_CHEMISTRY_PROFORMA_H
10 
14 #include <vector>
15 #include <string>
16 #include <unordered_map>
17 #include <unordered_set>
18 
19 namespace OpenMS
20 {
22  {
23  double mass_shift = 0.0;
24  bool ambiguous_start = false;
25  bool stop_position = false;
26  std::string modification_name;
27  std::pair<size_t, size_t> range = {0, 0};
28  };
29 
30  class OPENMS_DLLAPI ProForma
31  {
32  public:
33  // Constructor
34  explicit ProForma(const AASequence& seq);
35 
36  // Parse the ProForma string and populate the hash map
37  AASequence fromProFormaString(const std::string& proforma_str);
38 
39  // Convert to ProForma string
40  std::string toProFormaString() const;
41 
42  // Add a modification to the sequence at a specific position
43  void addModification(size_t start_pos, size_t end_pos, const std::string& mod_id, double mass_shift);
44 
45  // Remove a modification at a specific position
46  void removeModification(size_t position);
47 
48  private:
50  std::unordered_map<size_t, ModificationAttributes> modifications_;
51  std::unordered_set<std::string> supported_cvs_{"UNIMOD", "MOD", "RESID", "XLMOD", "GNO"};
52 
53  // Parsing methods
54  void parseCVModificationNames(const std::string& modString, size_t& pos, size_t residue_pos);
55  void parseStandardModification(const std::string& modString, size_t& pos, size_t residue_pos);
56  void parseDeltaMassNotation(const std::string& modString, size_t& pos, size_t residue_pos);
57  void parseNTerminalModification(const std::string& modString, size_t& pos);
58  void parseCTerminalModification(const std::string& modString, size_t& pos);
59  // NEW: Parsing method for range modifications
60  void parseRangeModification(const std::string& modString, size_t& pos);
61  void throwParseError(const std::string& message) const;
62  void validateCVModification(const std::string& modification);
63  };
64 }
65 
66 #endif // OPENMS_CHEMISTRY_PROFORMA_H
Representation of a peptide/protein sequence.
Definition: AASequence.h:86
Definition: ProForma.h:31
void throwParseError(const std::string &message) const
void removeModification(size_t position)
void parseStandardModification(const std::string &modString, size_t &pos, size_t residue_pos)
void parseNTerminalModification(const std::string &modString, size_t &pos)
void parseRangeModification(const std::string &modString, size_t &pos)
std::unordered_map< size_t, ModificationAttributes > modifications_
Definition: ProForma.h:50
void addModification(size_t start_pos, size_t end_pos, const std::string &mod_id, double mass_shift)
AASequence fromProFormaString(const std::string &proforma_str)
void validateCVModification(const std::string &modification)
std::string toProFormaString() const
ProForma(const AASequence &seq)
AASequence sequence_
Definition: ProForma.h:49
void parseDeltaMassNotation(const std::string &modString, size_t &pos, size_t residue_pos)
void parseCVModificationNames(const std::string &modString, size_t &pos, size_t residue_pos)
void parseCTerminalModification(const std::string &modString, size_t &pos)
FLASHIda C++ to C# (or vice versa) bridge functions The functions here are called in C# to invoke fun...
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
bool ambiguous_start
Definition: ProForma.h:24
double mass_shift
Definition: ProForma.h:23
bool stop_position
Definition: ProForma.h:25
std::pair< size_t, size_t > range
Definition: ProForma.h:27
std::string modification_name
Definition: ProForma.h:26
Definition: ProForma.h:22