34 #include "../pappsoexception.h"
35 #include "../exception/exceptionoutofrange.h"
36 #include "../exception/exceptionnotpossible.h"
46 std::swap(ion_type_ref, ion_type);
62 if((std::int8_t)ion_type < (std::int8_t)8)
82 QString::const_iterator it(pepstr.begin());
83 if(it != pepstr.end())
88 Aa nter_aa(it->toLatin1());
94 while(it != pepstr.end())
101 m_aaVec.back().addAaModification(
104 qDebug() <<
"blabla " <<
m_aaVec.back().toString();
113 : m_aaVec(peptide.m_aaVec), m_proxyMass(peptide.m_proxyMass)
119 : m_aaVec(std::move(toCopy.m_aaVec)), m_proxyMass(toCopy.m_proxyMass)
127 return std::make_shared<const Peptide>(*
this);
133 return std::make_shared<Peptide>(*
this);
138 unsigned int position)
140 if(position >=
size())
143 QObject::tr(
"position (%1) > size (%2)").arg(position).arg(
size()));
146 qDebug() <<
"Peptide::addAaModification begin " << position;
147 std::vector<Aa>::iterator it =
m_aaVec.begin() + position;
148 it->addAaModification(aaModification);
150 qDebug() <<
"Peptide::addAaModification end";
158 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
161 seq += it->getLetter();
170 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
173 seq += it->toAbsoluteString();
183 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
186 seq += it->toAbsoluteString();
189 return seq.replace(
"L",
"I");
197 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
200 seq += it->toString();
209 qDebug() <<
"Aa::getMass() begin";
226 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
229 number += it->getNumberOfAtom(atom);
240 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
243 number += it->getNumberOfIsotope(isotope);
254 unsigned int number = 0;
255 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
258 number += it->getNumberOfModification(mod);
267 const std::vector<char> &aa_list)
const
269 unsigned int number = 0;
270 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
273 if(std::find(aa_list.begin(), aa_list.end(), it->getLetter()) !=
276 number += it->getNumberOfModification(mod);
289 std::vector<Aa>::iterator it(
m_aaVec.begin());
292 it->replaceAaModification(oldmod, newmod);
301 std::vector<Aa>::iterator it(
m_aaVec.begin());
304 it->removeAaModification(mod);
312 std::vector<unsigned int>
315 std::vector<unsigned int> position_list;
316 unsigned int position = 0;
317 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
320 unsigned int number = 0;
321 number += it->getNumberOfModification(mod);
322 for(
unsigned int j = 0; j < number; j++)
324 position_list.push_back(position);
330 return position_list;
333 std::vector<unsigned int>
335 const std::vector<char> &aa_list)
const
337 std::vector<unsigned int> position_list;
338 unsigned int position = 0;
339 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
342 if(std::find(aa_list.begin(), aa_list.end(), it->getLetter()) !=
345 unsigned int number = 0;
346 number += it->getNumberOfModification(mod);
347 for(
unsigned int j = 0; j < number; j++)
349 position_list.push_back(position);
356 return position_list;
359 std::vector<unsigned int>
362 std::vector<unsigned int> position_list;
363 unsigned int number = 0;
364 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
367 if(it->getLetter() == aa)
368 position_list.push_back(number);
373 return position_list;
376 std::vector<unsigned int>
379 std::vector<unsigned int> position_list;
380 unsigned int number = 0;
381 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
386 (std::find(list_aa.begin(), list_aa.end(), it->getLetter()) !=
390 position_list.push_back(number);
396 return position_list;
402 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
405 return it->getInternalNterModification();
413 std::vector<Aa>::const_iterator it(
m_aaVec.end());
417 return it->getInternalCterModification();
424 std::vector<Aa>::iterator it(
m_aaVec.begin());
428 it->removeInternalNterModification();
435 std::vector<Aa>::iterator it(
m_aaVec.end());
440 it->removeInternalCterModification();
452 std::vector<Aa>::iterator it(
m_aaVec.begin());
455 it->addAaModification(mod);
465 QObject::tr(
"modification is not an internal Nter modification : %1")
475 std::vector<Aa>::iterator it(
m_aaVec.end());
479 it->addAaModification(mod);
489 QObject::tr(
"modification is not an internal Cter modification : %1")
499 m_aaVec.begin()->removeInternalNterModification();
502 m_aaVec.begin()->addAaModification(modNter);
511 m_aaVec.begin()->removeInternalNterModification();
514 m_aaVec.begin()->addAaModification(modNter);
523 std::size_t k = (
size - 1);
524 for(std::size_t i = 0; i < (
size / 2); i++, k--)
540 QObject::tr(
"no AA at position %1").arg(position));
550 QObject::tr(
"no AA at position %1").arg(position));
560 std::vector<Aa>::iterator it(
m_aaVec.begin());
561 std::vector<Aa>::iterator itend(
m_aaVec.end());
562 for(; it != itend; it++)
564 it->replaceLeucineIsoleucine();
572 std::vector<Aa>::iterator it(
m_aaVec.begin());
577 if(nter_modification !=
nullptr)
579 m_aaVec.begin()->addAaModification(nter_modification);
595 std::vector<Aa>::iterator it(
m_aaVec.end());
601 if(cter_modification !=
nullptr)
605 it->addAaModification(cter_modification);
const QString & getAccession() const
static AaModificationP getInstance(const QString &accession)
void addAaModification(AaModificationP aaModification)
void replaceLeucineIsoleucine()
PeptideSp makePeptideSp() const
Peptide(const QString &pepstr)
AaModificationP getInternalNterModification() const
virtual int getNumberOfIsotope(Isotope isotope) const override
get the number of isotopes C13, H2, O17, O18, N15, S33, S34, S36 in the molecule
void replaceAaModification(AaModificationP oldmod, AaModificationP newmod)
replaces all occurences of a modification by a new one
void removeNterAminoAcid()
std::vector< unsigned int > getModificationPositionList(AaModificationP mod) const
get modification positions
NoConstPeptideSp makeNoConstPeptideSp() const
virtual bool isPalindrome() const override
tells if the peptide sequence is a palindrome
const QString getLiAbsoluteString() const
get all sequence string with modifications and converting Leucine to Isoleucine
void removeCterAminoAcid()
void setInternalCterModification(AaModificationP mod)
const QString toAbsoluteString() const
print all modifications
pappso_double m_proxyMass
void removeInternalNterModification()
void setInternalNterModification(AaModificationP mod)
void removeInternalCterModification()
unsigned int getNumberOfModification(AaModificationP mod) const
count modification occurence
const QString toString() const
print modification except internal modifications
AaModificationP getInternalCterModification() const
void removeAaModification(AaModificationP mod)
removes all occurences of a modification
unsigned int size() const override
Aa & getAa(unsigned int position)
virtual int getNumberOfAtom(AtomIsotopeSurvey atom) const override
get the number of atom C, O, N, H in the molecule
std::vector< unsigned int > getAaPositionList(char aa) const
get positions of one amino acid in peptide
const QString getSequence() const override
print amino acid sequence without modifications
void addAaModification(AaModificationP aaModification, unsigned int position)
adds a modification to amino acid sequence
std::vector< Aa > m_aaVec
unsigned int countModificationOnAa(AaModificationP mod, const std::vector< char > &aa_list) const
count modification occurence
const Aa & getConstAa(unsigned int position) const
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
PeptideIon
PeptideIon enum defines all types of ions (Nter or Cter)
@ ystar
Cter amino ions + NH3 loss.
@ yo
Cter amino ions + H2O loss.
@ bstar
Nter acylium ions + NH3 loss.
@ ao
Nter aldimine ions + H2O loss.
PeptideDirection getPeptideIonDirection(PeptideIon ion_type)
get the direction of a peptide ion
std::shared_ptr< const Peptide > PeptideSp
double pappso_double
A type definition for doubles.
bool peptideIonTypeIsComplement(PeptideIon ion_type_ref, PeptideIon ion_type)
tells if an ion type is the complement ion of the other
bool peptideIonIsNter(PeptideIon ion_type)
tells if an ion is Nter
std::shared_ptr< Peptide > NoConstPeptideSp
peptide natural isotope model