libpappsomspp
Library for mass spectrometry
pappso::PeptideModificatorPipeline Class Reference

#include <peptidemodificatorpipeline.h>

Inheritance diagram for pappso::PeptideModificatorPipeline:
pappso::PeptideModificatorInterface pappso::PeptideSpSinkInterface pappso::EnzymeProductInterface

Public Member Functions

 PeptideModificatorPipeline ()
 
 PeptideModificatorPipeline (const PeptideModificatorPipeline &other)
 
virtual ~PeptideModificatorPipeline ()
 
void addFixedModificationString (const QString &mod_str)
 
void addFixedNterModificationString (const QString &mod_str)
 
void addFixedCterModificationString (const QString &mod_str)
 
void addPotentialModificationString (const QString &mod_str)
 
void addPotentialNterModificationString (const QString &mod_str)
 
void addPotentialCterModificationString (const QString &mod_str)
 
void setSink (PeptideModificatorInterface *sink) override
 
void setPeptideSp (std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideSp &peptide_sp_original, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) override
 function to give the products of modifications for a digested peptide More...
 
void setPeptide (std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const QString &peptide_str, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) override
 function to give the products of a protein digestion by an enzyme More...
 
void addLabeledModificationString (const QString &mod_str)
 
- Public Member Functions inherited from pappso::PeptideModificatorInterface
virtual ~PeptideModificatorInterface ()
 

Private Member Functions

void parseFixedModification (const QString &mod_str, bool Nter, bool Cter, bool else_prot)
 
void privAddFixedModificationString (const QString &mod_str, bool Nter, bool Cter, bool else_prot)
 
void parsePotentialModification (const QString &mod_str, bool Nter, bool Cter, bool else_prot)
 
void privAddPotentialModificationString (const QString &mod_str, bool Nter, bool Cter, bool else_prot)
 
void parseLabeledModification (const QString &mod_str, bool Nter, bool Cter, bool else_prot)
 

Private Attributes

PeptideModificatorTeemp_peptideModificatorTee = nullptr
 
PeptideModificatorInterfacem_sink = nullptr
 
PeptideSpSinkInterfacemp_lastPeptideSinkInterface
 
PeptideModificatorInterfacemp_firstModificator = nullptr
 
std::vector< PeptideModificatorInterface * > m_pepModificatorPtrList
 

Detailed Description

Definition at line 33 of file peptidemodificatorpipeline.h.

Constructor & Destructor Documentation

◆ PeptideModificatorPipeline() [1/2]

PeptideModificatorPipeline::PeptideModificatorPipeline ( )

Definition at line 35 of file peptidemodificatorpipeline.cpp.

36 {
37 }

◆ PeptideModificatorPipeline() [2/2]

PeptideModificatorPipeline::PeptideModificatorPipeline ( const PeptideModificatorPipeline other)

Definition at line 39 of file peptidemodificatorpipeline.cpp.

41 {
42  throw PappsoException(
43  QObject::tr("unable to copy PeptideModificatorPipeline object"));
44  if(other.mp_peptideModificatorTee != nullptr)
45  {
46  // mp_peptideModificatorTee = new
47  // PeptideModificatorTee(other.mp_peptideModificatorTee);
48  }
49 
51  mp_firstModificator = nullptr;
52  for(auto p_mod : other.m_pepModificatorPtrList)
53  {
54  delete(p_mod);
55  }
56 
57 
58  m_sink = other.m_sink;
59 
61 
63 
65 }
std::vector< PeptideModificatorInterface * > m_pepModificatorPtrList
PeptideModificatorInterface * mp_firstModificator
PeptideSpSinkInterface * mp_lastPeptideSinkInterface

References m_pepModificatorPtrList, m_sink, mp_firstModificator, mp_lastPeptideSinkInterface, and mp_peptideModificatorTee.

◆ ~PeptideModificatorPipeline()

PeptideModificatorPipeline::~PeptideModificatorPipeline ( )
virtual

Definition at line 67 of file peptidemodificatorpipeline.cpp.

68 {
69 
70  for(auto p_mod : m_pepModificatorPtrList)
71  {
72  delete(p_mod);
73  }
74  if(mp_peptideModificatorTee == nullptr)
75  {
77  }
78 }

