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 @@
#include <locale>
#include "../core/proteinxtp.h"
#include "../core/peptidextp.h"
#include "../utils/utils.h"
pwiz::identdata::IdentDataFile * getPwizIdentDataFile(const QString & filename);
......@@ -102,7 +103,7 @@ IdentificationEngine IdentificationPwizReader::getIdentificationEngine() const {
*/
IdentificationEngine identification_engine = IdentificationEngine::peptider;
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))
{
identification_engine = IdentificationEngine::XTandem;
......@@ -162,13 +163,16 @@ void IdentificationPwizReader::read(
for (pwiz::identdata::PeptidePtr seq_ptr :_pwiz_ident_data_file->sequenceCollection.peptides) {
pwiz::identdata::Peptide * peptide_pwiz = seq_ptr.get();
PeptideXtp peptide(QString::fromStdString( peptide_pwiz->peptideSequence));
//<Modification monoisotopicMassDelta="42.01056468" location="1">
// <cvParam accession="MOD:00394" cvRef="PSI-MOD" name="acetylated residue"/>
//</Modification>
for (pwiz::identdata::ModificationPtr mod_ptr :peptide_pwiz->modification) {
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;
for (const pwiz::data::CVParam & param: mod_ptr.get()->cvParams) {
qDebug() << "IdentificationPwizReader::read param " << QString::fromStdString(param.name());
......@@ -180,12 +184,12 @@ void IdentificationPwizReader::read(
}
*/
}
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());
peptide_sp = peptide_store.getInstance(peptide_sp);
map_id2peptide.insert(std::pair<QString, PeptideXtpSp>(QString::fromStdString( peptide_pwiz->id), peptide_sp));
......
......@@ -35,6 +35,8 @@
#include "../utils/peptidestore.h"
#include "../utils/proteinstore.h"
#include "../files/fastafile.h"
#include "../utils/utils.h"
XtandemSaxHandler::XtandemSaxHandler(Project * p_project, IdentificationGroup * p_identification_group,
IdentificationDataSource * p_identification_data_source):_p_project(p_project)
......@@ -314,7 +316,7 @@ bool XtandemSaxHandler::startElement_aa(QXmlAttributes attributes) {
//<aa type="M" at="624" modified="15.99491" />
bool is_ok = true;
//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;
_current_peptide_sp.get()->addAaModification(modif, position_in_prot-_p_peptide_match->getStart());
//qDebug() << "startElement_aa end" ;
......@@ -540,56 +542,3 @@ bool XtandemSaxHandler::characters(const QString &str) {
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:
bool endElement_domain();
bool endElement_note();
pappso::AaModificationP getAaModificationP(pappso::mz mass) const;
private:
std::vector<QString> _tag_stack;
QString _errorStr;
......
#include "utils.h"
#include <pappsomspp/exception/exceptionnotfound.h>
#include <pappsomspp/mass_range.h>
const QUrl Utils::getOlsUrl(QString psimod_accession) {
......@@ -33,3 +35,56 @@ const QString Utils::getDatabaseName(ExternalDatabase database) {
}
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 @@
#include <QString>
#include "types.h"
#include <pappsomspp/types.h>
#include <pappsomspp/amino_acid/aamodification.h>
#ifndef XTPUTILS_H
#define XTPUTILS_H
......@@ -33,6 +34,8 @@ public:
static const QUrl getOlsUrl(QString modification);
static const QString getDatabaseName(ExternalDatabase database);
static const QString getXmlDouble(pappso::pappso_double number);
static pappso::AaModificationP guessAaModificationPbyMonoisotopicMassDelta(pappso::mz mass);
};
#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