71 std::swap(ion_type_ref, ion_type);
87 if((std::int8_t)ion_type < (std::int8_t)8)
112 QString::const_iterator it(pepstr.begin());
114 while(it != pepstr.end())
116 qDebug() << it->toLatin1();
160 return std::make_shared<const Peptide>(*
this);
166 return std::make_shared<Peptide>(*
this);
170std::vector<Aa>::iterator
176std::vector<Aa>::iterator
182std::vector<Aa>::const_iterator
188std::vector<Aa>::const_iterator
194std::vector<Aa>::const_reverse_iterator
200std::vector<Aa>::const_reverse_iterator
222 if(position >=
size())
227 qDebug() <<
"Peptide::addAaModification begin " << position;
228 std::vector<Aa>::iterator it =
m_aaVec.begin() + position;
229 it->addAaModification(aaModification);
231 qDebug() <<
"Peptide::addAaModification end";
239 for(
auto &aa : *
this)
241 if(aa.getAminoAcidChar() == amino_acid)
243 aa.addAaModification(aaModification);
256 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
259 seq += it->getLetter();
268 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
270 QStringList modification_str_list;
273 modification_str_list <<
m_NterMod->getAccession();
276 seq += it->getLetter();
281 modification_str_list <<
m_CterMod->getAccession();
283 for(
auto &pmod : it->getModificationList())
285 modification_str_list << pmod->getAccession();
287 if(modification_str_list.size() > 0)
288 seq += QString(
"(%1)").arg(modification_str_list.join(
","));
289 modification_str_list.clear();
299 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
302 seq += it->toAbsoluteString();
305 return seq.replace(
"L",
"I");
313 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
316 seq += it->toString();
357 number +=
m_NterMod->getNumberOfAtom(atom);
359 number +=
m_CterMod->getNumberOfAtom(atom);
360 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
363 number += it->getNumberOfAtom(atom);
376 number +=
m_NterMod->getNumberOfIsotope(isotope);
378 number +=
m_CterMod->getNumberOfIsotope(isotope);
379 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
382 number += it->getNumberOfIsotope(isotope);
393 unsigned int number = 0;
394 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
397 number += it->getNumberOfModification(mod);
407 unsigned int number = 0;
408 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
411 if(std::find(aa_list.begin(), aa_list.end(), it->getLetter()) != aa_list.end())
413 number += it->getNumberOfModification(mod);
426 std::vector<Aa>::iterator it(
m_aaVec.begin());
429 it->replaceAaModification(oldmod, newmod);
443 std::vector<Aa>::iterator it(
m_aaVec.begin());
446 if(it->getAminoAcidChar() == aa)
448 it->replaceAaModification(oldmod, newmod);
458 std::vector<Aa>::iterator it(
m_aaVec.begin());
461 it->removeAaModification(mod);
469std::vector<unsigned int>
472 std::vector<unsigned int> position_list;
473 unsigned int position = 0;
474 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
477 unsigned int number = 0;
478 number += it->getNumberOfModification(mod);
479 for(
unsigned int j = 0; j < number; j++)
481 position_list.push_back(position);
487 return position_list;
490std::vector<unsigned int>
493 std::vector<unsigned int> position_list;
494 unsigned int position = 0;
495 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
498 if(std::find(aa_list.begin(), aa_list.end(), it->getLetter()) != aa_list.end())
500 unsigned int number = 0;
501 number += it->getNumberOfModification(mod);
502 for(
unsigned int j = 0; j < number; j++)
504 position_list.push_back(position);
511 return position_list;
514std::vector<unsigned int>
517 std::vector<unsigned int> position_list;
518 unsigned int number = 0;
519 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
522 if(it->getLetter() == aa)
523 position_list.push_back(number);
528 return position_list;
531std::vector<unsigned int>
534 std::vector<unsigned int> position_list;
535 unsigned int number = 0;
536 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
540 bool found = (std::find(list_aa.begin(), list_aa.end(), it->getLetter()) != list_aa.end());
543 position_list.push_back(number);
549 return position_list;
564 QObject::tr(
"modification is not a cleavage Nter modification : %1")
580 QObject::tr(
"modification is not a cleavage Cter modification : %1")
608 QObject::tr(
"modification is not a peptide Nter modification : mod == nulptr"));
623 QObject::tr(
"modification is not a peptide Cter modification : mod == nulptr"));
656 std::size_t k = (
size - 1);
657 for(std::size_t i = 0; i < (
size / 2); i++, k--)
691 std::vector<Aa>::iterator it(
m_aaVec.begin());
692 std::vector<Aa>::iterator itend(
m_aaVec.end());
693 for(; it != itend; it++)
695 it->replaceLeucineIsoleucine();
703 std::vector<Aa>::iterator it(
m_aaVec.begin());
720 std::vector<Aa>::iterator it(
m_aaVec.end());
754 QString nter_accession =
m_NterMod->getAccession();
755 seq = QString(
"[%1]-").arg(nter_accession);
757 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
760 seq += it->toProForma();
766 QString cter_accession =
m_CterMod->getAccession();
767 seq += QString(
"-[%1]").arg(cter_accession);
const QString & getAccession() const
static AaModificationP getInstance(const QString &accession)
virtual const ChemicalFormula getChemicalFormulaCharge(unsigned int charge) const
AaModificationP m_cleavageCterMod
void replaceLeucineIsoleucine()
PeptideSp makePeptideSp() const
Peptide(const QString &pepstr)
AaModificationP getCterModification() const
void setNterModification(AaModificationP mod)
void replaceAaModification(AaModificationP oldmod, AaModificationP newmod)
replaces all occurences of a modification by a new one
void removeNterAminoAcid()
std::vector< Aa >::const_reverse_iterator rend() const
virtual const ChemicalFormula getChemicalFormulaCharge(unsigned int charge) const override
std::vector< unsigned int > getModificationPositionList(AaModificationP mod) const
get modification positions
NoConstPeptideSp makeNoConstPeptideSp() const
virtual int getNumberOfIsotope(Enums::Isotope isotope) const override
get the number of isotopes C13, H2, O17, O18, N15, S33, S34, S36 in the molecule
virtual bool isPalindrome() const override
tells if the peptide sequence is a palindrome
std::vector< Aa >::const_reverse_iterator rbegin() const
AaModificationP getCleavageCterModification() const
const QString getLiAbsoluteString() const
get all sequence string with modifications and converting Leucine to Isoleucine
void removeCterAminoAcid()
void setGlobalModification(Enums::Isotope isotope_kind)
apply 100% isotope replacement
void setCleavageCterModification(AaModificationP mod)
void setCterModification(AaModificationP mod)
AaModificationP m_NterMod
virtual const ChemicalFormula getChemicalFormula() const override
void replaceAaModificationOnAminoAcid(Enums::AminoAcidChar aa, pappso::AaModificationP oldmod, pappso::AaModificationP newmod)
replaces all occurences of a modification by a new one on a specific amino acid
AaModificationP m_cleavageNterMod
const QString toAbsoluteString() const
print all modifications
AaModificationP getNterModification() const
unsigned int getNumberOfModification(AaModificationP mod) const
count modification occurence
const QString toString() const
print modification except internal modifications
QString toProForma() const
get the peptide model in ProForma notation https://github.com/HUPO-PSI/ProForma/blob/master/README....
AaModificationP getCleavageNterModification() const
void removeAaModification(AaModificationP mod)
removes all occurences of a modification
unsigned int size() const override
virtual int getNumberOfAtom(Enums::AtomIsotopeSurvey atom) const override
get the number of atom C, O, N, H in the molecule
void setCleavageNterModification(AaModificationP mod)
Aa & getAa(unsigned int position)
void addAaModificationOnAllAminoAcid(AaModificationP aaModification, Enums::AminoAcidChar amino_acid)
adds a modification to all amino acid of the sequence
std::vector< unsigned int > getAaPositionList(char aa) const
get positions of one amino acid in peptide
std::vector< Aa >::iterator begin()
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 >::iterator end()
AaModificationP m_CterMod
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
PeptideIon
Enums::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.
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
bool peptideIonTypeIsComplement(Enums::PeptideIon ion_type_ref, Enums::PeptideIon ion_type)
tells if an ion type is the complement ion of the other
bool operator<(Aa const &l, Aa const &r)
std::shared_ptr< const Peptide > PeptideSp
const AaModification * AaModificationP
double pappso_double
A type definition for doubles.
PeptideDirection getPeptideIonDirection(Enums::PeptideIon ion_type)
get the direction of a peptide ion
bool peptideIonIsNter(Enums::PeptideIon ion_type)
tells if an ion is Nter
bool operator==(Aa const &l, Aa const &r)
std::shared_ptr< Peptide > NoConstPeptideSp