References m_pepModificatorPtrList, and mp_peptideModificatorTee.

Member Function Documentation

◆ addFixedCterModificationString()

void PeptideModificatorPipeline::addFixedCterModificationString ( const QString &  mod_str)

Definition at line 108 of file peptidemodificatorpipeline.cpp.

110 {
111  privAddFixedModificationString(mod_str, false, true, false);
112 }
void privAddFixedModificationString(const QString &mod_str, bool Nter, bool Cter, bool else_prot)

References privAddFixedModificationString().

◆ addFixedModificationString()

void PeptideModificatorPipeline::addFixedModificationString ( const QString &  mod_str)

Definition at line 97 of file peptidemodificatorpipeline.cpp.

98 {
99  privAddFixedModificationString(mod_str, true, true, true);
100 }

References privAddFixedModificationString().

◆ addFixedNterModificationString()

void PeptideModificatorPipeline::addFixedNterModificationString ( const QString &  mod_str)

Definition at line 102 of file peptidemodificatorpipeline.cpp.

104 {
105  privAddFixedModificationString(mod_str, true, false, false);
106 }

References privAddFixedModificationString().

◆ addLabeledModificationString()

void PeptideModificatorPipeline::addLabeledModificationString ( const QString &  mod_str)

Definition at line 261 of file peptidemodificatorpipeline.cpp.

262 {
263 
264  if(m_sink == nullptr)
265  {
266  throw PappsoException(QObject::tr(
267  "Please use setSink before addLabeledModificationString function"));
268  }
269  if(mp_peptideModificatorTee == nullptr)
270  {
272  }
273  if(mp_firstModificator == nullptr)
274  {
276  }
277 
278  // backup pointers
279  PeptideModificatorInterface *backup_sink = m_sink;
280 
281  PeptideSpSinkInterface *backup_p_last_peptide_sink_interface =
283 
284  PeptideModificatorInterface *backup_p_first_modificator = mp_firstModificator;
285 
286 
287  QStringList mod_list_str =
288  mod_str.simplified().replace(" ", "").split(",", Qt::SkipEmptyParts);
289  for(auto i = 0; i < mod_list_str.size(); ++i)
290  {
291  parseLabeledModification(mod_list_str[i], true, true, true);
292 
293  if(i == 0)
294  {
296  }
297  }
298 
299  m_sink = backup_sink;
300  mp_lastPeptideSinkInterface = backup_p_last_peptide_sink_interface;
301  mp_firstModificator = backup_p_first_modificator;
302 
304 }
void parseLabeledModification(const QString &mod_str, bool Nter, bool Cter, bool else_prot)
void addModificator(PeptideModificatorInterface *p_peptide_mod)
virtual void setSink(PeptideModificatorInterface *sink)=0

References pappso::PeptideModificatorTee::addModificator(), m_sink, mp_firstModificator, mp_lastPeptideSinkInterface, mp_peptideModificatorTee, parseLabeledModification(), and pappso::PeptideSpSinkInterface::setSink().

◆ addPotentialCterModificationString()

void PeptideModificatorPipeline::addPotentialCterModificationString ( const QString &  mod_str)

Definition at line 181 of file peptidemodificatorpipeline.cpp.

183 {
184  privAddPotentialModificationString(mod_str, false, true, false);
185 }
void privAddPotentialModificationString(const QString &mod_str, bool Nter, bool Cter, bool else_prot)

References privAddPotentialModificationString().

◆ addPotentialModificationString()

void PeptideModificatorPipeline::addPotentialModificationString ( const QString &  mod_str)

Definition at line 167 of file peptidemodificatorpipeline.cpp.

169 {
170  privAddPotentialModificationString(mod_str, true, true, true);
171 }

References privAddPotentialModificationString().

◆ addPotentialNterModificationString()

void PeptideModificatorPipeline::addPotentialNterModificationString ( const QString &  mod_str)

Definition at line 174 of file peptidemodificatorpipeline.cpp.

176 {
177  privAddPotentialModificationString(mod_str, true, false, false);
178 }

References privAddPotentialModificationString().

◆ parseFixedModification()

