37 std::size_t aa_str_max_size)
41 if(aa_str_max_size > 7)
49 for(
const QChar &aa_str : seq_str)
54 for(std::size_t i = 2; i <= aa_str_max_size; i++)
72const std::vector<std::uint8_t> &
85std::vector<std::uint32_t>
87 std::size_t fragment_size)
const
89 std::vector<std::uint32_t> fragments;
96 for(
int i = 0; i <= max; i++)
98 fragments.push_back(codec.
codeLlc(it, fragment_size));
106const std::vector<std::uint32_t> &
114 std::size_t indice = size - 2;
124std::vector<std::pair<std::size_t, std::uint32_t>>
127 std::vector<std::pair<std::size_t, std::uint32_t>> return_pos;
128 std::vector<uint32_t> code_list = code_list_in;
130 std::sort(code_list.begin(), code_list.end());
131 auto it_end = std::unique(code_list.begin(), code_list.end());
132 for(
auto it_code = code_list.begin(); it_code != it_end; it_code++)
135 std::size_t size = 2;
139 auto it_seq_position =
140 std::find(liste_protein_seq_code.begin(), liste_protein_seq_code.end(), *it_code);
141 while(it_seq_position != liste_protein_seq_code.end())
144 std::size_t position = std::distance(liste_protein_seq_code.begin(), it_seq_position);
145 return_pos.push_back({size, position});
148 std::find(++it_seq_position, liste_protein_seq_code.end(), *it_code);
163 std::vector<double> convolution_score;
166 std::vector<std::uint8_t>::const_iterator it_aa =
m_seqAaCode.begin();
171 for(std::uint8_t aa_code [[maybe_unused]] :
m_seqAaCode)
173 convolution_score.push_back(
174 convolutionKernel(code_list_from_spectrum, it_aa, it_couple, it_trio, it_quatro, it_cinqo));
182 return convolution_score;
187 const std::vector<uint32_t> &spectrum_code_list,
188 std::vector<std::uint8_t>::const_iterator it_aa,
189 std::vector<std::uint32_t>::const_iterator it_couple,
190 std::vector<std::uint32_t>::const_iterator it_trio,
191 std::vector<std::uint32_t>::const_iterator it_quatro,
192 std::vector<std::uint32_t>::const_iterator it_cinqo)
const
197 auto it_end = it_aa + 5;
199 double single_score = 0;
202 if(std::binary_search(
203 spectrum_code_list.begin(), spectrum_code_list.end(), (std::uint32_t)(*it)))
215 auto itduo_end = it_couple + 4;
216 auto itduo = it_couple;
217 double duo_score = 0;
218 while(itduo != itduo_end)
220 if(std::binary_search(spectrum_code_list.begin(), spectrum_code_list.end(), *itduo))
233 auto it3_end = it_trio + 3;
235 double trio_score = 0;
236 while(it3 != it3_end)
238 if(std::binary_search(spectrum_code_list.begin(), spectrum_code_list.end(), *it3))
251 auto it4_end = it_quatro + 2;
252 auto it4 = it_quatro;
253 double quatro_score = 0;
254 while(it4 != it4_end)
257 if(std::binary_search(spectrum_code_list.begin(), spectrum_code_list.end(), *it4))
266 if(std::binary_search(spectrum_code_list.begin(), spectrum_code_list.end(), *it_cinqo))
274 return score * single_score * duo_score * trio_score * quatro_score;
uint8_t getAaCode(char aa_letter) const
get the integer code of an amino acid with the one letter code
code and decode amino acid string sequence to unique integer
const AaCode & getAaCode() const
uint32_t codeLlc(const QString &aa_str) const
get the lowest common denominator integer from amino acide suite string
virtual ~ProteinIntegerCode()
const std::vector< std::uint32_t > & getPeptideCodedFragment(std::size_t size) const
std::vector< std::pair< std::size_t, std::uint32_t > > match(const std::vector< uint32_t > &code_list) const
list of positions and matched codes along protein sequence
std::vector< double > convolution(const std::vector< uint32_t > &code_list_from_spectrum) const
process convolution of spectrum code list along protein sequence
const std::vector< std::uint8_t > & getSeqAaCode() const
std::vector< std::uint8_t > m_seqAaCode
double convolutionKernel(const std::vector< uint32_t > &spectrum_code_list, std::vector< std::uint8_t >::const_iterator it_aa, std::vector< std::uint32_t >::const_iterator it_couple, std::vector< std::uint32_t >::const_iterator it_trio, std::vector< std::uint32_t >::const_iterator it_quatro, std::vector< std::uint32_t >::const_iterator it_cinqo) const
ProteinIntegerCode(ProteinSp protein, const AaStringCodec &codec, std::size_t aa_str_max_size=5)
std::vector< std::vector< std::uint32_t > > m_peptideCodedFragments
std::vector< std::uint32_t > computePeptideCodeFragments(const AaStringCodec &codec, std::size_t fragment_size) const
pappso::ProteinSp getProteinSp() const
const QString & getSequence() const
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
std::shared_ptr< const Protein > ProteinSp
shared pointer on a Protein object
transform protein amino acid sequence into vectors of amino acid codes