libpappsomspp
Library for mass spectrometry
pappso::AaModification Class Reference

#include <aamodification.h>

Inheritance diagram for pappso::AaModification:
pappso::AtomNumberInterface

Public Member Functions

 AaModification (AaModification &&toCopy)
 
const QString & getAccession () const
 
const QString & getName () const
 
 ~AaModification ()
 
pappso_double getMass () const
 
int getNumberOfAtom (AtomIsotopeSurvey atom) const override final
 get the number of atom C, O, N, H in the molecule More...
 
int getNumberOfIsotope (Isotope isotope) const override final
 get the number of isotopes C13, H2, O17, O18, N15, S33, S34, S36 in the molecule More...
 
bool isInternal () const
 

Static Public Member Functions

static AaModificationP getInstance (const QString &accession)
 
static AaModificationP getInstance (const OboPsiModTerm &oboterm)
 
static AaModificationP getInstanceMutation (const QChar &mut_from, const QChar &mut_to)
 get a fake modification coding a mutation from an amino acid to an other More...
 
static AaModificationP getInstanceXtandemMod (const QString &type, pappso_double mass, const PeptideSp &peptide_sp, unsigned int position)
 
static AaModificationP getInstanceCustomizedMod (pappso_double modificationMass)
 

Protected Member Functions

void setDiffFormula (const QString &diff_formula)
 
void setXrefOrigin (const QString &origin)
 set list of amino acid on which this modification takes place More...
 

Protected Attributes

const QString m_accession
 
QString m_name
 

Private Types

using MapAccessionModifications = std::map< QString, AaModificationP >
 

Private Member Functions

 AaModification (const QString &accession, pappso_double mass)
 
void calculateMassFromChemicalComponents ()
 

Static Private Member Functions

static AaModificationP createInstance (const QString &saccession)
 
static AaModificationP createInstance (const OboPsiModTerm &term)
 
static AaModificationP createInstanceMutation (const Aa &aa_from, const Aa &aa_to)
 

Private Attributes

pappso_double m_mass
 
QString m_origin
 
std::map< AtomIsotopeSurvey, int > m_atomCount
 
std::map< Isotope, int > m_mapIsotope
 

Static Private Attributes

static MapAccessionModifications m_mapAccessionModifications
 
static QMutex m_mutex
 

Detailed Description

Definition at line 56 of file aamodification.h.

Member Typedef Documentation

◆ MapAccessionModifications

Definition at line 71 of file aamodification.h.

Constructor & Destructor Documentation

◆ AaModification() [1/2]

pappso::AaModification::AaModification ( const QString &  accession,
pappso_double  mass 
)
private

Definition at line 56 of file aamodification.cpp.

57  : m_mass(mass), m_accession(accession)
58 {
59  m_atomCount = {{AtomIsotopeSurvey::C, 0},
60  {AtomIsotopeSurvey::H, 0},
61  {AtomIsotopeSurvey::N, 0},
62  {AtomIsotopeSurvey::O, 0},
63  {AtomIsotopeSurvey::S, 0}};
64 
65  m_mapIsotope = {{Isotope::C13, 0},
66  {Isotope::H2, 0},
67  {Isotope::N15, 0},
68  {Isotope::O17, 0},
69  {Isotope::O18, 0},
70  {Isotope::S33, 0},
71  {Isotope::S34, 0},
72  {Isotope::S36, 0}};
73 }

References pappso::C13, m_atomCount, and m_mapIsotope.

Referenced by createInstance(), createInstanceMutation(), and getInstanceCustomizedMod().

◆ AaModification() [2/2]

pappso::AaModification::AaModification ( AaModification &&  toCopy)

Definition at line 76 of file aamodification.cpp.

77  : m_mass(toCopy.m_mass),
78  m_atomCount(std::move(toCopy.m_atomCount)),
79  m_mapIsotope(toCopy.m_mapIsotope),
80  m_accession(toCopy.m_accession)
81 {
82  m_origin = toCopy.m_origin;
83 }

References m_origin.

◆ ~AaModification()

pappso::AaModification::~AaModification ( )

Definition at line 85 of file aamodification.cpp.

86 {
87 }

Member Function Documentation

◆ calculateMassFromChemicalComponents()