void PeptideModificatorPipeline::parseFixedModification ( const QString &  mod_str,
bool  Nter,
bool  Cter,
bool  else_prot 
)
private

Definition at line 135 of file peptidemodificatorpipeline.cpp.

139 {
140 
141  QStringList str_split = mod_str.split("@", Qt::SkipEmptyParts);
142 
144 
147  mod->setModificationPattern(str_split[1]);
148  mod->setSink(m_sink);
149  mod->setProtNter(Nter);
150  mod->setProtCter(Cter);
151  mod->setProtElse(else_prot);
152 
153  m_pepModificatorPtrList.push_back(mod);
154 
155  if(mp_firstModificator == nullptr)
156  {
157  mp_firstModificator = mod;
158  }
159  else
160  {
162  }
164 }
static AaModificationP getInstance(const QString &accession)
void setProtElse(bool arg1)
this modification concerns all peptides between Nter and Cter
void setProtCter(bool arg1)
this modification concerns the Cter peptide
void setSink(PeptideModificatorInterface *sink) override
void setProtNter(bool arg1)
this modification concerns the Nter peptide
virtual void setModificationPattern(QString &pattern) final
set the pattern on which the modification will be applied (usually the list of concerned AA)

References pappso::Cter, pappso::AaModification::getInstance(), m_pepModificatorPtrList, m_sink, mp_firstModificator, mp_lastPeptideSinkInterface, pappso::Nter, pappso::PeptideModificatorBase::setModificationPattern(), pappso::PeptideFixedModificationBuilder::setProtCter(), pappso::PeptideFixedModificationBuilder::setProtElse(), pappso::PeptideFixedModificationBuilder::setProtNter(), pappso::PeptideFixedModificationBuilder::setSink(), and pappso::PeptideSpSinkInterface::setSink().

Referenced by privAddFixedModificationString().

◆ parseLabeledModification()

void PeptideModificatorPipeline::parseLabeledModification ( const QString &  mod_str,
bool  Nter,
bool  Cter,
bool  else_prot 
)
private

◆ parsePotentialModification()

void PeptideModificatorPipeline::parsePotentialModification ( const QString &  mod_str,
bool  Nter,
bool  Cter,
bool  else_prot 
)
private

Definition at line 209 of file peptidemodificatorpipeline.cpp.

213 {
214 
215  QStringList str_split = mod_str.split("@", Qt::SkipEmptyParts);
216 
217  QString mod_acc_str = str_split[0];
218  QStringList str_acc_split = mod_acc_str.split("(", Qt::SkipEmptyParts);
219  pappso::AaModificationP aa_mod =
220  AaModification::getInstance(str_acc_split[0]);
221 
224 
225  // qDebug() << "PeptideModificatorPipeline::parsePotentialModification " << ;
226  if(str_acc_split.length() == 2)
227  {
228  QStringList max_num_str_list =
229  str_acc_split[1].replace(")", "").split("-", Qt::SkipEmptyParts);
230  if(max_num_str_list.length() == 1)
231  {
232  mod->setModificationCounter(max_num_str_list[0].toUInt());
233  }
234  else if(max_num_str_list.length() == 2)
235  {
236  mod->setMinNumberMod(max_num_str_list[0].toUInt());
237  mod->setMaxNumberMod(max_num_str_list[1].toUInt());
238  }
239  }
240  mod->setModificationPattern(str_split[1]);
241  mod->setSink(m_sink);
242  mod->setProtNter(Nter);
243  mod->setProtCter(Cter);
244  mod->setProtElse(else_prot);
245 
246  m_pepModificatorPtrList.push_back(mod);
247 
248  if(mp_firstModificator == nullptr)
249  {
250  mp_firstModificator = mod;
251  }
252  else
253  {
255  }
257 }
Modify a peptide shared pointer with a variable modification on one AA.
void setSink(PeptideModificatorInterface *sink) override
void setProtNter(bool arg1)
this modification concerns the Nter peptide
void setProtElse(bool arg1)
this modification concerns all peptides between Nter and Cter
void setProtCter(bool arg1)
this modification concerns the Cter peptide

