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

WIP: new xpip parser

parent 69f3124c
No related branches found
No related tags found
No related merge requests found
...@@ -75,6 +75,9 @@ void IdentificationDataSource::setMsRunSp (MsRunSp ms_run_sp) { ...@@ -75,6 +75,9 @@ void IdentificationDataSource::setMsRunSp (MsRunSp ms_run_sp) {
MsRunSp IdentificationDataSource::getMsRunSp () const { MsRunSp IdentificationDataSource::getMsRunSp () const {
return (_ms_run_sp); return (_ms_run_sp);
} }
void IdentificationDataSource::setIdentificationEngine(IdentificationEngine engine) {
_engine = engine;
}
IdentificationEngine IdentificationDataSource::getIdentificationEngine() const { IdentificationEngine IdentificationDataSource::getIdentificationEngine() const {
return _engine; return _engine;
......
...@@ -70,6 +70,10 @@ public: ...@@ -70,6 +70,10 @@ public:
*/ */
virtual void parseTo(Project* p_project)=0; virtual void parseTo(Project* p_project)=0;
/** \brief set identification engine
*/
virtual void setIdentificationEngine(IdentificationEngine engine);
/** \brief identification engine /** \brief identification engine
*/ */
virtual IdentificationEngine getIdentificationEngine() const; virtual IdentificationEngine getIdentificationEngine() const;
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <pappsomspp/exception/exceptionnotfound.h> #include <pappsomspp/exception/exceptionnotfound.h>
#include <cmath> #include <cmath>
#include "../core/peptideevidence.h"
#include "../utils/peptidestore.h" #include "../utils/peptidestore.h"
#include "../utils/proteinstore.h" #include "../utils/proteinstore.h"
...@@ -67,14 +68,20 @@ bool XtpXpipSaxHandler::startElement(const QString & namespaceURI, const QString ...@@ -67,14 +68,20 @@ bool XtpXpipSaxHandler::startElement(const QString & namespaceURI, const QString
} }
} else if (qName == "protein_match") { } else if (qName == "protein_match") {
is_ok = startElement_protein_match(attributes); is_ok = startElement_protein_match(attributes);
} else if (qName == "peptide_match") {
is_ok = startElement_peptide_match(attributes);
} else if (qName == "protein") { } else if (qName == "protein") {
is_ok = startElement_protein(attributes); is_ok = startElement_protein(attributes);
} else if (qName == "identification_source") {
is_ok = startElement_identification_source(attributes);
} }
//<sample value="P6_08_10"/> //<sample value="P6_08_10"/>
else if (qName == "sample") { else if (qName == "sample") {
is_ok = startElement_msrun(attributes); is_ok = startElement_msrun(attributes);
} else if (qName == "peptide") { } else if (qName == "peptide") {
is_ok = startElement_peptide(attributes); is_ok = startElement_peptide(attributes);
} else if (qName == "peptide_evidence") {
is_ok = startElement_peptide_evidence(attributes);
} else if (qName == "modification") { } else if (qName == "modification") {
is_ok = startElement_modification(attributes); is_ok = startElement_modification(attributes);
} else if (qName == "mod") { } else if (qName == "mod") {
...@@ -187,6 +194,22 @@ bool XtpXpipSaxHandler::startElement_modification(QXmlAttributes attributes) { ...@@ -187,6 +194,22 @@ bool XtpXpipSaxHandler::startElement_modification(QXmlAttributes attributes) {
return true; return true;
} }
bool XtpXpipSaxHandler::startElement_identification_source(QXmlAttributes attributes) {
//<identification_source id="identa0" msrun_id="sampa0" path="/gorgone/pappso/formation/Janvier2014/TD/xml_tandem/20120906_balliau_extract_1_A01_urnb-1.xml" engine="1" version=""/>
qDebug() << "startElement_identification_source ";
IdentificationEngine engine = static_cast<IdentificationEngine>(attributes.value("engine").toUInt());
IdentificationDataSourceSp sp_ident_source = _p_project->getIdentificationDataSourceStore().getInstance(attributes.value("path").simplified(), engine);
sp_ident_source.get()->setXmlId(attributes.value("id").simplified());
_map_ident_sources.insert(std::pair<QString, IdentificationDataSourceSp>(sp_ident_source.get()->getXmlId(), sp_ident_source));
sp_ident_source->setMsRunSp(_map_msruns.at(attributes.value("msrun_id").simplified()));
sp_ident_source->setIdentificationEngineVersion(attributes.value("version"));
//_current_identification_group_p->addMsRunSp(ms_run);
qDebug() << "startElement_identification_source end" ;
return true;
}
bool XtpXpipSaxHandler::startElement_msrun(QXmlAttributes attributes) { bool XtpXpipSaxHandler::startElement_msrun(QXmlAttributes attributes) {
//<msrun id="sampa0" name="20120906_balliau_extract_1_A01_urnb-1" format="0" path="20120906_balliau_extract_1_A01_urnb-1"/> //<msrun id="sampa0" name="20120906_balliau_extract_1_A01_urnb-1" format="0" path="20120906_balliau_extract_1_A01_urnb-1"/>
...@@ -196,11 +219,56 @@ bool XtpXpipSaxHandler::startElement_msrun(QXmlAttributes attributes) { ...@@ -196,11 +219,56 @@ bool XtpXpipSaxHandler::startElement_msrun(QXmlAttributes attributes) {
ms_run.get()->setFilename(attributes.value("path").simplified()); ms_run.get()->setFilename(attributes.value("path").simplified());
ms_run.get()->setSampleName(attributes.value("name").simplified()); ms_run.get()->setSampleName(attributes.value("name").simplified());
ms_run.get()->setXmlId(attributes.value("id").simplified()); ms_run.get()->setXmlId(attributes.value("id").simplified());
_map_msruns.insert(std::pair<QString, MsRunSp>(ms_run.get()->getXmlId(), ms_run));
//_current_identification_group_p->addMsRunSp(ms_run); //_current_identification_group_p->addMsRunSp(ms_run);
qDebug() << "startElement_msrun end" ; qDebug() << "startElement_msrun end" ;
return true; return true;
} }
bool XtpXpipSaxHandler::startElement_peptide_evidence(QXmlAttributes attributes) {
qDebug() << "startElement_peptide_evidence ";
/*
* <peptide_evidence id="peb76" source_id="identa0" peptide_id="pd7688" scan="11743" rt="2170" evalue="8.1e-10" exp_mass="1655.755648" charge="2" checked="true">
<param key="0" value="48.5"/>
</peptide_evidence>
*/
IdentificationDataSourceSp sp_ident_source = _map_ident_sources.at(attributes.value("source_id").simplified());
unsigned int scan = attributes.value("scan").toUInt();
_p_peptide_evidence = new PeptideEvidence(sp_ident_source.get()->getMsRunSp().get(), scan);
_p_peptide_evidence->setIdentificationDataSource(sp_ident_source.get());
_p_peptide_evidence->setChecked(false);
if (attributes.value("checked").simplified().toLower() == "true") {
_p_peptide_evidence->setChecked(true);
}
_p_peptide_evidence->setCharge(attributes.value("charge").toUInt());
_p_peptide_evidence->setRetentionTime(attributes.value("rt").toDouble());
_p_peptide_evidence->setEvalue(attributes.value("evalue").toDouble());
_p_peptide_evidence->setExperimentalMass(attributes.value("exp_mass").toDouble());
_p_peptide_evidence->setPeptideXtpSp(_map_peptides.at( attributes.value("peptide_id").simplified()));
PeptideEvidenceSp sp_peptide_evidence = sp_ident_source.get()->getPeptideEvidenceStore().getInstance(_p_peptide_evidence);
_map_peptide_evidences.insert(std::pair<QString, PeptideEvidenceSp>(attributes.value("id").simplified(), sp_peptide_evidence));
qDebug() << "startElement_peptide_evidence end" ;
return true;
}
bool XtpXpipSaxHandler::startElement_peptide_match(QXmlAttributes attributes) {
qDebug() << "startElement_peptide_match ";
/*
* <protein_match acc="GRMZM2G138258_P01" checked="true">
<peptide_match source_id="identa0" peptide_id="pd3533" scan="1907" rt="646.406" evalue="0.00044" exp_mass="2190.816924" start="103" charge="3" checked="true">
<param key="0" value="23.6"/>
</peptide_match>
*/
_p_protein_match = new ProteinMatch();
qDebug() << "startElement_peptide_match end" ;
return true;
}
bool XtpXpipSaxHandler::startElement_protein_match(QXmlAttributes attributes) { bool XtpXpipSaxHandler::startElement_protein_match(QXmlAttributes attributes) {
qDebug() << "startElement_protein_match "; qDebug() << "startElement_protein_match ";
......
...@@ -70,9 +70,12 @@ private: ...@@ -70,9 +70,12 @@ private:
bool startElement_description(QXmlAttributes attributes); bool startElement_description(QXmlAttributes attributes);
bool startElement_fasta_file(QXmlAttributes attributes); bool startElement_fasta_file(QXmlAttributes attributes);
bool startElement_protein_match(QXmlAttributes attributes); bool startElement_protein_match(QXmlAttributes attributes);
bool startElement_peptide_match(QXmlAttributes attributes);
bool startElement_peptide(QXmlAttributes attributes); bool startElement_peptide(QXmlAttributes attributes);
bool startElement_peptide_evidence(QXmlAttributes attributes);
bool startElement_protein(QXmlAttributes attributes); bool startElement_protein(QXmlAttributes attributes);
bool startElement_msrun(QXmlAttributes attributes); bool startElement_msrun(QXmlAttributes attributes);
bool startElement_identification_source(QXmlAttributes attributes);
bool startElement_modification(QXmlAttributes attributes); bool startElement_modification(QXmlAttributes attributes);
bool startElement_mod(QXmlAttributes attributes); bool startElement_mod(QXmlAttributes attributes);
//bool endElement_identification(); //bool endElement_identification();
...@@ -90,12 +93,16 @@ private: ...@@ -90,12 +93,16 @@ private:
Project * _p_project; Project * _p_project;
ProteinMatch * _p_protein_match; ProteinMatch * _p_protein_match;
PeptideMatch * _p_peptide_match; PeptideMatch _current_peptide_match;
PeptideEvidence * _p_peptide_evidence;
IdentificationGroup * _current_identification_group_p; IdentificationGroup * _current_identification_group_p;
std::map<QString, pappso::AaModificationP> _map_modifs; std::map<QString, pappso::AaModificationP> _map_modifs;
std::map<QString, FastaFileSp> _map_fasta_files; std::map<QString, FastaFileSp> _map_fasta_files;
std::map<QString, ProteinXtpSp> _map_proteins; std::map<QString, ProteinXtpSp> _map_proteins;
std::map<QString, MsRunSp> _map_msruns;
std::map<QString, IdentificationDataSourceSp> _map_ident_sources;
std::map<QString, PeptideEvidenceSp> _map_peptide_evidences;
ProteinXtp _current_protein; ProteinXtp _current_protein;
PeptideXtpSp _current_peptide_sp; PeptideXtpSp _current_peptide_sp;
std::map<QString, PeptideXtpSp> _map_peptides; std::map<QString, PeptideXtpSp> _map_peptides;
......
...@@ -44,6 +44,39 @@ IdentificationDataSourceStore::~IdentificationDataSourceStore() ...@@ -44,6 +44,39 @@ IdentificationDataSourceStore::~IdentificationDataSourceStore()
} }
IdentificationDataSourceSp IdentificationDataSourceStore::getInstance(const QString & location, IdentificationEngine engine) {
qDebug() << "IdentificationDataSourceStore::getInstance begin " << location;
qDebug() << " " << _map_identification_data_sources.size();
std::map< QString, IdentificationDataSourceSp >::iterator it = _map_identification_data_sources.find(location);
if (it != _map_identification_data_sources.end()) {
return it->second;
}
else {
QFileInfo location_file(location);
QString ext = location_file.suffix();
//QString sample_name = location_file.baseName();
IdentificationDataSourceSp p_identfile = nullptr;
if (ext.toLower() == "xml") {
//X!Tandem result file
p_identfile = std::make_shared<IdentificationXtandemFile>(location_file);
} else if (ext.toLower() == "pep") {
//pep xml file
p_identfile = std::make_shared<IdentificationPwizFile>(location_file);
} else {
p_identfile = std::make_shared<IdentificationPwizFile>(location_file);
}
if (p_identfile == nullptr) {
throw pappso::PappsoException(QObject::tr("Identification resource %1 not recognized (null pointer)").arg(location));
}
p_identfile.get()->setXmlId(QString("ident%1").arg(pappso::Utils::getLexicalOrderedString(_map_identification_data_sources.size())));
p_identfile.get()->setIdentificationEngine(engine);
_map_identification_data_sources.insert(std::pair< QString, IdentificationDataSourceSp >(location, p_identfile));
_map_identification_data_sources.insert(std::pair< QString, IdentificationDataSourceSp >(location_file.absoluteFilePath(), p_identfile));
return p_identfile;
}
throw pappso::PappsoException(QObject::tr("Identification resource %1 not recognized").arg(location));
}
IdentificationDataSourceSp IdentificationDataSourceStore::getInstance(const QString & location) { IdentificationDataSourceSp IdentificationDataSourceStore::getInstance(const QString & location) {
qDebug() << "IdentificationDataSourceStore::getInstance begin " << location; qDebug() << "IdentificationDataSourceStore::getInstance begin " << location;
qDebug() << " " << _map_identification_data_sources.size(); qDebug() << " " << _map_identification_data_sources.size();
...@@ -59,18 +92,17 @@ IdentificationDataSourceSp IdentificationDataSourceStore::getInstance(const QStr ...@@ -59,18 +92,17 @@ IdentificationDataSourceSp IdentificationDataSourceStore::getInstance(const QStr
if (ext.toLower() == "xml") { if (ext.toLower() == "xml") {
//X!Tandem result file //X!Tandem result file
p_identfile = std::make_shared<IdentificationXtandemFile>(location_file); p_identfile = std::make_shared<IdentificationXtandemFile>(location_file);
} else } else if (ext.toLower() == "pep") {
if (ext.toLower() == "pep") {
//pep xml file //pep xml file
p_identfile = std::make_shared<IdentificationPwizFile>(location_file); p_identfile = std::make_shared<IdentificationPwizFile>(location_file);
}else { } else {
p_identfile = std::make_shared<IdentificationPwizFile>(location_file); p_identfile = std::make_shared<IdentificationPwizFile>(location_file);
} }
if (p_identfile == nullptr) { if (p_identfile == nullptr) {
throw pappso::PappsoException(QObject::tr("Identification resource %1 not recognized (null pointer)").arg(location)); throw pappso::PappsoException(QObject::tr("Identification resource %1 not recognized (null pointer)").arg(location));
} }
p_identfile.get()->setXmlId(QString("ident%1").arg(pappso::Utils::getLexicalOrderedString(_map_identification_data_sources.size()))); p_identfile.get()->setXmlId(QString("ident%1").arg(pappso::Utils::getLexicalOrderedString(_map_identification_data_sources.size())));
_map_identification_data_sources.insert(std::pair< QString, IdentificationDataSourceSp >(location, p_identfile)); _map_identification_data_sources.insert(std::pair< QString, IdentificationDataSourceSp >(location, p_identfile));
_map_identification_data_sources.insert(std::pair< QString, IdentificationDataSourceSp >(location_file.absoluteFilePath(), p_identfile)); _map_identification_data_sources.insert(std::pair< QString, IdentificationDataSourceSp >(location_file.absoluteFilePath(), p_identfile));
return p_identfile; return p_identfile;
......
...@@ -42,6 +42,7 @@ public: ...@@ -42,6 +42,7 @@ public:
IdentificationDataSourceStore(); IdentificationDataSourceStore();
~IdentificationDataSourceStore(); ~IdentificationDataSourceStore();
IdentificationDataSourceSp getInstance(const QString & location); IdentificationDataSourceSp getInstance(const QString & location);
IdentificationDataSourceSp getInstance(const QString & location, IdentificationEngine engine);
std::vector<IdentificationDataSourceSp> getIdentificationDataSourceList() const; std::vector<IdentificationDataSourceSp> getIdentificationDataSourceList() const;
private : private :
......
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