void pappso::AaModification::calculateMassFromChemicalComponents ( )
private

Definition at line 286 of file aamodification.cpp.

287 {
288  pappso_double theoreticalm_mass = 0;
289  std::map<AtomIsotopeSurvey, int>::const_iterator it_atom =
290  m_atomCount.find(AtomIsotopeSurvey::C);
291  if(it_atom != m_atomCount.end())
292  {
293  theoreticalm_mass += MASSCARBON * (it_atom->second);
294  }
295  it_atom = m_atomCount.find(AtomIsotopeSurvey::H);
296  if(it_atom != m_atomCount.end())
297  {
298  theoreticalm_mass += MPROTIUM * (it_atom->second);
299  }
300 
301  it_atom = m_atomCount.find(AtomIsotopeSurvey::O);
302  if(it_atom != m_atomCount.end())
303  {
304  theoreticalm_mass += MASSOXYGEN * (it_atom->second);
305  }
306 
307  it_atom = m_atomCount.find(AtomIsotopeSurvey::N);
308  if(it_atom != m_atomCount.end())
309  {
310  theoreticalm_mass += MASSNITROGEN * (it_atom->second);
311  }
312  it_atom = m_atomCount.find(AtomIsotopeSurvey::S);
313  if(it_atom != m_atomCount.end())
314  {
315  theoreticalm_mass += MASSSULFUR * (it_atom->second);
316  }
317 
318  qDebug() << theoreticalm_mass;
319 
320  theoreticalm_mass += DIFFC12C13 * m_mapIsotope.at(Isotope::C13);
321  theoreticalm_mass += DIFFH1H2 * m_mapIsotope.at(Isotope::H2);
322  theoreticalm_mass += DIFFN14N15 * m_mapIsotope.at(Isotope::N15);
323  theoreticalm_mass += DIFFO16O17 * m_mapIsotope.at(Isotope::O17);
324  theoreticalm_mass += DIFFO16O18 * m_mapIsotope.at(Isotope::O18);
325  theoreticalm_mass += DIFFS32S33 * m_mapIsotope.at(Isotope::S33);
326  theoreticalm_mass += DIFFS32S34 * m_mapIsotope.at(Isotope::S34);
327  theoreticalm_mass += DIFFS32S36 * m_mapIsotope.at(Isotope::S36);
328 
329 
330  pappso_double diff = std::fabs((pappso_double)m_mass - theoreticalm_mass);
331  if(diff < 0.001)
332  {
333  m_mass = theoreticalm_mass;
334  qDebug() << "AaModification::calculateMassFromChemicalComponents "
335  << diff;
336  }
337  else
338  {
339  qDebug()
340  << "ERROR in AaModification::calculateMassFromChemicalComponents theo="
341  << theoreticalm_mass << " m=" << m_mass << " diff=" << diff
342  << " accession=" << m_accession;
343  }
344 }

References pappso::C13, pappso::DIFFC12C13(), pappso::DIFFH1H2(), pappso::DIFFN14N15(), pappso::DIFFO16O17(), pappso::DIFFO16O18(), pappso::DIFFS32S33(), pappso::DIFFS32S34(), pappso::DIFFS32S36(), m_accession, m_atomCount, m_mapIsotope, m_mass, pappso::MASSCARBON(), pappso::MASSNITROGEN(), pappso::MASSOXYGEN(), pappso::MASSSULFUR(), and pappso::MPROTIUM().

Referenced by setDiffFormula().

◆ createInstance() [1/2]

AaModificationP pappso::AaModification::createInstance ( const OboPsiModTerm term)
staticprivate

Definition at line 109 of file aamodification.cpp.

110 {
111  AaModification *new_mod;
112  // qDebug() << " AaModification::createInstance begin";
113  new_mod = new AaModification(term.m_accession, term.m_diffMono);
114  // xref: DiffFormula: "C 0 H 0 N 0 O 1 S 0"
115  new_mod->setDiffFormula(term.m_diffFormula);
116  new_mod->setXrefOrigin(term.m_origin);
117  new_mod->m_name = term.m_name;
118  return new_mod;
119 }

References AaModification(), pappso::OboPsiModTerm::m_accession, pappso::OboPsiModTerm::m_diffFormula, pappso::OboPsiModTerm::m_diffMono, m_name, pappso::OboPsiModTerm::m_name, pappso::OboPsiModTerm::m_origin, setDiffFormula(), and setXrefOrigin().