References pappso::Cter, pappso::AaModification::getInstance(), m_pepModificatorPtrList, m_sink, mp_firstModificator, mp_lastPeptideSinkInterface, pappso::Nter, pappso::PeptideVariableModificationBuilder::setMaxNumberMod(), pappso::PeptideVariableModificationBuilder::setMinNumberMod(), pappso::PeptideVariableModificationBuilder::setModificationCounter(), pappso::PeptideModificatorBase::setModificationPattern(), pappso::PeptideVariableModificationBuilder::setProtCter(), pappso::PeptideVariableModificationBuilder::setProtElse(), pappso::PeptideVariableModificationBuilder::setProtNter(), pappso::PeptideVariableModificationBuilder::setSink(), and pappso::PeptideSpSinkInterface::setSink().

Referenced by privAddPotentialModificationString().

◆ privAddFixedModificationString()

void PeptideModificatorPipeline::privAddFixedModificationString ( const QString &  mod_str,
bool  Nter,
bool  Cter,
bool  else_prot 
)
private

Definition at line 115 of file peptidemodificatorpipeline.cpp.

117 {
118  //"MOD:00397@C, MOD:00398@R"
119  if(mp_peptideModificatorTee != nullptr)
120  {
121  throw PappsoException(
122  QObject::tr("Unable to add fixed modification string after "
123  "addLabeledModificationString function"));
124  }
125  QStringList mod_list_str =
126  mod_str.simplified().replace(" ", "").split(",", Qt::SkipEmptyParts);
127  for(auto i = 0; i < mod_list_str.size(); ++i)
128  {
129  parseFixedModification(mod_list_str[i], Nter, Cter, else_prot);
130  }
131 }
void parseFixedModification(const QString &mod_str, bool Nter, bool Cter, bool else_prot)

References pappso::Cter, mp_peptideModificatorTee, pappso::Nter, and parseFixedModification().

Referenced by addFixedCterModificationString(), addFixedModificationString(), and addFixedNterModificationString().

◆ privAddPotentialModificationString()

void PeptideModificatorPipeline::privAddPotentialModificationString ( const QString &  mod_str,
bool  Nter,
bool  Cter,
bool  else_prot 
)
private

Definition at line 188 of file peptidemodificatorpipeline.cpp.

190 {
191  //"MOD:00397@C, MOD:00398@R"
192  if(mp_peptideModificatorTee != nullptr)
193  {
194  throw PappsoException(
195  QObject::tr("Unable to add potential modification string after "
196  "addLabeledModificationString function"));
197  }
198 
199  QStringList mod_list_str =
200  mod_str.simplified().replace(" ", "").split(",", Qt::SkipEmptyParts);
201  for(auto i = 0; i < mod_list_str.size(); ++i)
202  {
203  parsePotentialModification(mod_list_str[i], Nter, Cter, else_prot);
204  }
205 }
void parsePotentialModification(const QString &mod_str, bool Nter, bool Cter, bool else_prot)

References pappso::Cter, mp_peptideModificatorTee, pappso::Nter, and parsePotentialModification().

Referenced by addPotentialCterModificationString(), addPotentialModificationString(), and addPotentialNterModificationString().

◆ setPeptide()

void PeptideModificatorPipeline::setPeptide ( std::int8_t  sequence_database_id,
const ProteinSp protein_sp,
bool  is_decoy,
const QString &  peptide,
unsigned int  start,
bool  is_nter,
unsigned int  missed_cleavage_number,
bool  semi_enzyme 
)
overridevirtual

function to give the products of a protein digestion by an enzyme

Parameters
sequence_database_idinteger that references the sequence fatabase (file, stream, url...)
protein_spshared pointer on the protein that was digested
is_decoytell if the current protein is a decoy (true) or normal (false) protein
peptideamino acid sequence of the peptide (string) produced by the digestion
startthe position of the first amino acid of the peptide in the original protein sequence. the first amino acid of the protein is at position 1.
is_nterboolean to tell if the peptide is an Nter peptide (to allow Methionin Nter removal)
missed_cleavage_numbernumber of missed cleavage sites (that the enzyme has not cut) fot the product
semi_enzymeboolean that tells if this peptide is the produce of a semi enzymatic lysis

Implements pappso::EnzymeProductInterface.

Definition at line 369 of file peptidemodificatorpipeline.cpp.

