libpappsomspp
Library for mass spectrometry
peptidevariablemodificationbuilder.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * Copyright (c) 2015 Olivier Langella <Olivier.Langella@moulon.inra.fr>.
3  *
4  * This file is part of the PAPPSOms++ library.
5  *
6  * PAPPSOms++ is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * PAPPSOms++ is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with PAPPSOms++. If not, see <http://www.gnu.org/licenses/>.
18  *
19  * Contributors:
20  * Olivier Langella <Olivier.Langella@moulon.inra.fr> - initial API and
21  *implementation
22  ******************************************************************************/
23 
24 #pragma once
25 
26 
27 #include "peptidemodificatorbase.h"
28 
29 namespace pappso
30 {
31 
32 
33 /** \brief Modify a peptide shared pointer with a variable modification on one
34  * AA
35  * */
37  : public PeptideModificatorBase
38 {
39  public:
42  void setPeptideSp(std::int8_t sequence_database_id,
43  const ProteinSp &protein_sp,
44  bool is_decoy,
45  const PeptideSp &peptide_sp_original,
46  unsigned int start,
47  bool is_nter,
48  unsigned int missed_cleavage_number,
49  bool semi_enzyme) override;
50 
51  void addAa(char aa);
52 
53  void
54  setMaxNumberMod(unsigned int max_num)
55  {
56  m_maxNumberMod = max_num;
57  };
58  void
59  setMinNumberMod(unsigned int min_num)
60  {
61  m_minNumberMod = min_num;
62  };
63  void
64  setModificationCounter(unsigned int counter)
65  {
66  m_modificationCount = counter;
67  };
68 
69  void
71  {
72  m_sink = sink;
73  };
74 
75 
76  /** \brief this modification concerns the Nter peptide
77  * */
78  void
79  setProtNter(bool arg1)
80  {
81  m_isProtNterMod = arg1;
82  };
83  /** \brief this modification concerns the Cter peptide
84  * */
85  void
86  setProtCter(bool arg1)
87  {
88  m_isProtCterMod = arg1;
89  };
90  /** \brief this modification concerns all peptides between Nter and Cter
91  * */
92  void
93  setProtElse(bool arg1)
94  {
95  m_isProtElseMod = arg1;
96  };
97 
98  protected:
99  static bool next_combination(const std::vector<unsigned int>::iterator first,
100  std::vector<unsigned int>::iterator k,
101  const std::vector<unsigned int>::iterator last);
102 
103  PeptideModificatorInterface *m_sink = nullptr;
105  // minimum number of positions to modify
106  unsigned int m_minNumberMod = 0;
107  // maximum number of positions to modify
108  unsigned int m_maxNumberMod = 30000;
109  // modification counter per site
110  unsigned int m_modificationCount = 0;
111 
112  // protein Nter modification
113  bool m_isProtNterMod = true;
114  // protein Cter modification
115  bool m_isProtCterMod = true;
116 
117  bool m_isProtElseMod = true;
118 
119 
120  private:
122 };
123 
124 
125 } // namespace pappso
Modify a peptide shared pointer with a variable modification on one AA.
void setSink(PeptideModificatorInterface *sink) override
void setProtNter(bool arg1)
this modification concerns the Nter peptide
void setProtElse(bool arg1)
this modification concerns all peptides between Nter and Cter
void setProtCter(bool arg1)
this modification concerns the Cter peptide
#define PMSPP_LIB_DECL
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition: aa.cpp:39
std::shared_ptr< const Peptide > PeptideSp
std::shared_ptr< const Protein > ProteinSp
shared pointer on a Protein object
Definition: protein.h:43
base class for all peptide modification builders