From 00e57c9c12a939616ebf84bbbb8a98d656547cca Mon Sep 17 00:00:00 2001
From: Olivier Langella <olivier.langella@u-psud.fr>
Date: Mon, 5 Mar 2018 23:03:40 +0100
Subject: [PATCH] WIP: Mascot parser

---
 .../identificationdatasource.cpp                      | 11 ++++++++++-
 .../identification_sources/identificationdatasource.h |  1 +
 .../identificationmascotdatfile.cpp                   |  6 ++++++
 .../identificationmascotdatfile.h                     |  4 +++-
 src/core/identificationgroup.cpp                      |  2 ++
 src/core/peptideevidence.cpp                          |  4 +---
 src/input/mascot/mascotdatparser.cpp                  |  2 ++
 src/input/mascot/mimeparser.cpp                       |  5 ++++-
 8 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/src/core/identification_sources/identificationdatasource.cpp b/src/core/identification_sources/identificationdatasource.cpp
index d368fd091..4ae412c97 100644
--- a/src/core/identification_sources/identificationdatasource.cpp
+++ b/src/core/identification_sources/identificationdatasource.cpp
@@ -26,6 +26,7 @@
 #include <pappsomspp/pappsoexception.h>
 #include <QFileInfo>
 #include "../../utils/readspectrum.h"
+#include "../peptideevidence.h"
 
 IdentificationDataSource::IdentificationDataSource(const QString resource_name)
 {
@@ -41,7 +42,7 @@ IdentificationDataSource::IdentificationDataSource(const IdentificationDataSourc
     _params = other._params;
     _param_stats = other._param_stats;
     _fastafile_list = other._fastafile_list;
-    
+
     //PeptideEvidenceStore _peptide_evidence_store;
 }
 
@@ -155,3 +156,11 @@ const std::vector<FastaFileSp> & IdentificationDataSource::getFastaFileList() co
     qDebug()<<  "IdentificationDataSource::getFastaFileList begin" << _fastafile_list.size();
     return _fastafile_list;
 }
+
+const bool IdentificationDataSource::isValid(const PeptideEvidence * p_peptide_evidence, const AutomaticFilterParameters & automatic_filter_parameters) const {
+    
+    if (p_peptide_evidence->getEvalue() <= automatic_filter_parameters.getFilterPeptideEvalue()) {
+       return true;
+    }
+    return false;
+}
diff --git a/src/core/identification_sources/identificationdatasource.h b/src/core/identification_sources/identificationdatasource.h
index 52bf3cf03..abb4a98b6 100644
--- a/src/core/identification_sources/identificationdatasource.h
+++ b/src/core/identification_sources/identificationdatasource.h
@@ -124,6 +124,7 @@ public:
      */
     virtual const std::map<IdentificationEngineParam, QVariant> & getIdentificationEngineParamMap() const;
 
+    virtual const bool isValid(const PeptideEvidence * p_peptide_evidence, const AutomaticFilterParameters & automatic_filter_parameters) const;
 
 protected :
     QString _resource_name;
diff --git a/src/core/identification_sources/identificationmascotdatfile.cpp b/src/core/identification_sources/identificationmascotdatfile.cpp
index 4df412422..dff8e3b8c 100644
--- a/src/core/identification_sources/identificationmascotdatfile.cpp
+++ b/src/core/identification_sources/identificationmascotdatfile.cpp
@@ -98,3 +98,9 @@ void IdentificationMascotDatFile::parseTo(Project* p_project) {
 
     qDebug() << "IdentificationMascotDatFile::parseTo end";
 }
+
+
+const bool IdentificationMascotDatFile::isValid(const PeptideEvidence * p_peptide_evidence, const AutomaticFilterParameters & automatic_filter_parameters) const {
+  
+       return true;
+}
diff --git a/src/core/identification_sources/identificationmascotdatfile.h b/src/core/identification_sources/identificationmascotdatfile.h
index 94ed456ad..819124e85 100644
--- a/src/core/identification_sources/identificationmascotdatfile.h
+++ b/src/core/identification_sources/identificationmascotdatfile.h
@@ -43,7 +43,9 @@ public:
 
     virtual pappso::SpectrumSp getSpectrumSp(unsigned int scan_number) const override;
     virtual void parseTo(Project* p_project) override;
