From da90ec2ce2f2e4d5d2ab35df6dca150baf7efeaa Mon Sep 17 00:00:00 2001
From: Olivier Langella <olivier.langella@u-psud.fr>
Date: Fri, 24 Nov 2017 23:43:26 +0100
Subject: [PATCH] identification data source params written in xpip file

---
 .../identificationdatasource.cpp              |  9 ++++++++
 .../identificationdatasource.h                | 10 ++++++++
 src/output/xpip.cpp                           | 23 +++++++++++++++++++
 3 files changed, 42 insertions(+)

diff --git a/src/core/identification_sources/identificationdatasource.cpp b/src/core/identification_sources/identificationdatasource.cpp
index 7899da8e9..f3312f069 100644
--- a/src/core/identification_sources/identificationdatasource.cpp
+++ b/src/core/identification_sources/identificationdatasource.cpp
@@ -43,6 +43,15 @@ IdentificationDataSource::~IdentificationDataSource()
 {
 
 }
+
+const std::map<IdentificationEngineStatistics, QVariant> & IdentificationDataSource::getIdentificationEngineStatisticsMap() const {
+    return _param_stats;
+}
+
+const std::map<IdentificationEngineParam, QVariant> & IdentificationDataSource::getIdentificationEngineParamMap() const {
+    return _params;
+}
+
 const PeptideEvidenceStore & IdentificationDataSource::getPeptideEvidenceStore() const {
     return _peptide_evidence_store;
 }
diff --git a/src/core/identification_sources/identificationdatasource.h b/src/core/identification_sources/identificationdatasource.h
index 01a8d2202..52bf3cf03 100644
--- a/src/core/identification_sources/identificationdatasource.h
+++ b/src/core/identification_sources/identificationdatasource.h
@@ -114,6 +114,16 @@ public:
     void addFastaFile (FastaFileSp file);
     
     const std::vector<FastaFileSp> & getFastaFileList() const;
+    
+        
+    /** \brief get identification engine statistics map
+     */
+    virtual const std::map<IdentificationEngineStatistics, QVariant> & getIdentificationEngineStatisticsMap() const;
+    
+    /** \brief get identification engine param map
+     */
+    virtual const std::map<IdentificationEngineParam, QVariant> & getIdentificationEngineParamMap() const;
+
 
 protected :
     QString _resource_name;
diff --git a/src/output/xpip.cpp b/src/output/xpip.cpp
index ba1f7ce39..5b48a4b26 100644
--- a/src/output/xpip.cpp
+++ b/src/output/xpip.cpp
@@ -194,6 +194,29 @@ void Xpip::writeIdentificationDataSourceList(const IdentificationDataSourceStore
         _output_stream->writeAttribute("engine",QString("%1").arg(static_cast<std::int8_t>(ident_source_sp.get()->getIdentificationEngine())));
         _output_stream->writeAttribute("version",ident_source_sp.get()->getIdentificationEngineVersion());
 
+        const std::map<IdentificationEngineParam, QVariant> params = ident_source_sp.get()->getIdentificationEngineParamMap();
+        if (params.size() > 0) {
+            _output_stream->writeStartElement("params");
+            for (const std::pair<IdentificationEngineParam, QVariant> stat_pair: params) {
+                _output_stream->writeStartElement("param");
+                _output_stream->writeAttribute("key",QString("%1").arg(static_cast<std::int8_t>(stat_pair.first)));
+                _output_stream->writeAttribute("value",stat_pair.second.toString());
+                _output_stream->writeEndElement();
+            }
+            _output_stream->writeEndElement();
+        }
+        
+        const std::map<IdentificationEngineStatistics, QVariant> stats = ident_source_sp.get()->getIdentificationEngineStatisticsMap();
+        if (stats.size() > 0) {
+            _output_stream->writeStartElement("stats");
+            for (const std::pair<IdentificationEngineStatistics, QVariant> stat_pair: stats) {
+                _output_stream->writeStartElement("stat");
+                _output_stream->writeAttribute("key",QString("%1").arg(static_cast<std::int8_t>(stat_pair.first)));
+                _output_stream->writeAttribute("value",stat_pair.second.toString());
+                _output_stream->writeEndElement();
+            }
+            _output_stream->writeEndElement();
+        }
         _output_stream->writeEndElement();
     }
     _output_stream->writeEndElement();
-- 
GitLab