31#include <QRegularExpression> 
  118      QStringList aa_list = 
m_accession.mid(9).split(
"=>");
 
  120      return QString(
"%1][%2")
 
  127      return QString(
"+%1").arg(QString::number(
m_mass, 
'f', 4));
 
  131      return QString(
"%1").arg(QString::number(
m_mass, 
'f', 4));
 
 
  149  MapAccessionModifications ret;
 
  167  qDebug() << new_mod->
m_mass;
 
 
  174  if(accession == 
"internal:Nter_hydrolytic_cleavage_H")
 
  180      term.
m_name        = 
"Nter hydrolytic cleavage H+";
 
  183  if(accession == 
"internal:Cter_hydrolytic_cleavage_HO")
 
  189      term.
m_name        = 
"Cter hydrolytic cleavage HO";
 
  192  if(accession.startsWith(
"MUTATION:"))
 
  194      QRegularExpression regexp_mutation(
"^MUTATION:([A-Z])=>([A-Z])$");
 
  195      QRegularExpressionMatch match = regexp_mutation.match(accession);
 
  198          qDebug() << match.capturedTexts()[1].at(0) << 
" " << match.capturedTexts()[2].at(0);
 
  200          Aa aa_from(match.capturedTexts()[1].toStdString().c_str()[0]);
 
  201          Aa aa_to(match.capturedTexts()[2].toStdString().c_str()[0]);
 
  203          return instance_mutation;
 
  207  if(accession.startsWith(
"C13N15:"))
 
  209      QRegularExpression regexp_label(
"^C13N15:([A-Z])$");
 
  210      QRegularExpressionMatch match = regexp_label.match(accession);
 
  213          char labelled_aa(match.capturedTexts()[1].toStdString().c_str()[0]);
 
  219          return instance_labelled_aa_p;
 
  254                QObject::tr(
"modification not found : [%1]\n%2").arg(accession).arg(e.
qwhat()));
 
 
  275      theoreticalm_mass += 
MASSCARBON * (it_atom->second);
 
  280      theoreticalm_mass += 
MPROTIUM * (it_atom->second);
 
  286      theoreticalm_mass += 
MASSOXYGEN * (it_atom->second);
 
  297      theoreticalm_mass += 
MASSSULFUR * (it_atom->second);
 
  300  qDebug() << theoreticalm_mass;
 
  314      m_mass = theoreticalm_mass;
 
  321          m_mass = theoreticalm_mass;
 
  326          qDebug() << 
"ERROR in AaModification::calculateMassFromChemicalComponents " 
  328                   << theoreticalm_mass << 
" m=" << 
m_mass << 
" diff=" << diff
 
 
  337  QString accession = QString(
"%1").arg(modificationMass);
 
  338  qDebug() << accession;
 
 
  364          std::pair<MapAccessionModifications::iterator, bool> insert_res =
 
  367          it = insert_res.first;
 
  378        QObject::tr(
"ERROR getting instance of : %1 NOT FOUND\n%2").arg(accession).arg(e.
qwhat()));
 
  383        QObject::tr(
"ERROR getting instance of %1\n%2").arg(accession).arg(e.
qwhat()));
 
  385  catch(std::exception &e)
 
  388        QObject::tr(
"ERROR getting instance of %1\n%2").arg(accession).arg(e.
what()));
 
 
  395  switch(amino_acid.toLatin1())
 
  492          QObject::tr(
"ERROR getting removal accession instance of amino acid: " 
 
  502  switch(amino_acid.toLatin1())
 
  608          QObject::tr(
"ERROR getting removal accession instance of amino acid: " 
 
  622  std::pair<MapAccessionModifications::iterator, bool> insert_res =
 
  624      std::pair<QString, AaModificationP>(oboterm.
getAccession(), 
nullptr));
 
  626  if(!insert_res.second)
 
  638  return insert_res.first->second;
 
 
  646                                      unsigned int position)
 
  715  if(peptide_sp.get()->size() == (position + 1))
 
  719  if((position == 0) || isCter)
 
  737  throw PappsoException(QObject::tr(
"tandem modification not found : %1 %2 %3 %4")
 
  740                          .arg(peptide_sp.get()->getSequence())
 
 
  767  catch(std::exception &e)
 
  770        QObject::tr(
"ERROR in AaModification::getNumberOfIsotope %2").arg(e.what()));
 
 
  788  QString accession(QString(
"MUTATION:%1=>%2").arg(aa_from.
getLetter()).arg(aa_to.
getLetter()));
 
  804  instance_mutation->
