diff --git a/src/core/peptidematch.cpp b/src/core/peptidematch.cpp
index c8e8c959e3b25ef5341877aba9b864e65a01cd9c..5761314c310df3d6906d622e75ea35b57df35153 100644
--- a/src/core/peptidematch.cpp
+++ b/src/core/peptidematch.cpp
@@ -23,9 +23,13 @@
 
 #include "peptidematch.h"
 
+std::hash<std::string> PeptideMatch::_hash_fn;
+
 PeptideMatch::PeptideMatch(MsRun * msrunid_sp, unsigned int scan) {
     _msrunid_sp = msrunid_sp;
     _scan = scan;
+
+    _hash_sample_scan = PeptideMatch::_hash_fn (QString("%1 %2").arg(msrunid_sp->getXmlId()).arg(_scan).toStdString());
 }
 
 void PeptideMatch::updateAutomaticFilters(const AutomaticFilterParameters & automatic_filter_parameters) {
@@ -42,6 +46,10 @@ void PeptideMatch::setEvalue(pappso::pappso_double evalue) {
     _evalue = evalue;
 }
 
+
+std::size_t PeptideMatch::getHashSampleScan() const {
+    return _hash_sample_scan;
+}
 pappso::pappso_double PeptideMatch::getEvalue() const {
     return _evalue;
 }
@@ -76,7 +84,7 @@ ValidationState PeptideMatch::getValidationState() const {
         return ValidationState::validAndChecked;
     } else if (isValid()) {
         return ValidationState::valid;
-    } 
+    }
     return ValidationState::notValid;
 }
 
diff --git a/src/core/peptidematch.h b/src/core/peptidematch.h
index 3e20533aca855ce5042c040a0f62328bc4bd70ec..6d885f71557ef321e9054b469430d788279fb7f2 100644
--- a/src/core/peptidematch.h
+++ b/src/core/peptidematch.h
@@ -35,6 +35,7 @@ class PeptideMatch
 {
 public :
     PeptideMatch(MsRun * msrunid_sp, unsigned int scan);
+    std::size_t getHashSampleScan() const;
 
     void setRetentionTime(pappso::pappso_double rt);
     void setEvalue(pappso::pappso_double evalue);
@@ -80,8 +81,10 @@ public :
     ValidationState getValidationState() const;
 
 private :
+    static std::hash<std::string> _hash_fn;
     MsRun * _msrunid_sp;
     unsigned int _scan;
+    size_t _hash_sample_scan;
     pappso::GrpPeptideSp _sp_grp_peptide;
     PeptideXtpSp _peptide_sp;
     pappso::pappso_double _rt;