36 std::size_t model_max_size,
42 std::vector<pappso::CodeToMass> code_to_mass =
43 m_aaCodec.generateLlcCodeListUpToMaxPeptideSize(model_max_size);
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;
89 std::vector<uint32_t> aa_code_list;
93 auto it_aacode = std::upper_bound(
99 return mass_range.mz_range_up > mass;
102 bool previous_out_of_range =
false;
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;
137 double total_modification_mass = aa.getTotalModificationMass();
138 total_modification_mass *= quantifier;
139 mass = mass - total_modification_mass;
143 uint8_t aamodCode =
m_aaCode.getAaCode(aa.getLetter());
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;
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;
collection of integer code for each amino acid 0 => null 1 to 20 => amino acid sorted by there mass (...
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
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...
const PrecisionBase * PrecisionPtr