Skip to content
Snippets Groups Projects
Commit 6bf5b67a authored by Olivier Langella's avatar Olivier Langella
Browse files

guess modifications

parent 8efbec8a
No related branches found
No related tags found
No related merge requests found
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
#include <locale> #include <locale>
#include "../core/proteinxtp.h" #include "../core/proteinxtp.h"
#include "../core/peptidextp.h" #include "../core/peptidextp.h"
#include "../utils/utils.h"
pwiz::identdata::IdentDataFile * getPwizIdentDataFile(const QString & filename); pwiz::identdata::IdentDataFile * getPwizIdentDataFile(const QString & filename);
...@@ -102,7 +103,7 @@ IdentificationEngine IdentificationPwizReader::getIdentificationEngine() const { ...@@ -102,7 +103,7 @@ IdentificationEngine IdentificationPwizReader::getIdentificationEngine() const {
*/ */
IdentificationEngine identification_engine = IdentificationEngine::peptider; IdentificationEngine identification_engine = IdentificationEngine::peptider;
for (pwiz::identdata::AnalysisSoftwarePtr software_ptr :_pwiz_ident_data_file->analysisSoftwareList) { for (pwiz::identdata::AnalysisSoftwarePtr software_ptr :_pwiz_ident_data_file->analysisSoftwareList) {
// qDebug() << "IdentificationPwizReader::getIdentificationEngine " << QString::fromStdString(software_ptr.get()->cvParam(param).name); // qDebug() << "IdentificationPwizReader::getIdentificationEngine " << QString::fromStdString(software_ptr.get()->cvParam(param).name);
if (software_ptr.get()->softwareName.hasCVParam(pwiz::cv::MS_X_Tandem)) if (software_ptr.get()->softwareName.hasCVParam(pwiz::cv::MS_X_Tandem))
{ {
identification_engine = IdentificationEngine::XTandem; identification_engine = IdentificationEngine::XTandem;
...@@ -162,13 +163,16 @@ void IdentificationPwizReader::read( ...@@ -162,13 +163,16 @@ void IdentificationPwizReader::read(
for (pwiz::identdata::PeptidePtr seq_ptr :_pwiz_ident_data_file->sequenceCollection.peptides) { for (pwiz::identdata::PeptidePtr seq_ptr :_pwiz_ident_data_file->sequenceCollection.peptides) {
pwiz::identdata::Peptide * peptide_pwiz = seq_ptr.get(); pwiz::identdata::Peptide * peptide_pwiz = seq_ptr.get();
PeptideXtp peptide(QString::fromStdString( peptide_pwiz->peptideSequence)); PeptideXtp peptide(QString::fromStdString( peptide_pwiz->peptideSequence));
//<Modification monoisotopicMassDelta="42.01056468" location="1"> //<Modification monoisotopicMassDelta="42.01056468" location="1">
// <cvParam accession="MOD:00394" cvRef="PSI-MOD" name="acetylated residue"/> // <cvParam accession="MOD:00394" cvRef="PSI-MOD" name="acetylated residue"/>
//</Modification> //</Modification>
for (pwiz::identdata::ModificationPtr mod_ptr :peptide_pwiz->modification) { for (pwiz::identdata::ModificationPtr mod_ptr :peptide_pwiz->modification) {
unsigned int location = mod_ptr.get()->location; unsigned int location = mod_ptr.get()->location;
pappso::pappso_double mass_delta = mod_ptr.get()->monoisotopicMassDelta;
peptide.addAaModification(Utils::guessAaModificationPbyMonoisotopicMassDelta(mass_delta), location-1);
//std::vector<CVParam> cvParams; //std::vector<CVParam> cvParams;
for (const pwiz::data::CVParam & param: mod_ptr.get()->cvParams) { for (const pwiz::data::CVParam & param: mod_ptr.get()->cvParams) {
qDebug() << "IdentificationPwizReader::read param " << QString::fromStdString(param.name()); qDebug() << "IdentificationPwizReader::read param " << QString::fromStdString(param.name());
...@@ -180,12 +184,12 @@ void IdentificationPwizReader::read( ...@@ -180,12 +184,12 @@ void IdentificationPwizReader::read(
} }
*/ */
} }
for (const pwiz::data::UserParam & param: mod_ptr.get()->userParams) { for (const pwiz::data::UserParam & param: mod_ptr.get()->userParams) {
qDebug() << "IdentificationPwizReader::read UserParams " << QString::fromStdString(param.name); qDebug() << "IdentificationPwizReader::read UserParams " << QString::fromStdString(param.name);
} }
} }
PeptideXtpSp peptide_sp(peptide.makePeptideXtpSp()); PeptideXtpSp peptide_sp(peptide.makePeptideXtpSp());
peptide_sp = peptide_store.getInstance(peptide_sp); peptide_sp = peptide_store.getInstance(peptide_sp);
map_id2peptide.insert(std::pair<QString, PeptideXtpSp>(QString::fromStdString( peptide_pwiz->id), peptide_sp)); map_id2peptide.insert(std::pair<QString, PeptideXtpSp>(QString::fromStdString( peptide_pwiz->id), peptide_sp));
......
...@@ -35,6 +35,8 @@ ...@@ -35,6 +35,8 @@
#include "../utils/peptidestore.h" #include "../utils/peptidestore.h"
#include "../utils/proteinstore.h" #include "../utils/proteinstore.h"
#include "../files/fastafile.h" #include "../files/fastafile.h"
#include "../utils/utils.h"
XtandemSaxHandler::XtandemSaxHandler(Project * p_project, IdentificationGroup * p_identification_group, XtandemSaxHandler::XtandemSaxHandler(Project * p_project, IdentificationGroup * p_identification_group,
IdentificationDataSource * p_identification_data_source):_p_project(p_project) IdentificationDataSource * p_identification_data_source):_p_project(p_project)
...@@ -314,7 +316,7 @@ bool XtandemSaxHandler::startElement_aa(QXmlAttributes attributes) { ...@@ -314,7 +316,7 @@ bool XtandemSaxHandler::startElement_aa(QXmlAttributes attributes) {
//<aa type="M" at="624" modified="15.99491" /> //<aa type="M" at="624" modified="15.99491" />
bool is_ok = true; bool is_ok = true;
//qDebug() << "startElement_aa "; //qDebug() << "startElement_aa ";
pappso::AaModificationP modif = getAaModificationP(attributes.value("modified").simplified().toDouble()); pappso::AaModificationP modif = Utils::guessAaModificationPbyMonoisotopicMassDelta(attributes.value("modified").simplified().toDouble());
unsigned int position_in_prot = attributes.value("at").simplified().toUInt()-1; unsigned int position_in_prot = attributes.value("at").simplified().toUInt()-1;
_current_peptide_sp.get()->addAaModification(modif, position_in_prot-_p_peptide_match->getStart()); _current_peptide_sp.get()->addAaModification(modif, position_in_prot-_p_peptide_match->getStart());
//qDebug() << "startElement_aa end" ; //qDebug() << "startElement_aa end" ;
...@@ -540,56 +542,3 @@ bool XtandemSaxHandler::characters(const QString &str) { ...@@ -540,56 +542,3 @@ bool XtandemSaxHandler::characters(const QString &str) {
return true; return true;
} }
pappso::AaModificationP XtandemSaxHandler::getAaModificationP(pappso::mz mass) const {
pappso::PrecisionP precision = pappso::Precision::getDaltonInstance(0.01);
pappso::AaModificationP oxidation = pappso::AaModification::getInstance("MOD:00719");
if (pappso::MassRange(oxidation->getMass(),precision).contains(mass)) {
return oxidation;
}
pappso::AaModificationP iodoacetamide = pappso::AaModification::getInstance("MOD:00397");
if (pappso::MassRange(iodoacetamide->getMass(),precision).contains(mass)) {
return iodoacetamide;
}
pappso::AaModificationP acetylated = pappso::AaModification::getInstance("MOD:00408");
if (pappso::MassRange(acetylated->getMass(),precision).contains(mass)) {
return acetylated;
}
pappso::AaModificationP phosphorylated = pappso::AaModification::getInstance("MOD:00696");
if (pappso::MassRange(phosphorylated->getMass(),precision).contains(mass)) {
return phosphorylated;
}
pappso::AaModificationP ammonia = pappso::AaModification::getInstance("MOD:01160");
if (pappso::MassRange(ammonia->getMass(),precision).contains(mass)) {
return ammonia;
}
pappso::AaModificationP dehydrated = pappso::AaModification::getInstance("MOD:00704");
if (pappso::MassRange(dehydrated->getMass(),precision).contains(mass)) {
return dehydrated;
}
pappso::AaModificationP dimethylated = pappso::AaModification::getInstance("MOD:00429");
if (pappso::MassRange(dimethylated->getMass(),precision).contains(mass)) {
return dimethylated;
}
pappso::AaModificationP dimethylated_medium = pappso::AaModification::getInstance("MOD:00552");
if (pappso::MassRange(dimethylated_medium->getMass(),precision).contains(mass)) {
return dimethylated_medium;
}
pappso::AaModificationP dimethylated_heavy = pappso::AaModification::getInstance("MOD:00638");
if (pappso::MassRange(dimethylated_heavy->getMass(),precision).contains(mass)) {
return dimethylated_heavy;
}
pappso::AaModificationP DimethylpyrroleAdduct = pappso::AaModification::getInstance("MOD:00628");
if (pappso::MassRange(DimethylpyrroleAdduct->getMass(),precision).contains(mass)) {
return DimethylpyrroleAdduct;
}
// modification not found, creating customized mod :
return pappso::AaModification::getInstanceCustomizedMod(mass);
throw pappso::ExceptionNotFound(QObject::tr("XpipSaxHandler::getAaModificationP => modification not found for mass %1").arg(mass));
}
...@@ -75,8 +75,6 @@ private: ...@@ -75,8 +75,6 @@ private:
bool endElement_domain(); bool endElement_domain();
bool endElement_note(); bool endElement_note();
pappso::AaModificationP getAaModificationP(pappso::mz mass) const;
private: private:
std::vector<QString> _tag_stack; std::vector<QString> _tag_stack;
QString _errorStr; QString _errorStr;
......
#include "utils.h" #include "utils.h"
#include <pappsomspp/exception/exceptionnotfound.h>
#include <pappsomspp/mass_range.h>
const QUrl Utils::getOlsUrl(QString psimod_accession) { const QUrl Utils::getOlsUrl(QString psimod_accession) {
...@@ -33,3 +35,56 @@ const QString Utils::getDatabaseName(ExternalDatabase database) { ...@@ -33,3 +35,56 @@ const QString Utils::getDatabaseName(ExternalDatabase database) {
} }
return database_name; return database_name;
} }
pappso::AaModificationP Utils::guessAaModificationPbyMonoisotopicMassDelta(pappso::mz mass) {
pappso::PrecisionP precision = pappso::Precision::getDaltonInstance(0.01);
pappso::AaModificationP oxidation = pappso::AaModification::getInstance("MOD:00719");
if (pappso::MassRange(oxidation->getMass(),precision).contains(mass)) {
return oxidation;
}
pappso::AaModificationP iodoacetamide = pappso::AaModification::getInstance("MOD:00397");
if (pappso::MassRange(iodoacetamide->getMass(),precision).contains(mass)) {
return iodoacetamide;
}
pappso::AaModificationP acetylated = pappso::AaModification::getInstance("MOD:00408");
if (pappso::MassRange(acetylated->getMass(),precision).contains(mass)) {
return acetylated;
}
pappso::AaModificationP phosphorylated = pappso::AaModification::getInstance("MOD:00696");
if (pappso::MassRange(phosphorylated->getMass(),precision).contains(mass)) {
return phosphorylated;
}
pappso::AaModificationP ammonia = pappso::AaModification::getInstance("MOD:01160");
if (pappso::MassRange(ammonia->getMass(),precision).contains(mass)) {
return ammonia;
}
pappso::AaModificationP dehydrated = pappso::AaModification::getInstance("MOD:00704");
if (pappso::MassRange(dehydrated->getMass(),precision).contains(mass)) {
return dehydrated;
}
pappso::AaModificationP dimethylated = pappso::AaModification::getInstance("MOD:00429");
if (pappso::MassRange(dimethylated->getMass(),precision).contains(mass)) {
return dimethylated;
}
pappso::AaModificationP dimethylated_medium = pappso::AaModification::getInstance("MOD:00552");
if (pappso::MassRange(dimethylated_medium->getMass(),precision).contains(mass)) {
return dimethylated_medium;
}
pappso::AaModificationP dimethylated_heavy = pappso::AaModification::getInstance("MOD:00638");
if (pappso::MassRange(dimethylated_heavy->getMass(),precision).contains(mass)) {
return dimethylated_heavy;
}
pappso::AaModificationP DimethylpyrroleAdduct = pappso::AaModification::getInstance("MOD:00628");
if (pappso::MassRange(DimethylpyrroleAdduct->getMass(),precision).contains(mass)) {
return DimethylpyrroleAdduct;
}
// modification not found, creating customized mod :
return pappso::AaModification::getInstanceCustomizedMod(mass);
throw pappso::ExceptionNotFound(QObject::tr("Utils::guessAaModificationPbyMonoisotopicMassDelta => modification not found for mass %1").arg(mass));
}
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <QString> #include <QString>
#include "types.h" #include "types.h"
#include <pappsomspp/types.h> #include <pappsomspp/types.h>
#include <pappsomspp/amino_acid/aamodification.h>
#ifndef XTPUTILS_H #ifndef XTPUTILS_H
#define XTPUTILS_H #define XTPUTILS_H
...@@ -33,6 +34,8 @@ public: ...@@ -33,6 +34,8 @@ public:
static const QUrl getOlsUrl(QString modification); static const QUrl getOlsUrl(QString modification);
static const QString getDatabaseName(ExternalDatabase database); static const QString getDatabaseName(ExternalDatabase database);
static const QString getXmlDouble(pappso::pappso_double number); static const QString getXmlDouble(pappso::pappso_double number);
static pappso::AaModificationP guessAaModificationPbyMonoisotopicMassDelta(pappso::mz mass);
}; };
#endif // XTPUTILS_H #endif // XTPUTILS_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment