libpappsomspp
Library for mass spectrometry
Toggle main menu visibility
Loading...
Searching...
No Matches
peptidefragmentionlistbase.cpp
Go to the documentation of this file.
1
/**
2
* \file pappsomspp/peptide/peptidefragmentionlistbase.cpp
3
* \date 10/3/2015
4
* \author Olivier Langella
5
* \brief fragmentation base object
6
*/
7
8
/*******************************************************************************
9
* Copyright (c) 2015 Olivier Langella <Olivier.Langella@moulon.inra.fr>.
10
*
11
* This file is part of the PAPPSOms++ library.
12
*
13
* PAPPSOms++ is free software: you can redistribute it and/or modify
14
* it under the terms of the GNU General Public License as published by
15
* the Free Software Foundation, either version 3 of the License, or
16
* (at your option) any later version.
17
*
18
* PAPPSOms++ is distributed in the hope that it will be useful,
19
* but WITHOUT ANY WARRANTY; without even the implied warranty of
20
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
* GNU General Public License for more details.
22
*
23
* You should have received a copy of the GNU General Public License
24
* along with PAPPSOms++. If not, see <http://www.gnu.org/licenses/>.
25
*
26
* Contributors:
27
* Olivier Langella <Olivier.Langella@moulon.inra.fr> - initial API and
28
*implementation
29
******************************************************************************/
30
31
#include "
peptidefragmentionlistbase.h
"
32
33
#include <QDebug>
34
#include <memory>
35
#include "
pappsomspp/core/pappsoexception.h
"
36
37
namespace
pappso
38
{
39
40
std::list<Enums::PeptideIon>
41
PeptideFragmentIonListBase::getCIDionList
()
42
{
43
IonList
ret;
44
// populate ret
45
46
ret.push_back(
Enums::PeptideIon::y
);
47
ret.push_back(
Enums::PeptideIon::yp
);
48
ret.push_back(
Enums::PeptideIon::ystar
);
49
ret.push_back(
Enums::PeptideIon::yo
);
50
ret.push_back(
Enums::PeptideIon::b
);
51
ret.push_back(
Enums::PeptideIon::bp
);
52
ret.push_back(
Enums::PeptideIon::a
);
53
ret.push_back(
Enums::PeptideIon::bstar
);
54
ret.push_back(
Enums::PeptideIon::bo
);
55
return
ret;
56
}
57
58
std::list<Enums::PeptideIon>
59
PeptideFragmentIonListBase::getETDionList
()
60
{
61
IonList
ret;
62
// populate ret
63
64
ret.push_back(
Enums::PeptideIon::y
);
65
ret.push_back(
Enums::PeptideIon::c
);
66
ret.push_back(
Enums::PeptideIon::z
);
67
ret.push_back(
Enums::PeptideIon::ystar
);
68
ret.push_back(
Enums::PeptideIon::yo
);
69
return
ret;
70
}
71
72
const
std::list<Enums::PeptideIon> &
73
PeptideFragmentIonListBase::getIonList
()
const
74
{
75
return
m_ionList
;
76
}
77
78
PeptideFragmentIonListBase::PeptideFragmentIonListBase
(
const
PeptideSp
&peptide,
79
const
IonList
&ions)
80
:
msp_peptide
(peptide),
m_ionList
(ions)
81
{
82
try
83
{
84
qDebug() <<
"PeptideFragmentIonListBase::PeptideFragmentIonListBase begin "
<< ions.size();
85
std::list<PeptideFragmentSp> fragment_list =
86
PeptideFragmentIonListBase::getPeptideFragmentList
(
msp_peptide
);
87
88
m_phosphorylationNumber
= 0;
89
AaModificationP
phosphorylation_mod =
nullptr
;
90
91
92
qDebug();
93
for
(
auto
&&fragment_sp : fragment_list)
94
{
95
// qDebug()<< "PeptideFragmentIonListBase::PeptideFragmentIonListBase
96
// ition";
97
if
(fragment_sp.get()->getPeptideIonDirection() ==
PeptideDirection::Cter
)
98
{
99
for
(
auto
&&ion_type :
m_ionList
)
100
{
101
// qDebug()<<
102
// "PeptideFragmentIonListBase::PeptideFragmentIonListBase
103
// ition";
104
if
((ion_type ==
Enums::PeptideIon::y
) || (ion_type ==
Enums::PeptideIon::ystar
) ||
105
(ion_type ==
Enums::PeptideIon::yo
) || (ion_type ==
Enums::PeptideIon::z
))
106
{
107
msp_peptide_fragment_ion_list
.push_back(
108
std::make_shared<PeptideFragmentIon>(fragment_sp, ion_type));
109
}
110
else
if
(ion_type ==
Enums::PeptideIon::yp
)
111
{
112
if
(phosphorylation_mod ==
nullptr
)
113
{
114
phosphorylation_mod =
AaModification::getInstance
(
"MOD:00696"
);
115
m_phosphorylationNumber
=
116
peptide.get()->getNumberOfModification(phosphorylation_mod);
117
}
118
for
(
unsigned
int
i = 0; i <
m_phosphorylationNumber
; i++)
119
{
120
msp_peptide_fragment_ion_list
.push_back(
121
std::make_shared<PeptideFragmentIon>(fragment_sp, ion_type, i + 1));
122
}
123
}
124
}
125
}
126
else
127
{
128
for
(
auto
&&ion_type :
m_ionList
)
129
{
130
// b, bstar, bo, a
131
if
((ion_type ==
Enums::PeptideIon::b
) || (ion_type ==
Enums::PeptideIon::bstar
) ||
132
(ion_type ==
Enums::PeptideIon::bo
) || (ion_type ==
Enums::PeptideIon::a
) ||
133
(ion_type ==
Enums::PeptideIon::c
))
134
{
135
msp_peptide_fragment_ion_list
.push_back(
136
std::make_shared<PeptideFragmentIon>(fragment_sp, ion_type));
137
}
138
else
if
(ion_type ==
Enums::PeptideIon::bp
)
139
{
140
if
(phosphorylation_mod ==
nullptr
)
141
{
142
phosphorylation_mod =
AaModification::getInstance
(
"MOD:00696"
);
143
m_phosphorylationNumber
=
144
peptide.get()->getNumberOfModification(phosphorylation_mod);
145
}
146
for
(
unsigned
int
i = 0; i <
m_phosphorylationNumber
; i++)
147
{
148
msp_peptide_fragment_ion_list
.push_back(
149
std::make_shared<PeptideFragmentIon>(fragment_sp, ion_type, i + 1));
150
}
151
}
152
}
153
}
154
}
155
qDebug() <<
"PeptideFragmentIonListBase::PeptideFragmentIonListBase end "
<< ions.size();
156
}
157
catch
(
PappsoException
&exception_pappso)
158
{
159
QString errorStr =
160
QObject::tr(
"ERROR building PeptideFragmentIonListBase, PAPPSO exception:\n%1"
)
161
.arg(exception_pappso.
qwhat
());
162
qDebug() <<
"PeptideFragmentIonListBase::PeptideFragmentIonListBase "
163
"PappsoException :\n"
164
<< errorStr;
165
throw
PappsoException
(errorStr);
166
}
167
catch
(std::exception &exception_std)
168
{
169
QString errorStr =
170
QObject::tr(
"ERROR building PeptideFragmentIonListBase, std exception:\n%1"
)
171
.arg(exception_std.what());
172
qDebug() <<
"PeptideFragmentIonListBase::PeptideFragmentIonListBase "
173
"std::exception :\n"
174
<< errorStr;
175
throw
PappsoException
(errorStr);
176
}
177
}
178
179
PeptideFragmentIonListBase::PeptideFragmentIonListBase
(
const
PeptideFragmentIonListBase
&other)
180
:
msp_peptide
(other.
msp_peptide
),
181
msp_peptide_fragment_ion_list
(other.
msp_peptide_fragment_ion_list
),
182
m_ionList
(other.
m_ionList
),
183
m_phosphorylationNumber
(other.
m_phosphorylationNumber
)
184
{
185
}
186
187
188
PeptideFragmentIonListBaseSp
189
PeptideFragmentIonListBase::makePeptideFragmentIonListBaseSp
()
const
190
{
191
return
std::make_shared<const PeptideFragmentIonListBase>(*
this
);
192
}
193
194
195
PeptideFragmentIonListBase::~PeptideFragmentIonListBase
()
196
{
197
}
198
199
const
std::list<PeptideFragmentSp>
200
PeptideFragmentIonListBase::getPeptideFragmentList
(
const
PeptideSp
&peptide)
201
{
202
203
qDebug();
204
std::list<PeptideFragmentSp> peptide_fragment_list;
205
206
if
(peptide.get()->size() < 1)
207
{
208
return
peptide_fragment_list;
209
}
210
211
unsigned
int
max = peptide.get()->size() - 1;
212
213
for
(
unsigned
int
i = 0; i < max; i++)
214
{
215
216
peptide_fragment_list.push_back(
217
std::make_shared<PeptideFragment>(peptide,
PeptideDirection::Nter
, i + 1));
218
peptide_fragment_list.push_back(
219
std::make_shared<PeptideFragment>(peptide,
PeptideDirection::Cter
, i + 1));
220
}
221
qDebug();
222
return
peptide_fragment_list;
223
}
224
225
const
std::list<PeptideFragmentIonSp>
226
PeptideFragmentIonListBase::getPeptideFragmentIonSp
(
Enums::PeptideIon
ion_type)
const
227
{
228
std::list<PeptideFragmentIonSp> ion_list;
229
for
(
auto
&&peptide_fragment_ion_sp :
msp_peptide_fragment_ion_list
)
230
{
231
if
(peptide_fragment_ion_sp.get()->getPeptideIonType() == ion_type)
232
{
233
ion_list.push_back(peptide_fragment_ion_sp);
234
}
235
}
236
return
(ion_list);
237
}
238
239
const
PeptideFragmentIonSp
&
240
PeptideFragmentIonListBase::getPeptideFragmentIonSp
(
Enums::PeptideIon
ion_type,
241
unsigned
int
size
)
const
242
{
243
244
return
getPeptideFragmentIonSp
(ion_type,
size
, 0);
245
}
246
247
const
PeptideFragmentIonSp
&
248
PeptideFragmentIonListBase::getPeptideFragmentIonSp
(
249
Enums::PeptideIon
ion_type,
unsigned
int
size
,
unsigned
int
number_of_neutral_phospho_loss)
const
250
{
251
for
(
auto
&&peptide_fragment_ion_sp :
msp_peptide_fragment_ion_list
)
252
{
253
if
(peptide_fragment_ion_sp.get()->getPeptideIonType() == ion_type)
254
{
255
if
(peptide_fragment_ion_sp.get()->size() ==
size
)
256
{
257
if
(peptide_fragment_ion_sp.get()->getNumberOfNeutralPhosphoLoss() ==
258
number_of_neutral_phospho_loss)
259
{
260
return
(peptide_fragment_ion_sp);
261
}
262
}
263
}
264
}
265
266
throw
PappsoException
(QString(
"PeptideFragmentIon %1 of size %2 not found"
)
267
.arg(
PeptideFragmentIon::getPeptideIonName
(ion_type))
268
.arg(
size
));
269
}
270
271
}
// namespace pappso
272
273
std::size_t
274
pappso::PeptideFragmentIonListBase::size
()
const
275
{
276
return
msp_peptide_fragment_ion_list
.size();
277
}
278
279
const
std::list<pappso::PeptideFragmentIonSp> &
280
pappso::PeptideFragmentIonListBase::getPeptideFragmentIonList
()
const
281
{
282
return
msp_peptide_fragment_ion_list
;
283
}
284
285
const
pappso::PeptideSp
&
286
pappso::PeptideFragmentIonListBase::getPeptideSp
()
const
287
{
288
return
msp_peptide
;
289
}
290
291
unsigned
int
292
pappso::PeptideFragmentIonListBase::getPhosphorylationNumber
()
const
293
{
294
return
m_phosphorylationNumber
;
295
}
296
297
std::list<pappso::PeptideFragmentIonSp>::const_iterator
298
pappso::PeptideFragmentIonListBase::begin
()
const
299
{
300
return
msp_peptide_fragment_ion_list
.begin();
301
}
302
303
std::list<pappso::PeptideFragmentIonSp>::const_iterator
304
pappso::PeptideFragmentIonListBase::end
()
const
305
{
306
return
msp_peptide_fragment_ion_list
.end();
307
}
pappso::AaModification::getInstance
static AaModificationP getInstance(const QString &accession)
Definition
aamodification.cpp:368
pappso::PappsoException
Definition
pappsoexception.h:41
pappso::PappsoException::qwhat
virtual const QString & qwhat() const
Definition
pappsoexception.h:66
pappso::PeptideFragmentIonListBase::msp_peptide_fragment_ion_list
std::list< PeptideFragmentIonSp > msp_peptide_fragment_ion_list
Definition
peptidefragmentionlistbase.h:82
pappso::PeptideFragmentIonListBase::IonList
std::list< Enums::PeptideIon > IonList
Definition
peptidefragmentionlistbase.h:46
pappso::PeptideFragmentIonListBase::getPeptideFragmentIonSp
const std::list< PeptideFragmentIonSp > getPeptideFragmentIonSp(Enums::PeptideIon ion_type) const
Definition
peptidefragmentionlistbase.cpp:226
pappso::PeptideFragmentIonListBase::getPhosphorylationNumber
unsigned int getPhosphorylationNumber() const
Definition
peptidefragmentionlistbase.cpp:292
pappso::PeptideFragmentIonListBase::makePeptideFragmentIonListBaseSp
PeptideFragmentIonListBaseSp makePeptideFragmentIonListBaseSp() const
Definition
peptidefragmentionlistbase.cpp:189
pappso::PeptideFragmentIonListBase::getETDionList
static std::list< Enums::PeptideIon > getETDionList()
Definition
peptidefragmentionlistbase.cpp:59
pappso::PeptideFragmentIonListBase::getIonList
const std::list< Enums::PeptideIon > & getIonList() const
Definition
peptidefragmentionlistbase.cpp:73
pappso::PeptideFragmentIonListBase::~PeptideFragmentIonListBase
virtual ~PeptideFragmentIonListBase()
Definition
peptidefragmentionlistbase.cpp:195
pappso::PeptideFragmentIonListBase::getPeptideSp
virtual const PeptideSp & getPeptideSp() const
Definition
peptidefragmentionlistbase.cpp:286
pappso::PeptideFragmentIonListBase::PeptideFragmentIonListBase
PeptideFragmentIonListBase(const PeptideSp &peptide, const IonList &ions)
Definition
peptidefragmentionlistbase.cpp:78
pappso::PeptideFragmentIonListBase::end
std::list< PeptideFragmentIonSp >::const_iterator end() const
Definition
peptidefragmentionlistbase.cpp:304
pappso::PeptideFragmentIonListBase::m_ionList
IonList m_ionList
Definition
peptidefragmentionlistbase.h:83
pappso::PeptideFragmentIonListBase::getPeptideFragmentList
static const std::list< PeptideFragmentSp > getPeptideFragmentList(const PeptideSp &peptide)
Definition
peptidefragmentionlistbase.cpp:200
pappso::PeptideFragmentIonListBase::size
std::size_t size() const
Definition
peptidefragmentionlistbase.cpp:274
pappso::PeptideFragmentIonListBase::getCIDionList
static std::list< Enums::PeptideIon > getCIDionList()
Definition
peptidefragmentionlistbase.cpp:41
pappso::PeptideFragmentIonListBase::m_phosphorylationNumber
unsigned int m_phosphorylationNumber
Definition
peptidefragmentionlistbase.h:84
pappso::PeptideFragmentIonListBase::begin
std::list< PeptideFragmentIonSp >::const_iterator begin() const
Definition
peptidefragmentionlistbase.cpp:298
pappso::PeptideFragmentIonListBase::msp_peptide
const PeptideSp msp_peptide
Definition
peptidefragmentionlistbase.h:81
pappso::PeptideFragmentIonListBase::getPeptideFragmentIonList
const std::list< PeptideFragmentIonSp > & getPeptideFragmentIonList() const
Definition
peptidefragmentionlistbase.cpp:280
pappso::PeptideFragmentIon::getPeptideIonName
const QString getPeptideIonName() const
Definition
peptidefragmention.cpp:122
pappso::Enums::PeptideIon
PeptideIon
Enums::PeptideIon enum defines all types of ions (Nter or Cter).
Definition
types.h:272
pappso::Enums::PeptideIon::a
@ a
Nter aldimine ions.
Definition
types.h:276
pappso::Enums::PeptideIon::y
@ y
Cter amino ions.
Definition
types.h:281
pappso::Enums::PeptideIon::c
@ c
Nter amino ions.
Definition
types.h:280
pappso::Enums::PeptideIon::bp
@ bp
Definition
types.h:279
pappso::Enums::PeptideIon::yp
@ yp
Definition
types.h:285
pappso::Enums::PeptideIon::ystar
@ ystar
Cter amino ions + NH3 loss.
Definition
types.h:282
pappso::Enums::PeptideIon::yo
@ yo
Cter amino ions + H2O loss.
Definition
types.h:283
pappso::Enums::PeptideIon::bstar
@ bstar
Nter acylium ions + NH3 loss.
Definition
types.h:274
pappso::Enums::PeptideIon::b
@ b
Nter acylium ions.
Definition
types.h:273
pappso::Enums::PeptideIon::bo
@ bo
Nter acylium ions + H2O loss.
Definition
types.h:275
pappso::Enums::PeptideIon::z
@ z
Cter carbocations.
Definition
types.h:284
pappso
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition
aa.cpp:39
pappso::PeptideFragmentIonSp
std::shared_ptr< const PeptideFragmentIon > PeptideFragmentIonSp
Definition
peptidefragmention.h:46
pappso::PeptideSp
std::shared_ptr< const Peptide > PeptideSp
Definition
aamodification.h:48
pappso::PeptideDirection::Cter
@ Cter
Definition
peptide.h:49
pappso::PeptideDirection::Nter
@ Nter
Definition
peptide.h:48
pappso::AaModificationP
const AaModification * AaModificationP
Definition
aamodification.h:52
pappso::PeptideFragmentIonListBaseSp
std::shared_ptr< const PeptideFragmentIonListBase > PeptideFragmentIonListBaseSp
Definition
peptidefragmentionlistbase.h:42
pappsoexception.h
peptidefragmentionlistbase.h
pappsomspp
core
peptide
peptidefragmentionlistbase.cpp
Generated on
for libpappsomspp by
1.17.0