37 #include "../pappsoexception.h"
38 #include "../mzrange.h"
39 #include "../peptide/peptide.h"
40 #include "../obo/filterobopsimodsink.h"
41 #include "../obo/filterobopsimodtermaccession.h"
42 #include "../exception/exceptionnotfound.h"
57 : m_mass(mass), m_accession(accession)
60 {AtomIsotopeSurvey::H, 0},
61 {AtomIsotopeSurvey::N, 0},
62 {AtomIsotopeSurvey::O, 0},
63 {AtomIsotopeSurvey::S, 0}};
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)
93 qDebug() << __FILE__ <<
" " << __FUNCTION__ <<
" " << __LINE__;
103 MapAccessionModifications ret;
124 if(accession ==
"internal:Nter_hydrolytic_cleavage_H")
130 term.
m_name =
"Nter hydrolytic cleavage H+";
133 if(accession ==
"internal:Cter_hydrolytic_cleavage_HO")
139 term.
m_name =
"Cter hydrolytic cleavage HO";
142 if(accession.startsWith(
"MUTATION:"))
144 QRegExp regexp_mutation(
"^MUTATION:([A-Z])=>([A-Z])$");
145 if(regexp_mutation.exactMatch(accession))
147 qDebug() << __FILE__ <<
" " << __FUNCTION__ <<
" " << __LINE__ <<
" "
148 << regexp_mutation.capturedTexts()[1].at(0) <<
" "
149 << regexp_mutation.capturedTexts()[2].at(0);
152 regexp_mutation.capturedTexts()[1].toStdString().c_str()[0]);
153 Aa aa_to(regexp_mutation.capturedTexts()[2].toStdString().c_str()[0]);
156 return instance_mutation;
188 QRegExp rx(
"(^|\\s)([C,H,O,N,H,S])\\s([-]{0,1}\\d+)");
191 while((pos = rx.indexIn(diff_formula, pos)) != -1)
193 qDebug() << rx.cap(2) <<
" " << rx.cap(3);
196 m_atomCount[AtomIsotopeSurvey::C] = rx.cap(3).toInt();
198 else if(rx.cap(2) ==
"H")
200 m_atomCount[AtomIsotopeSurvey::H] = rx.cap(3).toInt();
202 else if(rx.cap(2) ==
"N")
204 m_atomCount[AtomIsotopeSurvey::N] = rx.cap(3).toInt();
206 else if(rx.cap(2) ==
"O")
208 m_atomCount[AtomIsotopeSurvey::O] = rx.cap(3).toInt();
210 else if(rx.cap(2) ==
"S")
212 m_atomCount[AtomIsotopeSurvey::S] = rx.cap(3).toInt();
214 pos += rx.matchedLength();
218 rx.setPattern(
"\\(([-]{0,1}\\d+)\\)([C,H,O,N,H,S])\\s([-]{0,1}\\d+)");
221 while((pos = rx.indexIn(diff_formula, pos)) != -1)
223 qDebug() << rx.cap(1) <<
" " << rx.cap(2) <<
" " << rx.cap(3);
224 int number_of_isotopes = rx.cap(3).toInt();
227 if(rx.cap(1) ==
"13")
231 m_atomCount[AtomIsotopeSurvey::C] += number_of_isotopes;
233 else if(rx.cap(2) ==
"H")
239 m_atomCount[AtomIsotopeSurvey::H] += number_of_isotopes;
241 else if(rx.cap(2) ==
"N")
243 if(rx.cap(1) ==
"15")
247 m_atomCount[AtomIsotopeSurvey::N] += number_of_isotopes;
249 else if(rx.cap(2) ==
"O")
251 if(rx.cap(1) ==
"17")
255 else if(rx.cap(1) ==
"18")
259 m_atomCount[AtomIsotopeSurvey::O] += number_of_isotopes;
261 else if(rx.cap(2) ==
"S")
263 if(rx.cap(1) ==
"33")
267 else if(rx.cap(1) ==
"34")
271 else if(rx.cap(1) ==
"36")
275 m_atomCount[AtomIsotopeSurvey::S] += number_of_isotopes;
277 pos += rx.matchedLength();
289 std::map<AtomIsotopeSurvey, int>::const_iterator it_atom =
293 theoreticalm_mass +=
MASSCARBON * (it_atom->second);
298 theoreticalm_mass +=
MPROTIUM * (it_atom->second);
304 theoreticalm_mass +=
MASSOXYGEN * (it_atom->second);
315 theoreticalm_mass +=
MASSSULFUR * (it_atom->second);
318 qDebug() << theoreticalm_mass;
333 m_mass = theoreticalm_mass;
334 qDebug() <<
"AaModification::calculateMassFromChemicalComponents "
340 <<
"ERROR in AaModification::calculateMassFromChemicalComponents theo="
341 << theoreticalm_mass <<
" m=" <<
m_mass <<
" diff=" << diff
349 QString accession = QString(
"%1").arg(modificationMass);
350 qDebug() <<
"AaModification::getInstanceCustomizedMod " << accession;
372 MapAccessionModifications::iterator it =
378 std::pair<MapAccessionModifications::iterator, bool> insert_res =
380 std::pair<QString, AaModificationP>(
382 it = insert_res.first;
393 QObject::tr(
"ERROR getting instance of : %1 NOT FOUND\n%2")
403 catch(std::exception &e)
416 MapAccessionModifications::iterator it =
421 std::pair<MapAccessionModifications::iterator, bool> insert_res =
424 it = insert_res.first;
438 unsigned int position)
507 if(peptide_sp.get()->size() == (position + 1))
511 if((position == 0) || isCter)
530 QObject::tr(
"tandem modification not found : %1 %2 %3 %4")
533 .arg(peptide_sp.get()->getSequence())
560 catch(std::exception &e)
563 QObject::tr(
"ERROR in AaModification::getNumberOfIsotope %2")
591 for(std::int8_t atomInt = (std::int8_t)AtomIsotopeSurvey::C;
599 instance_mutation->
m_name = QString(
"mutation from %1 to %2")
602 return instance_mutation;
609 QString accession(QString(
"MUTATION:%1=>%2").arg(mut_from).arg(mut_to));
613 MapAccessionModifications::iterator it =
617 Aa aa_from(mut_from.toLatin1());
618 Aa aa_to(mut_to.toLatin1());
622 std::pair<MapAccessionModifications::iterator, bool> insert_res =
624 std::pair<QString, AaModificationP>(accession,
626 it = insert_res.first;
637 QObject::tr(
"ERROR getting instance of : %1 NOT FOUND\n%2")
647 catch(std::exception &e)