◆ createInstance() [2/2]

AaModificationP pappso::AaModification::createInstance ( const QString &  saccession)
staticprivate

Definition at line 122 of file aamodification.cpp.

123 {
124  if(accession == "internal:Nter_hydrolytic_cleavage_H")
125  {
126  OboPsiModTerm term;
127  term.m_accession = accession;
128  term.m_diffFormula = "H 1";
129  term.m_diffMono = MPROTIUM;
130  term.m_name = "Nter hydrolytic cleavage H+";
131  return (AaModification::createInstance(term));
132  }
133  if(accession == "internal:Cter_hydrolytic_cleavage_HO")
134  {
135  OboPsiModTerm term;
136  term.m_accession = accession;
137  term.m_diffFormula = "H 1 O 1";
138  term.m_diffMono = MPROTIUM + MASSOXYGEN;
139  term.m_name = "Cter hydrolytic cleavage HO";
140  return (AaModification::createInstance(term));
141  }
142  if(accession.startsWith("MUTATION:"))
143  {
144  QRegExp regexp_mutation("^MUTATION:([A-Z])=>([A-Z])$");
145  if(regexp_mutation.exactMatch(accession))
146  {
147  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " "
148  << regexp_mutation.capturedTexts()[1].at(0) << " "
149  << regexp_mutation.capturedTexts()[2].at(0);
150 
151  Aa aa_from(
152  regexp_mutation.capturedTexts()[1].toStdString().c_str()[0]);
153  Aa aa_to(regexp_mutation.capturedTexts()[2].toStdString().c_str()[0]);
154  AaModificationP instance_mutation =
155  createInstanceMutation(aa_from, aa_to);
156  return instance_mutation;
157  // m_psiModLabel<<"|";
158  }
159  }
160  // initMyResource();
161  FilterOboPsiModSink term_list;
162  FilterOboPsiModTermAccession filterm_accession(term_list, accession);
163 
164  OboPsiMod psimod(filterm_accession);
165 
166  try
167  {
168  return (AaModification::createInstance(term_list.getOne()));
169  }
170  catch(ExceptionNotFound &e)
171  {
172  throw ExceptionNotFound(QObject::tr("modification not found : [%1]\n%2")
173  .arg(accession)
174  .arg(e.qwhat()));
175  }
176 }

References createInstanceMutation(), pappso::FilterOboPsiModSink::getOne(), pappso::OboPsiModTerm::m_accession, pappso::OboPsiModTerm::m_diffFormula, pappso::OboPsiModTerm::m_diffMono, pappso::OboPsiModTerm::m_name, pappso::MASSOXYGEN(), pappso::MPROTIUM(), and pappso::PappsoException::qwhat().

Referenced by getInstance().

◆ createInstanceMutation()

AaModificationP pappso::AaModification::createInstanceMutation ( const Aa aa_from,
const Aa aa_to 
)
staticprivate

Definition at line 580 of file aamodification.cpp.

581 {
582  QString accession(
583  QString("MUTATION:%1=>%2").arg(aa_from.getLetter()).arg(aa_to.getLetter()));
584  double diffMono = aa_to.getMass() - aa_from.getMass();
585  // not found
586  AaModification *instance_mutation;
587  // qDebug() << " AaModification::createInstance begin";
588  instance_mutation = new AaModification(accession, diffMono);
589  // xref: DiffFormula: "C 0 H 0 N 0 O 1 S 0"
590 
591  for(std::int8_t atomInt = (std::int8_t)AtomIsotopeSurvey::C;
592  atomInt != (std::int8_t)AtomIsotopeSurvey::last;
593  atomInt++)
594  {
595  AtomIsotopeSurvey atom = static_cast<AtomIsotopeSurvey>(atomInt);
596  instance_mutation->m_atomCount[atom] =
597  aa_to.getNumberOfAtom(atom) - aa_from.getNumberOfAtom(atom);
598  }
599  instance_mutation->m_name = QString("mutation from %1 to %2")
600  .arg(aa_from.getLetter())
601  .arg(aa_to.getLetter());
602  return instance_mutation;
603 }

