libpappsomspp
Library for mass spectrometry
aabase.h
Go to the documentation of this file.
1 /**
2  * \file pappsomspp/amino_acid/aabase.h
3  * \date 7/3/2015
4  * \author Olivier Langella
5  * \brief private amino acid model
6  */
7 
8 /*******************************************************************************
9  * Copyright (c) 2015 Olivier Langella <Olivier.Langella@moulon.inra.fr>.
10  *
11  * This file is part of the PAPPSOms++ library.
12  *
13  * PAPPSOms++ is free software: you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License as published by
15  * the Free Software Foundation, either version 3 of the License, or
16  * (at your option) any later version.
17  *
18  * PAPPSOms++ is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with PAPPSOms++. If not, see <http://www.gnu.org/licenses/>.
25  *
26  * Contributors:
27  * Olivier Langella <Olivier.Langella@moulon.inra.fr> - initial API and
28  *implementation
29  ******************************************************************************/
30 
31 
32 #pragma once
33 
34 #include <map>
35 
36 #include "../types.h"
37 #include "atomnumberinterface.h"
38 
39 namespace pappso
40 {
41 
43 {
44 
45  public:
46  virtual pappso_double getMass() const;
47  virtual const char &getLetter() const;
48 
49  virtual void replaceLeucineIsoleucine();
50 
51  static const std::vector<AminoAcidChar> &getAminoAcidCharList();
52 
53 
54  protected:
55  AaBase(char aa_letter);
56  AaBase(AminoAcidChar aa_char);
57  AaBase(const AaBase &aabase);
58  virtual ~AaBase();
59 
60  virtual int getNumberOfAtom(AtomIsotopeSurvey atom) const override;
61  int getNumberOfIsotope(Isotope isotope) const override;
62  static pappso_double getAaMass(char aa_letter);
63 
64  protected:
65  char m_aaLetter;
66 
67  private:
68  using AaMassMap = std::map<char, pappso_double>;
69  using AaIntMap = std::map<char, unsigned int>;
70  using AminoAcidCharList = std::vector<AminoAcidChar>;
71 
79 };
80 
81 } /* namespace pappso */
AaBase(char aa_letter)
Definition: aabase.cpp:42
std::vector< AminoAcidChar > AminoAcidCharList
Definition: aabase.h:70
static AaMassMap m_aaMassMap
Definition: aabase.h:72
std::map< char, unsigned int > AaIntMap
Definition: aabase.h:69
static AaIntMap m_aaNumberOfSulfurMap
Definition: aabase.h:74
static AaIntMap m_aaNumberOfCarbonMap
Definition: aabase.h:73
static AaIntMap m_aaNumberOfOxygenMap
Definition: aabase.h:77
virtual pappso_double getMass() const
Definition: aabase.cpp:387
char m_aaLetter
Definition: aabase.h:65
static const std::vector< AminoAcidChar > & getAminoAcidCharList()
Definition: aabase.cpp:440
static pappso_double getAaMass(char aa_letter)
Definition: aabase.cpp:380
virtual void replaceLeucineIsoleucine()
Definition: aabase.cpp:419
std::map< char, pappso_double > AaMassMap
Definition: aabase.h:68
virtual const char & getLetter() const
Definition: aabase.cpp:434
virtual ~AaBase()
Definition: aabase.cpp:65
static AminoAcidCharList m_aminoAcidCharList
Definition: aabase.h:78
static AaIntMap m_aaNumberOfNitrogenMap
Definition: aabase.h:76
static AaIntMap m_aaNumberOfHydrogenMap
Definition: aabase.h:75
virtual int getNumberOfAtom(AtomIsotopeSurvey atom) const override
get the number of atom C, O, N, H in the molecule
Definition: aabase.cpp:394
int getNumberOfIsotope(Isotope isotope) const override
get the number of isotopes C13, H2, O17, O18, N15, S33, S34, S36 in the molecule
Definition: aabase.cpp:427
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition: aa.cpp:39
AminoAcidChar
Definition: types.h:134
AtomIsotopeSurvey
Definition: types.h:77
double pappso_double
A type definition for doubles.
Definition: types.h:49
Isotope
Definition: types.h:92