36 std::size_t model_max_size,
38 : m_precision(precision), m_aaCode(aa_code), m_aaCodec(aa_code)
42 std::vector<pappso::CodeToMass> code_to_mass =
45 for(
auto &code_mass : code_to_mass)
48 aaCodeMassRange.
code = code_mass.code;
49 double delta = precision->
delta(code_mass.mass);
51 aaCodeMassRange.
mz = code_mass.mass;
52 aaCodeMassRange.
mz_range_up = code_mass.mass + delta;
61 return a.mz_range_low < b.mz_range_low;
67 : m_precision(other.m_precision),
68 m_aaCode(other.m_aaCode),
69 m_aaCodec(other.m_aaCode)
89 std::vector<uint32_t> aa_code_list;
93 auto it_aacode = std::upper_bound(
94 m_codeMassList.begin(),
99 return mass_range.mz_range_up > mass;
102 bool previous_out_of_range =
false;
104 while(it_aacode != m_codeMassList.end())
106 if(mass < it_aacode->mz_range_low)
109 if(previous_out_of_range)
111 previous_out_of_range =
true;
116 if(mass <= it_aacode->mz_range_up)
118 previous_out_of_range =
false;
119 aa_code_list.push_back(it_aacode->code);
133 double mass,
const pappso::Aa &aa,
int quantifier)
const
135 std::vector<uint32_t> aa_code_list;
138 total_modification_mass *= quantifier;
139 mass = mass - total_modification_mass;
143 uint8_t aamodCode = m_aaCode.getAaCode(aa.
getLetter());
145 auto it_aacode = m_codeMassList.begin();
147 while(it_aacode != m_codeMassList.end())
149 if(mass < it_aacode->mz_range_low)
155 if(mass <= it_aacode->mz_range_up)
157 if(m_aaCodec.uniqueCodeContainsAminoAcid(
158 it_aacode->code, aamodCode, quantifier))
160 aa_code_list.push_back(it_aacode->code);
177 std::vector<double> &mass_list)
const
179 std::sort(mass_list.begin(), mass_list.end(), [](
double a,
double b) {
182 std::vector<uint32_t> aa_code_list;
184 auto it_aacode = m_codeMassList.begin();
185 auto it_mass = mass_list.begin();
187 while((it_aacode != m_codeMassList.end()) && (it_mass != mass_list.end()))
189 if(*it_mass < it_aacode->mz_range_low)
195 if(*it_mass <= it_aacode->mz_range_up)
197 aa_code_list.push_back(it_aacode->code);
211 std::vector<uint32_t> &code_list)
const
213 std::sort(code_list.begin(), code_list.end(), [](uint32_t
a, uint32_t
b) {
216 std::vector<uint32_t> filtered_aa_code_list;
218 std::vector<uint8_t> aa_ok;
220 auto it = code_list.begin();
223 aa_ok.push_back((uint8_t)*it);
229 for(uint32_t code : code_list)
231 if(m_aaCodec.codeOnlyContains(code, aa_ok))
233 filtered_aa_code_list.push_back(code);
236 return filtered_aa_code_list;
code and decodefrom amino acid string to integer
convert mass list to amino acid string code list
virtual const char & getLetter() const
collection of integer code for each amino acid 0 => null 1 to 20 => amino acid sorted by there mass (...
std::size_t getSize() const
convert a list of mass to amino acid string codes
std::vector< aaCodeAndMassRange > m_codeMassList
std::vector< uint32_t > filterCodeList(std::vector< uint32_t > &code_list) const
filter a list of amino acid string code find elementary amino acids (one base only) in the list and r...
~AaStringCodeMassMatching()
std::vector< uint32_t > getAaCodeFromMass(double mass) const
get amino acid string code from a single mass delta
PrecisionPtr getPrecisionPtr() const
AaStringCodeMassMatching(const AaCode &aa_code, std::size_t model_max_size, PrecisionPtr precision)
std::vector< uint32_t > getAaCodeFromMassWearingModification(double mass, const Aa &aa, int quantifier) const
get amino acid string code from a single mass delta wearing a specific modification
std::vector< uint32_t > getAaCodeFromMassList(std::vector< double > &mass_list) const
std::vector< CodeToMass > generateLlcCodeListUpToMaxPeptideSize(std::size_t size) const
generates all possible combination of llc code mass llc : the lowest common code denominator for a gi...
double getTotalModificationMass() const
get the sum of mass modifications
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...