References AaModification(), pappso::AaBase::getLetter(), pappso::Aa::getMass(), pappso::Aa::getNumberOfAtom(), pappso::last, m_atomCount, and m_name.

Referenced by createInstance(), and getInstanceMutation().

◆ getAccession()

const QString & pappso::AaModification::getAccession ( ) const

Definition at line 90 of file aamodification.cpp.

91 {
92 
93  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
94  return m_accession;
95 }

References m_accession.

Referenced by pappso::Aa::addAaModification(), pappso::Peptide::setInternalCterModification(), and pappso::Peptide::setInternalNterModification().

◆ getInstance() [1/2]

AaModificationP pappso::AaModification::getInstance ( const OboPsiModTerm oboterm)
static

Definition at line 412 of file aamodification.cpp.

413 {
414 
415  QMutexLocker locker(&m_mutex);
416  MapAccessionModifications::iterator it =
417  m_mapAccessionModifications.find(oboterm.m_accession);
418  if(it == m_mapAccessionModifications.end())
419  {
420  // not found
421  std::pair<MapAccessionModifications::iterator, bool> insert_res =
422  m_mapAccessionModifications.insert(std::pair<QString, AaModificationP>(
423  oboterm.m_accession, AaModification::createInstance(oboterm)));
424  it = insert_res.first;
425  }
426  else
427  {
428  // found
429  }
430  return it->second;
431 }

References createInstance(), pappso::OboPsiModTerm::m_accession, m_mapAccessionModifications, and m_mutex.

◆ getInstance() [2/2]

AaModificationP pappso::AaModification::getInstance ( const QString &  accession)
static

Definition at line 367 of file aamodification.cpp.

368 {
369  try
370  {
371  QMutexLocker locker(&m_mutex);
372  MapAccessionModifications::iterator it =
373  m_mapAccessionModifications.find(accession);
374  if(it == m_mapAccessionModifications.end())
375  {
376 
377  // not found
378  std::pair<MapAccessionModifications::iterator, bool> insert_res =
380  std::pair<QString, AaModificationP>(
381  accession, AaModification::createInstance(accession)));
382  it = insert_res.first;
383  }
384  else
385  {
386  // found
387  }
388  return it->second;
389  }
390  catch(ExceptionNotFound &e)
391  {
392  throw ExceptionNotFound(
393  QObject::tr("ERROR getting instance of : %1 NOT FOUND\n%2")
394  .arg(accession)
395  .arg(e.qwhat()));
396  }
397  catch(PappsoException &e)
398  {
399  throw PappsoException(QObject::tr("ERROR getting instance of %1\n%2")
400  .arg(accession)
401  .arg(e.qwhat()));
402  }
403  catch(std::exception &e)
404  {
405  throw PappsoException(QObject::tr("ERROR getting instance of %1\n%2")
406  .arg(accession)
407  .arg(e.what()));
408  }
409 }

References createInstance(), m_mapAccessionModifications, m_mutex, and pappso::PappsoException::qwhat().

Referenced by pappso::Peptide::Peptide(), pappso::PeptideFragment::PeptideFragment(), pappso::PeptideFragmentIonListBase::PeptideFragmentIonListBase(), getInstanceXtandemMod(), pappso::PeptideModificatorPipeline::parseFixedModification(), pappso::PeptideModificatorPipeline::parseLabeledModification(), pappso::PeptideModificatorPipeline::parsePotentialModification(), and pappso::PeptideStrParser::parseStringToPeptide().

◆ getInstanceCustomizedMod()

AaModificationP pappso::AaModification::getInstanceCustomizedMod ( pappso_double  modificationMass)
static

Definition at line 347 of file aamodification.cpp.

