libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
pappso::ProteinPresenceAbsenceMatrix Class Reference

#include <proteinpresenceabsencematrix.h>

Public Types

enum class  ProteinPresenceAbsenceMatrixElement : std::uint8_t { absent = 0 , present = 1 }
 

Public Member Functions

 ProteinPresenceAbsenceMatrix ()
 
 ProteinPresenceAbsenceMatrix (const ProteinPresenceAbsenceMatrix &other)
 
virtual ~ProteinPresenceAbsenceMatrix ()
 
ProteinPresenceAbsenceMatrixoperator= (const ProteinPresenceAbsenceMatrix &other)
 
void fillMatrix (const pappso::ProteinIntegerCode &coded_protein, const std::vector< uint32_t > &code_list_from_spectrum)
 
std::vector< double > convolution () const
 process convolution of spectrum code list along protein sequence
 
const boost::numeric::ublas::matrix< pappso::ProteinPresenceAbsenceMatrix::ProteinPresenceAbsenceMatrixElement > & getPresenceAbsenceMatrix () const
 

Private Member Functions

double convolutionKernel (std::size_t position) const
 
double getScore (std::size_t seq_position, std::size_t aa_fragment_size) const
 

Private Attributes

boost::numeric::ublas::matrix< ProteinPresenceAbsenceMatrixElementm_presenceAbsenceMatrix
 

Detailed Description

Definition at line 43 of file proteinpresenceabsencematrix.h.

Member Enumeration Documentation

◆ ProteinPresenceAbsenceMatrixElement

Enumerator
absent 

the aa sequence code is not present

present 

the aa sequence code is present

Definition at line 72 of file proteinpresenceabsencematrix.h.

73 {
74 absent = 0, ///< the aa sequence code is not present
75 present = 1, ///< the aa sequence code is present
76 };

Constructor & Destructor Documentation

◆ ProteinPresenceAbsenceMatrix() [1/2]

pappso::ProteinPresenceAbsenceMatrix::ProteinPresenceAbsenceMatrix ( )

Default constructor

Definition at line 32 of file proteinpresenceabsencematrix.cpp.

33{
34}

◆ ProteinPresenceAbsenceMatrix() [2/2]

pappso::ProteinPresenceAbsenceMatrix::ProteinPresenceAbsenceMatrix ( const ProteinPresenceAbsenceMatrix & other)

copy constructor

Definition at line 41 of file proteinpresenceabsencematrix.cpp.

43{
44 m_presenceAbsenceMatrix = other.m_presenceAbsenceMatrix;
45}
boost::numeric::ublas::matrix< ProteinPresenceAbsenceMatrixElement > m_presenceAbsenceMatrix

References m_presenceAbsenceMatrix.

◆ ~ProteinPresenceAbsenceMatrix()

pappso::ProteinPresenceAbsenceMatrix::~ProteinPresenceAbsenceMatrix ( )
virtual

Destructor

Definition at line 36 of file proteinpresenceabsencematrix.cpp.

37{
38}

Member Function Documentation

◆ convolution()

std::vector< double > pappso::ProteinPresenceAbsenceMatrix::convolution ( ) const

process convolution of spectrum code list along protein sequence

Definition at line 155 of file proteinpresenceabsencematrix.cpp.

156{
157
158 std::vector<double> convolution_score;
159
160 for(std::size_t ipos = 0; ipos < m_presenceAbsenceMatrix.size1(); ipos++)
161 {
162 convolution_score.push_back(convolutionKernel(ipos));
163 }
164
165 return convolution_score;
166}
double convolutionKernel(std::size_t position) const

◆ convolutionKernel()

double pappso::ProteinPresenceAbsenceMatrix::convolutionKernel ( std::size_t position) const
private

Definition at line 214 of file proteinpresenceabsencematrix.cpp.

216{
217 double score = 0;
218
219 std::size_t size_seq = m_presenceAbsenceMatrix.size1();
220 // single :
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++)
224 {
225 single_score += getScore(ipos, 0);
226 }
227
228 // duo
229 double duo_score = 0;
230 endpos = std::min(position + 4, size_seq);
231 for(std::size_t ipos = position; ipos < endpos; ipos++)
232 {
233 duo_score += getScore(ipos, 1);
234 }
235
236
237 // trio
238 double trio_score = 0;
239 endpos = std::min(position + 3, size_seq);
240 for(std::size_t ipos = position; ipos < endpos; ipos++)
241 {
242 trio_score += getScore(ipos, 2);
243 }
244
245
246 // quatro
247 double quatro_score = 0;
248 endpos = std::min(position + 2, size_seq);
249 for(std::size_t ipos = position; ipos < endpos; ipos++)
250 {
251 quatro_score += getScore(ipos, 3);
252 }
253
254 // cinqo
255 score += getScore(position, 4);
256 return score * single_score * duo_score * trio_score * quatro_score;
257}
double getScore(std::size_t seq_position, std::size_t aa_fragment_size) const

