85 uint8_t aa_code = m_asciiTable[aa_letter];
90 QObject::tr(
"error, %1 is null : no amino acid for letter \"%2\"")
94 else if(aa_code >= m_massCollection.size())
97 QObject::tr(
"error, %1 amino acid code not found in m_aaCollection for letter \"%2\"")
108 uint8_t aa_code = m_asciiTable[(char)aa];
113 QObject::tr(
"error, %1 is null : no amino acid for letter \"%2\"")
117 else if(aa_code >= m_massCollection.size())
120 QObject::tr(
"error, %1 amino acid code not found in m_aaCollection for letter \"%2\"")
132 auto it = std::find_if(m_aaCollection.begin(), m_aaCollection.end(), [aa_letter](
const Aa &aa) {
133 if(aa.getLetter() == aa_letter)
137 if(it != m_aaCollection.end())
142 QObject::tr(
"error, %1 amino acid not found in m_aaCollection").arg(aa_letter));
152 QObject::tr(
"error, 0 is null : no amino acid").arg(aa_code));
154 else if(aa_code > 19)
157 QObject::tr(
"error, %1 amino acid code not found in m_aaCollection").arg(aa_code));
159 return m_aaCollection[aa_code - 1];
167 auto it = std::find_if(m_aaCollection.begin(), m_aaCollection.end(), [aa_letter](
const Aa &aa) {
168 if(aa.getLetter() == aa_letter)
172 if(it != m_aaCollection.end())
174 it->addAaModification(aaModification);
179 QObject::tr(
"error, %1 amino acid not found in m_aaCollection").arg(aa_letter));
190 std::sort(m_aaCollection.begin(), m_aaCollection.end(), [](
const Aa &aa1,
const Aa &aa2) {
191 return aa1.getMass() < aa2.getMass();
195 for(
const Aa &aa : m_aaCollection)
198 m_asciiTable[aa.getLetter()] = n;
201 m_asciiTable[
'L'] = m_asciiTable[
'I'];
209 m_massCollection.resize(1);
211 for(
const Aa &aa : m_aaCollection)
213 m_massCollection.push_back(aa.getMass());
221 return m_massCollection[aa_code];
227 return m_massCollection[this->getAaCode(aa_letter)];
233 double delta = precision->
delta(mass);
234 double mass_min = mass - delta;
235 double mass_max = mass + delta;
237 for(uint8_t i = 1; i < m_massCollection.size(); i++)
239 if(m_massCollection.at(i) >= mass_min)
241 if(m_massCollection.at(i) <= mass_max)
251const std::vector<Aa> &
254 return m_aaCollection;
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...