diff --git a/src/core/identificationgroup.cpp b/src/core/identificationgroup.cpp index df013590e923439ba2a8d63112f149e4f37d2730..602d9cf0253b310c0ce34a6f73543e3b2b6d61cf 100644 --- a/src/core/identificationgroup.cpp +++ b/src/core/identificationgroup.cpp @@ -54,34 +54,20 @@ unsigned int IdentificationGroup::countDecoyPeptideMatch(ValidationState state) return i; } unsigned int IdentificationGroup::countDecoyProtein(ValidationState state) const { - unsigned int i=0; - for (auto & p_protein_match : _protein_match_list) { - if (!p_protein_match->getProteinXtpSp().get()->isDecoy()) continue; - if (state == ValidationState::grouped) { - if (p_protein_match->isGrouped()) { - i++; - } - } - else if(state == ValidationState::valid) { - if (p_protein_match->isValid()) { - i++; - } - + return std::count_if (_protein_match_list.begin(), _protein_match_list.end(), [state](const ProteinMatch * p_protein_match) { + if ((p_protein_match->getProteinXtpSp().get()->isDecoy()) && (p_protein_match->getValidationState() >= state)) { + return true; } - else if (state == ValidationState::validAndChecked) { - if (p_protein_match->isValidAndChecked()) { - i++; - } - + else { + return false; } - } - return i; + }); } unsigned int IdentificationGroup::countPeptideMatch(ValidationState state) const { unsigned int i=0; for (auto & p_protein_match : _protein_match_list) { - if (p_protein_match->getValidationState() == state) { + if (p_protein_match->getValidationState() >= state) { i+=p_protein_match->countPeptideMatch(state); } } @@ -89,29 +75,14 @@ unsigned int IdentificationGroup::countPeptideMatch(ValidationState state) const } unsigned int IdentificationGroup::countProtein(ValidationState state) const { - unsigned int i=0; - if (state == ValidationState::grouped) { - for (auto & p_protein_match : _protein_match_list) { - if (p_protein_match->isGrouped()) { - i++; - } - } - } - else if(state == ValidationState::valid) { - for (auto & p_protein_match : _protein_match_list) { - if (p_protein_match->isValid()) { - i++; - } + return std::count_if (_protein_match_list.begin(), _protein_match_list.end(), [state](const ProteinMatch * p_protein_match) { + if (p_protein_match->getValidationState() >= state) { + return true; } - } - else if (state == ValidationState::validAndChecked) { - for (auto & p_protein_match : _protein_match_list) { - if (p_protein_match->isValidAndChecked()) { - i++; - } + else { + return false; } - } - return i; + }); } void IdentificationGroup::updateAutomaticFilters(const AutomaticFilterParameters & automatic_filter_parameters) { diff --git a/src/core/peptidematch.cpp b/src/core/peptidematch.cpp index 81706facecd72cd126d2f2a660daeb7f5383a5fd..d38bad251596243f2158e9d18baecedf28f9ec0b 100644 --- a/src/core/peptidematch.cpp +++ b/src/core/peptidematch.cpp @@ -70,13 +70,13 @@ void PeptideMatch::setChecked(bool arg1) { } ValidationState PeptideMatch::getValidationState() const { - if (isValid()) { - return ValidationState::valid; + if (isGrouped()) { + return ValidationState::grouped; } else if (isValidAndChecked()) { return ValidationState::validAndChecked; - } else if (isGrouped()) { - return ValidationState::grouped; - } + } else if (isValid()) { + return ValidationState::valid; + } return ValidationState::notValid; } diff --git a/src/core/proteinmatch.cpp b/src/core/proteinmatch.cpp index 792634523eba9025bdad1dedd669f870461d1f22..799f6ceca214889ab72f6a02a70fd3e1a73a1ced 100644 --- a/src/core/proteinmatch.cpp +++ b/src/core/proteinmatch.cpp @@ -44,13 +44,13 @@ ProteinMatch::~ProteinMatch() } } ValidationState ProteinMatch::getValidationState() const { - if (isValid()) { - return ValidationState::valid; + if (isGrouped()) { + return ValidationState::grouped; } else if (isValidAndChecked()) { return ValidationState::validAndChecked; - } else if (isGrouped()) { - return ValidationState::grouped; - } + } else if (isValid()) { + return ValidationState::valid; + } return ValidationState::notValid; } bool ProteinMatch::contains(PeptideMatch * peptide_match) const { @@ -178,7 +178,7 @@ const pappso::GrpProteinSp & ProteinMatch::getGrpProteinSp() const { unsigned int ProteinMatch::countPeptideMatch(ValidationState state) const { return std::count_if (_peptide_match_list.begin(), _peptide_match_list.end(), [state](const PeptideMatch * p_peptide_match) { - if (p_peptide_match->getValidationState() == state) { + if (p_peptide_match->getValidationState() >= state) { return true; } else { diff --git a/src/utils/types.h b/src/utils/types.h index c87465c675df83f7c3a28f1b2a6b5cc6ebe8e357..19244ecd2735f9fff831040eb6586b1d3aa00d64 100644 --- a/src/utils/types.h +++ b/src/utils/types.h @@ -25,6 +25,7 @@ #ifndef _TYPES_H_ #define _TYPES_H_ 1 +#include <cstdint> /*********** enumerations *********************************/ /** \def GroupingType list of available grouping algoritms @@ -50,11 +51,11 @@ enum class MzFormat { * */ -enum class ValidationState { - notValid,///< notValid : automatic filter validation failed - valid, ///< valid : automatic filter validation passed - validAndChecked, ///< validAndChecked : automatic filter validation passed + manual checking - grouped, ///< grouped : automatic filter validation passed + manual checking + grouped +enum class ValidationState: std::int8_t { + notValid = 0,///< notValid : automatic filter validation failed + valid =1, ///< valid : automatic filter validation passed + validAndChecked=2, ///< validAndChecked : automatic filter validation passed + manual checking + grouped=3 ///< grouped : automatic filter validation passed + manual checking + grouped };