377 {
378 
379  qDebug() << "PeptideModificatorPipeline::setPeptide begin";
380 
381  Peptide peptide(peptide_str);
382 
383  PeptideSp peptide_sp = peptide.makePeptideSp();
384 
385  qDebug() << "PeptideModificatorPipeline::setPeptide m_sink->setPeptideSp";
386  setPeptideSp(sequence_database_id,
387  protein_sp,
388  is_decoy,
389  peptide_sp,
390  start,
391  is_nter,
392  missed_cleavage_number,
393  semi_enzyme);
394  qDebug() << "PeptideModificatorPipeline::setPeptide end";
395 }
void setPeptideSp(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideSp &peptide_sp_original, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) override
function to give the products of modifications for a digested peptide
std::shared_ptr< const Peptide > PeptideSp

References pappso::Peptide::makePeptideSp(), and setPeptideSp().

◆ setPeptideSp()

void PeptideModificatorPipeline::setPeptideSp ( std::int8_t  sequence_database_id,
const ProteinSp protein_sp,
bool  is_decoy,
const PeptideSp peptide_sp,
unsigned int  start,
bool  is_nter,
unsigned int  missed_cleavage_number,
bool  semi_enzyme 
)
overridevirtual

function to give the products of modifications for a digested peptide

Parameters
sequence_database_idinteger that references the sequence fatabase (file, stream, url...)
protein_spshared pointer on the protein that was initialy digested
is_decoytell if the current protein is a decoy (true) or normal (false) protein
peptidePeptide object containing sequence and possible modifications
startthe position of the first amino acid of the peptide in the original protein sequence. the first amino acid of the protein is at position 1.
is_nterboolean to tell if the peptide is an Nter peptide (to allow Methionin Nter removal)
missed_cleavage_numbernumber of missed cleavage sites (that the enzyme has not cut) fot the product
semi_enzymeboolean that tells if this peptide is the produce of a semi enzymatic lysis

Implements pappso::PeptideModificatorInterface.

Definition at line 334 of file peptidemodificatorpipeline.cpp.

342 {
343  if(mp_firstModificator == nullptr)
344  {
345  m_sink->setPeptideSp(sequence_database_id,
346  protein_sp,
347  is_decoy,
348  peptide_sp_original,
349  start,
350  is_nter,
351  missed_cleavage_number,
352  semi_enzyme);
353  }
354  else
355  {
356  mp_firstModificator->setPeptideSp(sequence_database_id,
357  protein_sp,
358  is_decoy,
359  peptide_sp_original,
360  start,
361  is_nter,
362  missed_cleavage_number,
363  semi_enzyme);
364  }
365 }
virtual void setPeptideSp(std::int8_t sequence_database_id, const ProteinSp &protein_sp, bool is_decoy, const PeptideSp &peptide_sp, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme)=0
function to give the products of modifications for a digested peptide

References m_sink, mp_firstModificator, and pappso::PeptideModificatorInterface::setPeptideSp().

Referenced by setPeptide().

◆ setSink()

void PeptideModificatorPipeline::setSink ( PeptideModificatorInterface sink)
overridevirtual

Implements pappso::PeptideSpSinkInterface.

Definition at line 81 of file peptidemodificatorpipeline.cpp.

82 {
83  if(mp_peptideModificatorTee != nullptr)
84  {
85  throw PappsoException(QObject::tr(
86  "Please use setSink before addLabeledModificationString function"));
87  }
88 
89  m_sink = sink;
90  if(mp_firstModificator != nullptr)
91  {
93  }
94 };

References m_sink, mp_firstModificator, mp_lastPeptideSinkInterface, mp_peptideModificatorTee, and pappso::PeptideSpSinkInterface::setSink().

Member Data Documentation

◆ m_pepModificatorPtrList

std::vector<PeptideModificatorInterface *> pappso::PeptideModificatorPipeline::m_pepModificatorPtrList
private

◆ m_sink

◆ mp_firstModificator

◆ mp_lastPeptideSinkInterface

PeptideSpSinkInterface* pappso::PeptideModificatorPipeline::mp_lastPeptideSinkInterface
private

◆ mp_peptideModificatorTee


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