66 const std::vector<uint32_t> &code_list_from_spectrum)
68 const std::vector<std::uint8_t> &seq_aa_code = coded_protein.
getSeqAaCode();
70 m_presenceAbsenceMatrix.resize(seq_aa_code.size(), 5);
71 std::vector<std::uint8_t>::const_iterator it_aa = seq_aa_code.begin();
77 for(std::size_t i = 0; i < seq_aa_code.size(); i++)
79 if(std::binary_search(
80 code_list_from_spectrum.begin(), code_list_from_spectrum.end(), (std::uint32_t)(*it_aa)))
83 m_presenceAbsenceMatrix(i, 0) = ProteinPresenceAbsenceMatrixElement::present;
87 m_presenceAbsenceMatrix(i, 0) = ProteinPresenceAbsenceMatrixElement::absent;
89 if(std::binary_search(
90 code_list_from_spectrum.begin(), code_list_from_spectrum.end(), *it_couple))
93 m_presenceAbsenceMatrix(i, 1) = ProteinPresenceAbsenceMatrixElement::present;
97 m_presenceAbsenceMatrix(i, 1) = ProteinPresenceAbsenceMatrixElement::absent;
99 if(std::binary_search(
100 code_list_from_spectrum.begin(), code_list_from_spectrum.end(), *it_trio))
103 m_presenceAbsenceMatrix(i, 2) = ProteinPresenceAbsenceMatrixElement::present;
107 m_presenceAbsenceMatrix(i, 2) = ProteinPresenceAbsenceMatrixElement::absent;
109 if(std::binary_search(
110 code_list_from_spectrum.begin(), code_list_from_spectrum.end(), *it_quatro))
113 m_presenceAbsenceMatrix(i, 3) = ProteinPresenceAbsenceMatrixElement::present;
117 m_presenceAbsenceMatrix(i, 3) = ProteinPresenceAbsenceMatrixElement::absent;
119 if(std::binary_search(
120 code_list_from_spectrum.begin(), code_list_from_spectrum.end(), *it_cinqo))
123 m_presenceAbsenceMatrix(i, 4) = ProteinPresenceAbsenceMatrixElement::present;
127 m_presenceAbsenceMatrix(i, 4) = ProteinPresenceAbsenceMatrixElement::absent;
154 std::size_t aa_fragment_size)
const
156 if(m_presenceAbsenceMatrix(seq_position, aa_fragment_size) ==
157 ProteinPresenceAbsenceMatrixElement::present)
159 switch(aa_fragment_size)
178 switch(aa_fragment_size)
202 std::size_t size_seq = m_presenceAbsenceMatrix.size1();
204 double single_score = 0;
205 std::size_t endpos = std::min(position + 5, size_seq);
206 for(std::size_t ipos = position; ipos < endpos; ipos++)
208 single_score += getScore(ipos, 0);
212 double duo_score = 0;
213 endpos = std::min(position + 4, size_seq);
214 for(std::size_t ipos = position; ipos < endpos; ipos++)
216 duo_score += getScore(ipos, 1);
221 double trio_score = 0;
222 endpos = std::min(position + 3, size_seq);
223 for(std::size_t ipos = position; ipos < endpos; ipos++)
225 trio_score += getScore(ipos, 2);
230 double quatro_score = 0;
231 endpos = std::min(position + 2, size_seq);
232 for(std::size_t ipos = position; ipos < endpos; ipos++)
234 quatro_score += getScore(ipos, 3);
238 score += getScore(position, 4);
239 return score * single_score * duo_score * trio_score * quatro_score;