◆ fillMatrix()

void pappso::ProteinPresenceAbsenceMatrix::fillMatrix ( const pappso::ProteinIntegerCode & coded_protein,
const std::vector< uint32_t > & code_list_from_spectrum )

Definition at line 65 of file proteinpresenceabsencematrix.cpp.

68{
69 const std::vector<std::uint8_t> &seq_aa_code = coded_protein.getSeqAaCode();
70
71 m_presenceAbsenceMatrix.resize(seq_aa_code.size(), 5);
72 std::vector<std::uint8_t>::const_iterator it_aa = seq_aa_code.begin();
73 auto it_couple = coded_protein.getPeptideCodedFragment(2).begin();
74 auto it_trio = coded_protein.getPeptideCodedFragment(3).begin();
75 auto it_quatro = coded_protein.getPeptideCodedFragment(4).begin();
76 auto it_cinqo = coded_protein.getPeptideCodedFragment(5).begin();
77
78 for(std::size_t i = 0; i < seq_aa_code.size(); i++)
79 {
80 if(std::binary_search(code_list_from_spectrum.begin(),
81 code_list_from_spectrum.end(),
82 (std::uint32_t)(*it_aa)))
83 {
84 // presence
87 }
88 else
89 {
92 }
93 if(std::binary_search(code_list_from_spectrum.begin(),
94 code_list_from_spectrum.end(),
95 *it_couple))
96 {
97 // presence
100 }
101 else
102 {
105 }
106 if(std::binary_search(code_list_from_spectrum.begin(),
107 code_list_from_spectrum.end(),
108 *it_trio))
109 {
110 // presence
113 }
114 else
115 {
118 }
119 if(std::binary_search(code_list_from_spectrum.begin(),
120 code_list_from_spectrum.end(),
121 *it_quatro))
122 {
123 // presence
126 }
127 else
128 {
131 }
132 if(std::binary_search(code_list_from_spectrum.begin(),
133 code_list_from_spectrum.end(),
134 *it_cinqo))
135 {
136 // presence
139 }
140 else
141 {
144 }
145 it_aa++;
146 it_couple++;
147 it_trio++;
148 it_quatro++;
149 it_cinqo++;
150 }
151}
const std::vector< std::uint32_t > & getPeptideCodedFragment(std::size_t size) const
const std::vector< std::uint8_t > & getSeqAaCode() const

References pappso::ProteinIntegerCode::getPeptideCodedFragment(), and pappso::ProteinIntegerCode::getSeqAaCode().

◆ getPresenceAbsenceMatrix()

const boost::numeric::ublas::matrix< pappso::ProteinPresenceAbsenceMatrix::ProteinPresenceAbsenceMatrixElement > & pappso::ProteinPresenceAbsenceMatrix::getPresenceAbsenceMatrix ( ) const

Definition at line 59 of file proteinpresenceabsencematrix.cpp.

60{
62}

◆ getScore()

double pappso::ProteinPresenceAbsenceMatrix::getScore ( std::size_t seq_position,
std::size_t aa_fragment_size ) const
private

Definition at line 169 of file proteinpresenceabsencematrix.cpp.

171{
172 if(m_presenceAbsenceMatrix(seq_position, aa_fragment_size) ==
174 {
175 switch(aa_fragment_size)
176 {
177 case 0:
178 return 1;
179 case 1:
180 return 3;
181 case 2:
182 return 6;
183 case 3:
184 return 8;
185 case 4:
186 return 10;
187 default:
188 break;
189 }
190 }
191 else
192 {
193 // absent
194 switch(aa_fragment_size)
195 {
196 case 0:
197 return 0.1;
198 case 1:
199 return 0.3;
200 case 2:
201 return 0.6;
202 case 3:
203 return 0.8;
204 case 4:
205 return 1;
206 default:
207 break;
208 }
209 }
210 return 0.1;
211}

◆ operator=()

pappso::ProteinPresenceAbsenceMatrix & pappso::ProteinPresenceAbsenceMatrix::operator= ( const ProteinPresenceAbsenceMatrix & other)

Definition at line 48 of file proteinpresenceabsencematrix.cpp.

50{
51 m_presenceAbsenceMatrix = other.m_presenceAbsenceMatrix;
52
53 return *this;
54}

References m_presenceAbsenceMatrix.

Member Data Documentation

◆ m_presenceAbsenceMatrix

boost::numeric::ublas::matrix<ProteinPresenceAbsenceMatrixElement> pappso::ProteinPresenceAbsenceMatrix::m_presenceAbsenceMatrix
private

Definition at line 91 of file proteinpresenceabsencematrix.h.

Referenced by ProteinPresenceAbsenceMatrix(), and operator=().


The documentation for this class was generated from the following files: