57const boost::numeric::ublas::matrix<
61 return m_presenceAbsenceMatrix;
67 const std::vector<uint32_t> &code_list_from_spectrum)
69 const std::vector<std::uint8_t> &seq_aa_code = coded_protein.
getSeqAaCode();
71 m_presenceAbsenceMatrix.resize(seq_aa_code.size(), 5);
72 std::vector<std::uint8_t>::const_iterator it_aa = seq_aa_code.begin();
78 for(std::size_t i = 0; i < seq_aa_code.size(); i++)
80 if(std::binary_search(code_list_from_spectrum.begin(),
81 code_list_from_spectrum.end(),
82 (std::uint32_t)(*it_aa)))
85 m_presenceAbsenceMatrix(i, 0) =
86 ProteinPresenceAbsenceMatrixElement::present;
90 m_presenceAbsenceMatrix(i, 0) =
91 ProteinPresenceAbsenceMatrixElement::absent;
93 if(std::binary_search(code_list_from_spectrum.begin(),
94 code_list_from_spectrum.end(),
98 m_presenceAbsenceMatrix(i, 1) =
99 ProteinPresenceAbsenceMatrixElement::present;
103 m_presenceAbsenceMatrix(i, 1) =
104 ProteinPresenceAbsenceMatrixElement::absent;
106 if(std::binary_search(code_list_from_spectrum.begin(),
107 code_list_from_spectrum.end(),
111 m_presenceAbsenceMatrix(i, 2) =
112 ProteinPresenceAbsenceMatrixElement::present;
116 m_presenceAbsenceMatrix(i, 2) =
117 ProteinPresenceAbsenceMatrixElement::absent;
119 if(std::binary_search(code_list_from_spectrum.begin(),
120 code_list_from_spectrum.end(),
124 m_presenceAbsenceMatrix(i, 3) =
125 ProteinPresenceAbsenceMatrixElement::present;
129 m_presenceAbsenceMatrix(i, 3) =
130 ProteinPresenceAbsenceMatrixElement::absent;
132 if(std::binary_search(code_list_from_spectrum.begin(),
133 code_list_from_spectrum.end(),
137 m_presenceAbsenceMatrix(i, 4) =
138 ProteinPresenceAbsenceMatrixElement::present;
142 m_presenceAbsenceMatrix(i, 4) =
143 ProteinPresenceAbsenceMatrixElement::absent;
158 std::vector<double> convolution_score;
160 for(std::size_t ipos = 0; ipos < m_presenceAbsenceMatrix.size1(); ipos++)
162 convolution_score.push_back(convolutionKernel(ipos));
165 return convolution_score;
170 std::size_t seq_position, std::size_t aa_fragment_size)
const
172 if(m_presenceAbsenceMatrix(seq_position, aa_fragment_size) ==
173 ProteinPresenceAbsenceMatrixElement::present)
175 switch(aa_fragment_size)
194 switch(aa_fragment_size)
215 std::size_t position)
const
219 std::size_t size_seq = m_presenceAbsenceMatrix.size1();
221 double single_score = 0;
222 std::size_t endpos = std::min(position + 5, size_seq);
223 for(std::size_t ipos = position; ipos < endpos; ipos++)
225 single_score += getScore(ipos, 0);
229 double duo_score = 0;
230 endpos = std::min(position + 4, size_seq);
231 for(std::size_t ipos = position; ipos < endpos; ipos++)
233 duo_score += getScore(ipos, 1);
238 double trio_score = 0;
239 endpos = std::min(position + 3, size_seq);
240 for(std::size_t ipos = position; ipos < endpos; ipos++)
242 trio_score += getScore(ipos, 2);
247 double quatro_score = 0;
248 endpos = std::min(position + 2, size_seq);
249 for(std::size_t ipos = position; ipos < endpos; ipos++)
251 quatro_score += getScore(ipos, 3);
255 score += getScore(position, 4);
256 return score * single_score * duo_score * trio_score * quatro_score;
const std::vector< std::uint32_t > & getPeptideCodedFragment(std::size_t size) const
const std::vector< std::uint8_t > & getSeqAaCode() const
std::vector< double > convolution() const
process convolution of spectrum code list along protein sequence
virtual ~ProteinPresenceAbsenceMatrix()
double getScore(std::size_t seq_position, std::size_t aa_fragment_size) const
ProteinPresenceAbsenceMatrix & operator=(const ProteinPresenceAbsenceMatrix &other)
ProteinPresenceAbsenceMatrix()
ProteinPresenceAbsenceMatrixElement
double convolutionKernel(std::size_t position) const
void fillMatrix(const pappso::ProteinIntegerCode &coded_protein, const std::vector< uint32_t > &code_list_from_spectrum)
boost::numeric::ublas::matrix< ProteinPresenceAbsenceMatrixElement > m_presenceAbsenceMatrix
const boost::numeric::ublas::matrix< pappso::ProteinPresenceAbsenceMatrix::ProteinPresenceAbsenceMatrixElement > & getPresenceAbsenceMatrix() const
transform protein amino acid sequence into vectors of amino acid codes
presence/absence matrix of amino acid code along the protein sequence