diff --git a/src/core/proteinmatch.cpp b/src/core/proteinmatch.cpp
index 2ffadd6fd2072ec3f92668196895ca845595b18b..093d6585de6e153a3c0c1ef1a9285ab7e1cb36e6 100644
--- a/src/core/proteinmatch.cpp
+++ b/src/core/proteinmatch.cpp
@@ -326,6 +326,17 @@ pappso::pappso_double ProteinMatch::getLogEvalue(const MsRun * sp_msrun_id) cons
 
 }
 
+pappso::pappso_double ProteinMatch::getProtoNsaf(const MsRun * sp_msrun_id) const {
+    try {
+        pappso::pappso_double proto_nsaf =  (pappso::pappso_double) countSampleScan(ValidationState::validAndChecked ,sp_msrun_id) / (pappso::pappso_double) _protein_sp.get()->size();
+        return proto_nsaf;
+
+    }
+    catch (pappso::PappsoException error) {
+        throw pappso::PappsoException(QObject::tr("Error computing proto NSAF for protein %1 :\n%2").arg(this->getProteinXtpSp().get()->getAccession()).arg(error.qwhat()));
+    }
+}
+
 pappso::pappso_double ProteinMatch::getPAI(const MsRun * sp_msrun_id) const {
     try {
         pappso::pappso_double PAI =  (pappso::pappso_double) countPeptideMassCharge(ValidationState::validAndChecked ,sp_msrun_id) / (pappso::pappso_double) _protein_sp.get()->countTrypticPeptidesForPAI();
diff --git a/src/core/proteinmatch.h b/src/core/proteinmatch.h
index 2104a7120e82bc6dfa9864f67c0ab9e672edbbfb..a9e4196705a62a265a57e6ba64cfee1ee3872626 100644
--- a/src/core/proteinmatch.h
+++ b/src/core/proteinmatch.h
@@ -64,6 +64,11 @@ public:
      **/
     const QString getHtmlSequence(PeptideEvidence * peptide_evidence_to_locate = nullptr) const;
 
+        /** @brief compute proto NSAF within sample
+     * Warning: this is not NSAF, just a part
+     * */
+    pappso::pappso_double getProtoNsaf(const MsRun * sp_msrun_id = nullptr) const;
+
     /** @brief compute Protein Abundance Index (PAI) within sample
      * PAI computation (Rappsilber et al. 2002)
      * */