29#include "../exception/exceptionnotfound.h"
30#include "../exception/exceptionoutofrange.h"
85 return m_asciiTable[aa_letter];
92 auto it = std::find_if(m_aaCollection.begin(), m_aaCollection.end(), [aa_letter](
const Aa &aa) {
93 if(aa.getLetter() == aa_letter)
97 if(it != m_aaCollection.end())
102 QObject::tr(
"error, %1 amino acid not found in m_aaCollection").arg(aa_letter));
112 QObject::tr(
"error, 0 is null : no amino acid").arg(aa_code));
114 else if(aa_code > 19)
117 QObject::tr(
"error, %1 amino acid code not found in m_aaCollection").arg(aa_code));
119 return m_aaCollection[aa_code - 1];
127 auto it = std::find_if(m_aaCollection.begin(), m_aaCollection.end(), [aa_letter](
const Aa &aa) {
128 if(aa.getLetter() == aa_letter)
132 if(it != m_aaCollection.end())
134 it->addAaModification(aaModification);
139 QObject::tr(
"error, %1 amino acid not found in m_aaCollection").arg(aa_letter));
150 std::sort(m_aaCollection.begin(), m_aaCollection.end(), [](
const Aa &aa1,
const Aa &aa2) {
151 return aa1.getMass() < aa2.getMass();
155 for(
const Aa &aa : m_aaCollection)
158 m_asciiTable[aa.getLetter()] = n;
161 m_asciiTable[
'L'] = m_asciiTable[
'I'];
169 m_massCollection.resize(1);
171 for(
const Aa &aa : m_aaCollection)
173 m_massCollection.push_back(aa.getMass());
181 return m_massCollection[aa_code];
187 return m_massCollection[this->getAaCode(aa_letter)];
193 double delta = precision->
delta(mass);
194 double mass_min = mass - delta;
195 double mass_max = mass + delta;
197 for(uint8_t i = 1; i < m_massCollection.size(); i++)
199 if(m_massCollection.at(i) >= mass_min)
201 if(m_massCollection.at(i) <= mass_max)
211const std::vector<Aa> &
214 return m_aaCollection;
give an integer code to each amino acid
collection of integer code for each amino acid 0 => null 1 to 20 => amino acid sorted by there mass (...
void updateNumbers()
give a number (the code) to each amino acid sorted by mass
void addAaModification(char aa_letter, AaModificationP aaModification)
add a modification on an amino acid for example carbamido on C
std::vector< uint8_t > m_asciiTable
void updateMass()
update mass cache
uint8_t getAaCodeByMass(double mass, PrecisionPtr precision) const
get the integer code of an amino acid given a mass and a precision
const std::vector< Aa > & getAaCollection() const
uint8_t getAaCode(char aa_letter) const
get the integer code of an amino acid with the one letter code
double getMass(uint8_t aa_code) const
get the mass of the amino acid given its integer code the amino acid can bear some modification (if a...
std::size_t getSize() const
std::vector< Aa > m_aaCollection
const Aa & getAa(char aa_letter) const
get the Aa object from the one letter code
virtual pappso_double delta(pappso_double value) const =0
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...