348 {
349  QString accession = QString("%1").arg(modificationMass);
350  qDebug() << "AaModification::getInstanceCustomizedMod " << accession;
351  QMutexLocker locker(&m_mutex);
352  if(m_mapAccessionModifications.find(accession) ==
354  {
355  // not found
356  m_mapAccessionModifications.insert(std::pair<QString, AaModification *>(
357  accession, new AaModification(accession, modificationMass)));
358  }
359  else
360  {
361  // found
362  }
363  return m_mapAccessionModifications.at(accession);
364 }

References AaModification(), m_mapAccessionModifications, and m_mutex.

Referenced by pappso::PeptideStrParser::parseStringToPeptide().

◆ getInstanceMutation()

AaModificationP pappso::AaModification::getInstanceMutation ( const QChar &  mut_from,
const QChar &  mut_to 
)
static

get a fake modification coding a mutation from an amino acid to an other

Parameters
mut_fromorginal amino acid
mut_totargeted amino acid

Definition at line 607 of file aamodification.cpp.

608 {
609  QString accession(QString("MUTATION:%1=>%2").arg(mut_from).arg(mut_to));
610  try
611  {
612  QMutexLocker locker(&m_mutex);
613  MapAccessionModifications::iterator it =
614  m_mapAccessionModifications.find(accession);
615  if(it == m_mapAccessionModifications.end())
616  {
617  Aa aa_from(mut_from.toLatin1());
618  Aa aa_to(mut_to.toLatin1());
619  AaModificationP instance_mutation =
620  createInstanceMutation(aa_from, aa_to);
621 
622  std::pair<MapAccessionModifications::iterator, bool> insert_res =
624  std::pair<QString, AaModificationP>(accession,
625  instance_mutation));
626  it = insert_res.first;
627  }
628  else
629  {
630  // found
631  }
632  return it->second;
633  }
634  catch(ExceptionNotFound &e)
635  {
636  throw ExceptionNotFound(
637  QObject::tr("ERROR getting instance of : %1 NOT FOUND\n%2")
638  .arg(accession)
639  .arg(e.qwhat()));
640  }
641  catch(PappsoException &e)
642  {
643  throw PappsoException(QObject::tr("ERROR getting instance of %1\n%2")
644  .arg(accession)
645  .arg(e.qwhat()));
646  }
647  catch(std::exception &e)
648  {
649  throw PappsoException(QObject::tr("ERROR getting instance of %1\n%2")
650  .arg(accession)
651  .arg(e.what()));
652  }
653 } // namespace pappso

References createInstanceMutation(), m_mapAccessionModifications, m_mutex, and pappso::PappsoException::qwhat().

◆ getInstanceXtandemMod()

AaModificationP pappso::AaModification::getInstanceXtandemMod ( const QString &  type,
pappso_double  mass,
const PeptideSp peptide_sp,
unsigned int  position 
)
static

Definition at line 435 of file aamodification.cpp.

439 {
441  if(MzRange(mass, precision).contains(getInstance("MOD:00719")->getMass()))
442  {
443  if(type == "M")
444  {
445  return getInstance("MOD:00719");
446  }
447  if(type == "K")
448  {
449  return getInstance("MOD:01047");
450  }
451  }
452  // accession== "MOD:00057"
453  if(MzRange(mass, precision).contains(getInstance("MOD:00408")->getMass()))
454  {
455  // id: MOD:00394
456  // name: acetylated residue
457  // potential N-terminus modifications
458  if(position == 0)
459  {
460  return getInstance("MOD:00408");
461  }
462  }
463  if(MzRange(mass, precision).contains(getInstance("MOD:01160")->getMass()))
464  {
465  //-17.02655
466  // loss of ammonia [MOD:01160] -17.026549
467  return getInstance("MOD:01160");
468  }
469 
470  if(MzRange(mass, precision).contains(getInstance("MOD:01060")->getMass()))
471  {
472  //// iodoacetamide [MOD:00397] 57.021464
473  if(type == "C")
474  {
475  return getInstance("MOD:01060");
476  }
477  else
478  {
479  return getInstance("MOD:00397");
480  }
481  }
482  if(MzRange(mass, precision).contains(getInstance("MOD:00704")->getMass()))
483  {
484  // loss of water
485  /*
486  if (position == 0) {
487  if (peptide_sp.get()->getSequence().startsWith("EG")) {
488  return getInstance("MOD:00365");
489  }
490  if (peptide_sp.get()->getSequence().startsWith("ES")) {
491  return getInstance("MOD:00953");
492  }
493  if (type == "E") {
494  return getInstance("MOD:00420");
495  }
496  }
497  */
498  // dehydrated residue [MOD:00704] -18.010565
499  return getInstance("MOD:00704");
500  }
501  if(MzRange(mass, precision).contains(getInstance("MOD:00696")->getMass()))
502  {
503  // phosphorylated residue [MOD:00696] 79.966330
504  return getInstance("MOD:00696");
505  }
506  bool isCter = false;
507  if(peptide_sp.get()->size() == (position + 1))
508  {
509  isCter = true;
510  }
511  if((position == 0) || isCter)
512  {
513  if(MzRange(mass, precision).contains(getInstance("MOD:00429")->getMass()))
514  {
515  // dimethyl
516  return getInstance("MOD:00429");
517  }
518  if(MzRange(mass, precision).contains(getInstance("MOD:00552")->getMass()))
519  {
520  // 4x(2)H labeled dimethyl residue
521  return getInstance("MOD:00552");
522  }
523  if(MzRange(mass, precision).contains(getInstance("MOD:00638")->getMass()))
524  {
525  // 2x(13)C,6x(2)H-dimethylated arginine
526  return getInstance("MOD:00638");
527  }
528  }
529  throw PappsoException(
530  QObject::tr("tandem modification not found : %1 %2 %3 %4")
531  .arg(type)
532  .arg(mass)
533  .arg(peptide_sp.get()->getSequence())
534  .arg(position));
535 }