m_name =
 
  806  return instance_mutation;
 
 
  813  QString accession(QString(
"MUTATION:%1=>%2").arg(mut_from).arg(mut_to));
 
  820          Aa aa_from(mut_from.toLatin1());
 
  821          Aa aa_to(mut_to.toLatin1());
 
  824          std::pair<MapAccessionModifications::iterator, bool> insert_res =
 
  826              std::pair<QString, AaModificationP>(accession, instance_mutation));
 
  827          it = insert_res.first;
 
  838        QObject::tr(
"ERROR getting instance of : %1 NOT FOUND\n%2").arg(accession).arg(e.
qwhat()));
 
  843        QObject::tr(
"ERROR getting instance of %1\n%2").arg(accession).arg(e.
qwhat()));
 
  845  catch(std::exception &e)
 
  848        QObject::tr(
"ERROR getting instance of %1\n%2").arg(accession).arg(e.
what()));
 
 
  855  switch(from_aa.toLatin1())
 
  871  QString accession(QString(
"C13N15:%1").arg(from_aa));
 
  875  QString diff_formula;
 
  877  switch(from_aa.toLatin1())
 
  880        diff_formula = 
"(12)C -2 (13)C 2 (14)N -1 (15)N 1";
 
  883        diff_formula = 
"(12)C -3 (13)C 3 (14)N -1 (15)N 1";
 
  886        diff_formula = 
"(12)C -5 (13)C 5 (14)N -1 (15)N 1";
 
  889        diff_formula = 
"(12)C -6 (13)C 6 (14)N -1 (15)N 1";
 
  892        diff_formula = 
"(12)C -6 (13)C 6 (14)N -1 (15)N 1";
 
  895        diff_formula = 
"(12)C -3 (13)C 3 (14)N -1 (15)N 1";
 
  898        diff_formula = 
"(12)C -4 (13)C 4 (14)N -1 (15)N 1";
 
  901        diff_formula = 
"(12)C -3 (13)C 3 (14)N -1 (15)N 1";
 
  904        diff_formula = 
"(12)C -5 (13)C 5 (14)N -1 (15)N 1";
 
  907        diff_formula = 
"(12)C -4 (13)C 4 (14)N -1 (15)N 1";
 
  910        diff_formula = 
"(12)C -5 (13)C 5 (14)N -1 (15)N 1";
 
  913        diff_formula = 
"(12)C -4 (13)C 4 (14)N -2 (15)N 2";
 
  916        diff_formula = 
"(12)C -5 (13)C 5 (14)N -2 (15)N 2";
 
  919        diff_formula = 
"(12)C -11 (13)C 11 (14)N -2 (15)N 2";
 
  922        diff_formula = 
"(12)C -9 (13)C 9 (14)N -1 (15)N 1";
 
  925        diff_formula = 
"(12)C -6 (13)C 6 (14)N -3 (15)N 3";
 
  928        diff_formula = 
"(12)C -5 (13)C 5 (14)N -1 (15)N 1";
 
  932          QObject::tr(
"ERROR creating C13N15-labelled amino acid residue %1\n").arg(from_aa));
 
  938  obo_psi_term.
m_name        = QString(
"Fully C13N15-labelled %1").arg(from_aa);
 
  941  qDebug() << 
"obo_psi_term.m_diffFormula: " << obo_psi_term.
m_diffFormula;
 
 
virtual const char & getLetter() const
 
const QString & getName() const
 
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
 
