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";
238 for(
auto &aa : *
this)
240 if(aa.getAminoAcidChar() == amino_acid)
242 aa.addAaModification(aaModification);
255 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
258 seq += it->getLetter();
267 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
269 QStringList modification_str_list;
272 modification_str_list <<
m_NterMod->getAccession();
275 seq += it->getLetter();
280 modification_str_list <<
m_CterMod->getAccession();
282 for(
auto &pmod : it->getModificationList())
284 modification_str_list << pmod->getAccession();
286 if(modification_str_list.size() > 0)
287 seq += QString(
"(%1)").arg(modification_str_list.join(
","));
288 modification_str_list.clear();
298 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
301 seq += it->toAbsoluteString();
304 return seq.replace(
"L",
"I");
312 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
315 seq += it->toString();
356 number +=
m_NterMod->getNumberOfAtom(atom);
358 number +=
m_CterMod->getNumberOfAtom(atom);
359 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
362 number += it->getNumberOfAtom(atom);
375 number +=
m_NterMod->getNumberOfIsotope(isotope);
377 number +=
m_CterMod->getNumberOfIsotope(isotope);
378 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
381 number += it->getNumberOfIsotope(isotope);
392 unsigned int number = 0;
393 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
396 number += it->getNumberOfModification(mod);
406 unsigned int number = 0;
407 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
410 if(std::find(aa_list.begin(), aa_list.end(), it->getLetter()) != aa_list.end())
412 number += it->getNumberOfModification(mod);
425 std::vector<Aa>::iterator it(
m_aaVec.begin());
428 it->replaceAaModification(oldmod, newmod);
442 std::vector<Aa>::iterator it(
m_aaVec.begin());
445 if(it->getAminoAcidChar() == aa)
447 it->replaceAaModification(oldmod, newmod);
457 std::vector<Aa>::iterator it(
m_aaVec.begin());
460 it->removeAaModification(mod);
468std::vector<unsigned int>
471 std::vector<unsigned int> position_list;
472 unsigned int position = 0;
473 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
476 unsigned int number = 0;
477 number += it->getNumberOfModification(mod);
478 for(
unsigned int j = 0; j < number; j++)
480 position_list.push_back(position);
486 return position_list;
489std::vector<unsigned int>
492 std::vector<unsigned int> position_list;
493 unsigned int position = 0;
494 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
497 if(std::find(aa_list.begin(), aa_list.end(), it->getLetter()) != aa_list.end())
499 unsigned int number = 0;
500 number += it->getNumberOfModification(mod);
501 for(
unsigned int j = 0; j < number; j++)
503 position_list.push_back(position);
510 return position_list;
513std::vector<unsigned int>
516 std::vector<unsigned int> position_list;
517 unsigned int number = 0;
518 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
521 if(it->getLetter() == aa)
522 position_list.push_back(number);
527 return position_list;
530std::vector<unsigned int>
533 std::vector<unsigned int> position_list;
534 unsigned int number = 0;
535 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
539 bool found = (std::find(list_aa.begin(), list_aa.end(), it->getLetter()) != list_aa.end());
542 position_list.push_back(number);
548 return position_list;
563 QObject::tr(
"modification is not a cleavage Nter modification : %1")
579 QObject::tr(
"modification is not a cleavage Cter modification : %1")
655 std::size_t k = (
size - 1);
656 for(std::size_t i = 0; i < (
size / 2); i++, k--)
690 std::vector<Aa>::iterator it(
m_aaVec.begin());
691 std::vector<Aa>::iterator itend(
m_aaVec.end());
692 for(; it != itend; it++)
694 it->replaceLeucineIsoleucine();
702 std::vector<Aa>::iterator it(
m_aaVec.begin());
719 std::vector<Aa>::iterator it(
m_aaVec.end());
753 QString nter_accession =
m_NterMod->getAccession();
754 seq = QString(
"[%1]-").arg(nter_accession);
756 std::vector<Aa>::const_iterator it(
m_aaVec.begin());
759 seq += it->toProForma();
765 QString cter_accession =
m_CterMod->getAccession();
766 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