References pappso::PrecisionFactory::getDaltonInstance(), getInstance(), and getMass().

◆ getMass()

pappso_double pappso::AaModification::getMass ( ) const

◆ getName()

const QString & pappso::AaModification::getName ( ) const

Definition at line 97 of file aamodification.cpp.

98 {
99  return m_name;
100 }

References m_name.

◆ getNumberOfAtom()

int pappso::AaModification::getNumberOfAtom ( AtomIsotopeSurvey  atom) const
finaloverridevirtual

get the number of atom C, O, N, H in the molecule

Implements pappso::AtomNumberInterface.

Definition at line 545 of file aamodification.cpp.

546 {
547  // qDebug() << "AaModification::getNumberOfAtom(AtomIsotopeSurvey atom) NOT
548  // IMPLEMENTED";
549  return m_atomCount.at(atom);
550 }

References m_atomCount.

Referenced by pappso::PeptideFragment::getNumberOfAtom().

◆ getNumberOfIsotope()

int pappso::AaModification::getNumberOfIsotope ( Isotope  isotope) const
finaloverridevirtual

get the number of isotopes C13, H2, O17, O18, N15, S33, S34, S36 in the molecule

Implements pappso::AtomNumberInterface.

Definition at line 554 of file aamodification.cpp.

555 {
556  try
557  {
558  return m_mapIsotope.at(isotope);
559  }
560  catch(std::exception &e)
561  {
562  throw PappsoException(
563  QObject::tr("ERROR in AaModification::getNumberOfIsotope %2")
564  .arg(e.what()));
565  }
566 }

References m_mapIsotope.

◆ isInternal()

bool pappso::AaModification::isInternal ( ) const

Definition at line 570 of file aamodification.cpp.

571 {
572  if(m_accession.startsWith("internal:"))
573  {
574  return true;
575  }
576  return false;
577 }

References m_accession.

◆ setDiffFormula()

void pappso::AaModification::setDiffFormula ( const QString &  diff_formula)
protected

Definition at line 186 of file aamodification.cpp.