int getNumberOfIsotope(Enums::Isotope isotope) const override final
get the number of isotopes C13, H2, O17, O18, N15, S33, S34, S36 in the molecule
 
std::map< Enums::Isotope, int > m_mapIsotope
 
void setDiffFormula(const pappso::ChemicalFormula &diff_formula)
 
static AaModificationP createInstance(const QString &saccession)
 
const QString & getAccession() const
 
const QString & getXrefOrigin() const
get list of amino acid on which this modification takes place
 
static AaModificationP getInstanceXtandemMod(const QString &type, pappso_double mass, const PeptideSp &peptide_sp, unsigned int position)
 
AaModification(AaModification &&toCopy)
 
pappso_double getMass() const
 
int getNumberOfAtom(Enums::AtomIsotopeSurvey atom) const override final
get the number of atom C, O, N, H in the molecule
 
void setXrefOrigin(const QString &origin)
set list of amino acid on which this modification takes place
 
std::map< QString, AaModificationP > MapAccessionModifications
 
static AaModificationP getInstance(const QString &accession)
 
static AaModificationP getInstanceRemovalAccessionByAaLetter(const QChar &amino_acid)
get a PSI MOD instance corresponding to the removal of the given amino acid find the modifications th...
 
static AaModificationP createInstanceC13N15LabelledAminoAcid(const QChar &aa_from)
get heavy amino acid modification C13 N15
 
static AaModificationP getInstanceCustomizedMod(pappso_double modificationMass)
 
const QString toProForma() const
get the amino acid in ProForma notation https://github.com/HUPO-PSI/ProForma/blob/master/README....
 
static AaModificationP getInstanceInsertionAccessionByAaLetter(const QChar &amino_acid)
get a PSI MOD instance corresponding to the insertion of the given amino acid find the modifications.
 
const QString m_accession
 
static AaModificationP createInstanceMutation(const Aa &aa_from, const Aa &aa_to)
 
void calculateMassFromChemicalComponents()
 
static MapAccessionModifications m_mapAccessionModifications
 
std::map< Enums::AtomIsotopeSurvey, int > m_atomCount
 
int getNumberOfAtom(Enums::AtomIsotopeSurvey atom) const override final
get the number of atom C, O, N, H in the molecule
 
pappso_double getMass() const override
 
const OboPsiModTerm & getOboPsiModTermWithAccession(const QString &accession) const
 
const OboPsiModTerm & getOboPsiModTermWithName(const QString &name) const
get the first occurence of term with this name
 
const OboPsiModTerm & getOne()
 
void setAccession(const QString &accession)
 
const QString & getAccession() const
 
const char * what() const noexcept override
 
virtual const QString & qwhat() const
 
static PrecisionPtr getDaltonInstance(pappso_double value)
get a Dalton precision pointer
 
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
 
const pappso_double DIFFS32S33(32.9714589101 - MASSSULFUR)
 
const pappso_double DIFFS32S34(33.9678670300 - MASSSULFUR)
 
const pappso_double DIFFO16O17(16.99913150 - MASSOXYGEN)
 
const pappso_double MASSCARBON(12)
 
const pappso_double MASSSULFUR(31.9720711741)
 
std::shared_ptr< const Peptide > PeptideSp
 
const pappso_double DIFFS32S36(35.9670812000 - MASSSULFUR)
 
const AaModification * AaModificationP
 
double pappso_double
A type definition for doubles.
 
const pappso_double MPROTIUM(1.007825032241)
 
const pappso_double MASSNITROGEN(14.0030740048)
 
const pappso_double MASSOXYGEN(15.99491461956)
 
const pappso_double DIFFO16O18(17.9991610 - MASSOXYGEN)
 
const PrecisionBase * PrecisionPtr
 
const pappso_double DIFFN14N15(15.0001088982 - MASSNITROGEN)
 
const pappso_double DIFFC12C13(1.0033548378)
 
const pappso_double DIFFH1H2(2.0141017778 - MPROTIUM)