-    
+
+    virtual const bool isValid(const PeptideEvidence * p_peptide_evidence, const AutomaticFilterParameters & automatic_filter_parameters) const override;
+
 private:
     const QFileInfo _mascot_dat_file;
 };
diff --git a/src/core/identificationgroup.cpp b/src/core/identificationgroup.cpp
index 9825c9f18..82ab9dd38 100644
--- a/src/core/identificationgroup.cpp
+++ b/src/core/identificationgroup.cpp
@@ -159,6 +159,8 @@ void IdentificationGroup::updateAutomaticFilters(const AutomaticFilterParameters
     for (IdentificationDataSource * p_identification_source_list:_id_source_list) {
         p_identification_source_list->getPeptideEvidenceStore().updateAutomaticFilters(automatic_filter_parameters);
     }
+    
+    qDebug() << "IdentificationGroup::updateAutomaticFilters begin p_protein_match" ;
     for (auto & p_protein_match : _protein_match_list) {
         p_protein_match->updateAutomaticFilters(automatic_filter_parameters);
     }
diff --git a/src/core/peptideevidence.cpp b/src/core/peptideevidence.cpp
index 438c254da..986307e0d 100644
--- a/src/core/peptideevidence.cpp
+++ b/src/core/peptideevidence.cpp
@@ -66,9 +66,7 @@ PeptideEvidenceSp PeptideEvidence::makePeptideEvidenceSp() const {
 void PeptideEvidence::updateAutomaticFilters(const AutomaticFilterParameters & automatic_filter_parameters) {
     _proxy_valid = false;
 
-    if (_evalue <= automatic_filter_parameters.getFilterPeptideEvalue()) {
-        _proxy_valid = true;
-    }
+    _proxy_valid = this->_p_identification_source->isValid(this, automatic_filter_parameters);
 }
 void PeptideEvidence::setRetentionTime(pappso::pappso_double rt) {
     _rt = rt;
diff --git a/src/input/mascot/mascotdatparser.cpp b/src/input/mascot/mascotdatparser.cpp
index fc06c24f2..be26914d0 100644
--- a/src/input/mascot/mascotdatparser.cpp
+++ b/src/input/mascot/mascotdatparser.cpp
@@ -73,6 +73,8 @@ void MascotDatParser::parse(QIODevice * in_stream) {
             while(!mime_parser.getCurrentTextStream().atEnd()) {
                 parsePeptidesLine( mime_parser.getCurrentTextStream().readLine());
             }
+
+            saveAndClearPeptide();
         }
         else if (mime_parser.getCurrentFileName().startsWith("query")) {
             _current_query_index = mime_parser.getCurrentFileName().mid(5).toUInt();
diff --git a/src/input/mascot/mimeparser.cpp b/src/input/mascot/mimeparser.cpp
index d922f3471..2b566bd0e 100644
--- a/src/input/mascot/mimeparser.cpp
+++ b/src/input/mascot/mimeparser.cpp
@@ -56,15 +56,18 @@ bool MimeParser::close() {
     _priv_file_string = "";
     if (_p_current_file_content != nullptr) {
         delete _p_current_file_content;
+        _p_current_file_content = nullptr;
     }
+    qDebug() << "MimeParser::close delete _real_in";
     if (_real_in !=nullptr) {
         delete _real_in;
         _real_in =nullptr;
     }
 
+    qDebug() << "MimeParser::close delete _p_inputstream";
     if (_p_inputstream !=nullptr) {
         _p_inputstream->close();
-        delete _p_inputstream;
+        //delete _p_inputstream;
         _p_inputstream =nullptr;
     }
     qDebug() << "MimeParser::close end";
-- 
GitLab