187 {
188  QRegExp rx("(^|\\s)([C,H,O,N,H,S])\\s([-]{0,1}\\d+)");
189  int pos = 0;
190 
191  while((pos = rx.indexIn(diff_formula, pos)) != -1)
192  {
193  qDebug() << rx.cap(2) << " " << rx.cap(3);
194  if(rx.cap(2) == "C")
195  {
196  m_atomCount[AtomIsotopeSurvey::C] = rx.cap(3).toInt();
197  }
198  else if(rx.cap(2) == "H")
199  {
200  m_atomCount[AtomIsotopeSurvey::H] = rx.cap(3).toInt();
201  }
202  else if(rx.cap(2) == "N")
203  {
204  m_atomCount[AtomIsotopeSurvey::N] = rx.cap(3).toInt();
205  }
206  else if(rx.cap(2) == "O")
207  {
208  m_atomCount[AtomIsotopeSurvey::O] = rx.cap(3).toInt();
209  }
210  else if(rx.cap(2) == "S")
211  {
212  m_atomCount[AtomIsotopeSurvey::S] = rx.cap(3).toInt();
213  }
214  pos += rx.matchedLength();
215  }
216 
217  // look for isotopes :
218  rx.setPattern("\\(([-]{0,1}\\d+)\\)([C,H,O,N,H,S])\\s([-]{0,1}\\d+)");
219  pos = 0;
220 
221  while((pos = rx.indexIn(diff_formula, pos)) != -1)
222  {
223  qDebug() << rx.cap(1) << " " << rx.cap(2) << " " << rx.cap(3);
224  int number_of_isotopes = rx.cap(3).toInt();
225  if(rx.cap(2) == "C")
226  {
227  if(rx.cap(1) == "13")
228  {
229  m_mapIsotope.at(Isotope::C13) = number_of_isotopes;
230  }
231  m_atomCount[AtomIsotopeSurvey::C] += number_of_isotopes;
232  }
233  else if(rx.cap(2) == "H")
234  {
235  if(rx.cap(1) == "2")
236  {
237  m_mapIsotope.at(Isotope::H2) = number_of_isotopes;
238  }
239  m_atomCount[AtomIsotopeSurvey::H] += number_of_isotopes;
240  }
241  else if(rx.cap(2) == "N")
242  {
243  if(rx.cap(1) == "15")
244  {
245  m_mapIsotope.at(Isotope::N15) = number_of_isotopes;
246  }
247  m_atomCount[AtomIsotopeSurvey::N] += number_of_isotopes;
248  }
249  else if(rx.cap(2) == "O")
250  {
251  if(rx.cap(1) == "17")
252  {
253  m_mapIsotope.at(Isotope::O17) = number_of_isotopes;
254  }
255  else if(rx.cap(1) == "18")
256  {
257  m_mapIsotope.at(Isotope::O18) = number_of_isotopes;
258  }
259  m_atomCount[AtomIsotopeSurvey::O] += number_of_isotopes;
260  }
261  else if(rx.cap(2) == "S")
262  {
263  if(rx.cap(1) == "33")
264  {
265  m_mapIsotope.at(Isotope::S33) = number_of_isotopes;
266  }
267  else if(rx.cap(1) == "34")
268  {
269  m_mapIsotope.at(Isotope::S34) = number_of_isotopes;
270  }
271  else if(rx.cap(1) == "36")
272  {
273  m_mapIsotope.at(Isotope::S36) = number_of_isotopes;
274  }
275  m_atomCount[AtomIsotopeSurvey::S] += number_of_isotopes;
276  }
277  pos += rx.matchedLength();
278  }
279 
280 
282 }

References pappso::C13, calculateMassFromChemicalComponents(), m_atomCount, and m_mapIsotope.

Referenced by createInstance().

◆ setXrefOrigin()

void pappso::AaModification::setXrefOrigin ( const QString &  origin)
protected

set list of amino acid on which this modification takes place

  • origin string of the form "S T" for Serine or Threonine, "X" for any amino acid (see OBO PSI format)

Definition at line 179 of file aamodification.cpp.

180 {
181  // xref: Origin: "N"
182  // xref: Origin: "X"
183  m_origin = origin;
184 }

References m_origin.

Referenced by createInstance().

Member Data Documentation

◆ m_accession

const QString pappso::AaModification::m_accession
protected

Definition at line 77 of file aamodification.h.

Referenced by calculateMassFromChemicalComponents(), getAccession(), and isInternal().

◆ m_atomCount

std::map<AtomIsotopeSurvey, int> pappso::AaModification::m_atomCount
private

◆ m_mapAccessionModifications

AaModification::MapAccessionModifications pappso::AaModification::m_mapAccessionModifications
staticprivate
Initial value:
= [] {
return ret;
}()

Definition at line 72 of file aamodification.h.

Referenced by getInstance(), getInstanceCustomizedMod(), and getInstanceMutation().

◆ m_mapIsotope

std::map<Isotope, int> pappso::AaModification::m_mapIsotope
private

◆ m_mass

pappso_double pappso::AaModification::m_mass
private

Definition at line 59 of file aamodification.h.

Referenced by calculateMassFromChemicalComponents(), and getMass().

◆ m_mutex

QMutex pappso::AaModification::m_mutex
staticprivate

Definition at line 74 of file aamodification.h.

