diff --git a/src/core/identification_sources/identificationdatasource.cpp b/src/core/identification_sources/identificationdatasource.cpp
index d368fd091b946ad3790633b934c133c39a62101b..4ae412c977c2f2c588b069903d58410c7318b7d7 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 52bf3cf03f3b9ffc3e71367d031a06cd2084e76f..abb4a98b61e5a6e4ed3828c1990081a82e414973 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 4df4124220e15490717abfdaaa503ed9d38903f6..dff8e3b8cc05308bb79986a9b9702249e18bb514 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 94ed456ad128cf8ab6fa9680a1dd66c4436d7f3e..819124e857d3e6e820ccd1e4e6f175af8782ca65 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 9825c9f18cebf7773a1fa850979c3dd3a09bd83f..82ab9dd38735ab0c9c0d7385b56c1d2f384fce78 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 438c254da0d2a0a3d62a5484ea94f6a30458e3ba..986307e0ded643684f6e6d0e029a5d4710a4d96a 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 fc06c24f2cccf53a2a085b0493019244a204b231..be26914d0ab24e9f6f4169cf81941db2b5edc2fd 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 d922f347112dba565830a58d04fc8524d5ce964e..2b566bd0ed61a38ce1295e3d7a75a9474c6abe62 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";