Referenced by getInstance(), getInstanceCustomizedMod(), and getInstanceMutation().

◆ m_name

QString pappso::AaModification::m_name
protected

Definition at line 78 of file aamodification.h.

Referenced by createInstance(), createInstanceMutation(), and getName().

◆ m_origin

QString pappso::AaModification::m_origin
private

Definition at line 60 of file aamodification.h.

Referenced by AaModification(), and setXrefOrigin().


The documentation for this class was generated from the following files:
pappso::pappso_double
double pappso_double
A type definition for doubles.
Definition: types.h:48
pappso::AaModification::m_mass
pappso_double m_mass
Definition: aamodification.h:59
pappso::AaModification::calculateMassFromChemicalComponents
void calculateMassFromChemicalComponents()
Definition: aamodification.cpp:286
pappso::AaModification::createInstanceMutation
static AaModificationP createInstanceMutation(const Aa &aa_from, const Aa &aa_to)
Definition: aamodification.cpp:580
pappso::AaModification::m_accession
const QString m_accession
Definition: aamodification.h:77
pappso::MASSCARBON
const pappso_double MASSCARBON(12)
pappso::DIFFN14N15
const pappso_double DIFFN14N15(15.0001088982 - MASSNITROGEN)
pappso::DIFFH1H2
const pappso_double DIFFH1H2(2.0141017778 - MPROTIUM)
pappso::DIFFS32S33
const pappso_double DIFFS32S33(32.97145876 - MASSSULFUR)
pappso::AaModification::AaModification
AaModification(const QString &accession, pappso_double mass)
Definition: aamodification.cpp:56
pappso::AaModification::getMass
pappso_double getMass() const
Definition: aamodification.cpp:538
pappso::AaModificationP
const AaModification * AaModificationP
Definition: aamodification.h:52
pappso::PrecisionFactory::getDaltonInstance
static PrecisionPtr getDaltonInstance(pappso_double value)
Definition: precision.cpp:129
pappso::DIFFS32S34
const pappso_double DIFFS32S34(33.96786690 - MASSSULFUR)
pappso::AaModification::m_mapAccessionModifications
static MapAccessionModifications m_mapAccessionModifications
Definition: aamodification.h:72
pappso::DIFFC12C13
const pappso_double DIFFC12C13(1.0033548378)
pappso::AaModification::getInstance
static AaModificationP getInstance(const QString &accession)
Definition: aamodification.cpp:367
pappso::AaModification::m_mapIsotope
std::map< Isotope, int > m_mapIsotope
Definition: aamodification.h:62
pappso::PrecisionPtr
const PrecisionBase * PrecisionPtr
Definition: precision.h:122
pappso::AaModification::MapAccessionModifications
std::map< QString, AaModificationP > MapAccessionModifications
Definition: aamodification.h:71
pappso::AaModification::m_atomCount
std::map< AtomIsotopeSurvey, int > m_atomCount
Definition: aamodification.h:61
pappso::DIFFS32S36
const pappso_double DIFFS32S36(35.96708076 - MASSSULFUR)
pappso::AaModification::createInstance
static AaModificationP createInstance(const QString &saccession)
Definition: aamodification.cpp:122
pappso::AtomIsotopeSurvey::last
@ last
pappso::MASSSULFUR
const pappso_double MASSSULFUR(31.97207100)
pappso::AaModification::m_mutex
static QMutex m_mutex
Definition: aamodification.h:74
pappso::Isotope::C13
@ C13
pappso::MASSOXYGEN
const pappso_double MASSOXYGEN(15.99491461956)
pappso::MPROTIUM
const pappso_double MPROTIUM(1.007825032241)
pappso::MASSNITROGEN
const pappso_double MASSNITROGEN(14.0030740048)
pappso::DIFFO16O17
const pappso_double DIFFO16O17(16.99913150 - MASSOXYGEN)
pappso::AaModification::m_name
QString m_name
Definition: aamodification.h:78
pappso::DIFFO16O18
const pappso_double DIFFO16O18(17.9991610 - MASSOXYGEN)
pappso::AtomIsotopeSurvey
AtomIsotopeSurvey
Definition: types.h:76
pappso::AaModification::m_origin
QString m_origin
Definition: aamodification.h:60