|  | OpenMS
    2.6.0
    | 
 
 
  
  
 
Go to the documentation of this file.
   69     template <
typename IDType>
 
   72       for (
typename std::vector<typename IDType::HitType>::iterator hit_it = 
id.getHits().begin();
 
   73            hit_it != 
id.getHits().end(); ++hit_it, ++counter)
 
   75         if (!hit_it->metaValueExists(new_score_))
 
   77           std::stringstream msg;
 
   78           msg << 
"Meta value '" << new_score_ << 
"' not found for " << *hit_it;
 
   80                                               OPENMS_PRETTY_FUNCTION, msg.str());
 
   83         const String& old_score_meta = (old_score_.empty() ? 
id.getScoreType() :
 
   85         const DataValue& dv = hit_it->getMetaValue(old_score_meta);
 
   88           if (fabs((
double(dv) - hit_it->getScore()) * 2.0 /
 
   89                    (
double(dv) + hit_it->getScore())) > tolerance_)
 
   91             std::stringstream msg;
 
   92             msg << 
"Meta value '" << old_score_meta << 
"' already exists " 
   93               << 
"with a conflicting value for " << *hit_it;
 
  100           hit_it->setMetaValue(old_score_meta, hit_it->getScore());
 
  102         hit_it->setScore(hit_it->getMetaValue(new_score_));
 
  104       id.setScoreType(new_score_type_);
 
  105       id.setHigherScoreBetter(higher_better_);
 
  113       if (
id.empty()) 
return;
 
  114       String t = findScoreType(
id[0], type);
 
  117         String msg = 
"First encountered ID does not have the requested score type.";
 
  119                                             OPENMS_PRETTY_FUNCTION, msg);
 
  121       else if (t == 
id[0].getScoreType())
 
  130         new_score_type_ = t.
chop(6);
 
  138       if (type != ScoreType::RAW && higher_better_ != type_to_better_[type])
 
  140         OPENMS_LOG_WARN << 
"Requested non-raw score type does not match the expected score direction. Correcting!\n";
 
  141         higher_better_ = type_to_better_[type];
 
  145         switchScores(i, counter);
 
  155       for (
const auto& f : cmap)
 
  157         const auto& ids = f.getPeptideIdentifications();
 
  160           new_type = findScoreType(ids[0], type);
 
  161           if (new_type == ids[0].getScoreType())
 
  172       if (new_type.empty())
 
  174         String msg = 
"First encountered ID does not have the requested score type.";
 
  176                                             OPENMS_PRETTY_FUNCTION, msg);
 
  181         new_score_type_ = new_type.
chop(6);
 
  185         new_score_type_ = new_type;
 
  187       new_score_ = new_type;
 
  189       if (type != ScoreType::RAW && higher_better_ != type_to_better_[type])
 
  191         OPENMS_LOG_WARN << 
"Requested non-raw score type does not match the expected score direction. Correcting!\n";
 
  192         higher_better_ = type_to_better_[type];
 
  195       const auto switchScoresSingle = [&counter,
this](
PeptideIdentification& id){switchScores(
id,counter);};
 
  196       cmap.applyFunctionOnPeptideIDs(switchScoresSingle, unassigned_peptides_too);
 
  201     template <
typename IDType>
 
  204       const String& curr_score_type = 
id.getScoreType();
 
  205       const std::set<String>& possible_types = type_to_str_[type];
 
  206       if (possible_types.find(curr_score_type) != possible_types.end())
 
  208         OPENMS_LOG_INFO << 
"Requested score type already set as main score: " + curr_score_type + 
"\n";
 
  209         return curr_score_type;
 
  213         if (
id.getHits().empty())
 
  215           OPENMS_LOG_WARN << 
"Identification entry used to check for alternative score was empty.\n";
 
  218         const auto& hit = 
id.getHits()[0];
 
  219         for (
const auto& poss_str : possible_types)
 
  221           if (hit.metaValueExists(poss_str)) 
return poss_str;
 
  222           else if (hit.metaValueExists(poss_str + 
"_score")) 
return poss_str + 
"_score";
 
  224         OPENMS_LOG_WARN << 
"Score of requested type not found in the UserParams of the checked ID object.\n";
 
  230     void updateMembers_() 
override;
 
  233     const double tolerance_ = 1e-6;
 
  241     std::map<ScoreType, std::set<String>> type_to_str_ =
 
  243             {ScoreType::RAW, {
"XTandem", 
"OMSSA", 
"SEQUEST:xcorr", 
"Mascot", 
"mvh"}},
 
  249             {ScoreType::RAW_EVAL, {
"expect", 
"SpecEValue", 
"E-Value", 
"evalue", 
"MS:1002053", 
"MS:1002257"}},
 
  250             {ScoreType::PP, {
"Posterior Probability"}},
 
  251             {ScoreType::PEP, {
"Posterior Error Probability", 
"pep", 
"MS:1001493"}}, 
 
  252             {ScoreType::FDR, {
"FDR", 
"fdr", 
"false discovery rate"}},
 
  253             {ScoreType::QVAL, {
"q-value", 
"qvalue", 
"MS:1001491", 
"q-Value", 
"qval"}}
 
  257     std::map<ScoreType, bool> type_to_better_ =
 
  259             {ScoreType::RAW, 
true}, 
 
  260             {ScoreType::RAW_EVAL, 
false},
 
  261             {ScoreType::PP, 
true},
 
  262             {ScoreType::PEP, 
false},
 
  263             {ScoreType::FDR, 
false},
 
  264             {ScoreType::QVAL, 
false}
 
  
Base class for TOPP applications.
Definition: TOPPBase.h:144
ScoreType
Definition: IDScoreSwitcherAlgorithm.h:57
bool higher_better_
will be set according to the algorithm parameters
Definition: IDScoreSwitcherAlgorithm.h:238
void store(const String &filename, const std::vector< ProteinIdentification > &protein_ids, const std::vector< PeptideIdentification > &peptide_ids, const String &document_id="")
Stores the data in an idXML file.
void switchToGeneralScoreType(ConsensusMap &cmap, ScoreType type, Size &counter, bool unassigned_peptides_too=true)
Definition: IDScoreSwitcherAlgorithm.h:152
Invalid value exception.
Definition: Exception.h:335
A more convenient string class.
Definition: String.h:59
bool isEmpty() const
Test if the value is empty.
Definition: DataValue.h:375
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:127
String toString(bool full_precision=true) const
Conversion to String full_precision Controls number of fractional digits for all double types or list...
void switchToGeneralScoreType(std::vector< PeptideIdentification > &id, ScoreType type, Size &counter)
Definition: IDScoreSwitcherAlgorithm.h:111
String findScoreType(IDType &id, IDScoreSwitcherAlgorithm::ScoreType type)
finds a certain score type in an ID and its metavalues if present, otherwise returns empty string
Definition: IDScoreSwitcherAlgorithm.h:202
#define OPENMS_LOG_WARN
Macro if a warning, a piece of information which should be read by the user, should be logged.
Definition: LogStream.h:460
Representation of a protein identification run.
Definition: ProteinIdentification.h:70
A base class for all classes handling default parameters.
Definition: DefaultParamHandler.h:92
void load(const String &filename, std::vector< ProteinIdentification > &protein_ids, std::vector< PeptideIdentification > &peptide_ids)
Loads the identifications of an idXML file without identifier.
String old_score_
Definition: IDScoreSwitcherAlgorithm.h:236
String chop(Size n) const
Returns a substring where n characters were removed from the end of the string.
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:46
Class to hold strings, numeric values, lists of strings and lists of numeric values.
Definition: DataValue.h:56
void switchScores(IDType &id, Size &counter)
Definition: IDScoreSwitcherAlgorithm.h:70
Definition: IDScoreSwitcherAlgorithm.h:47
bool hasSuffix(const String &string) const
true if String ends with string, false otherwise
A container for consensus elements.
Definition: ConsensusMap.h:80
int main(int argc, const char **argv)
Definition: INIFileEditor.cpp:73
Represents the peptide hits for a spectrum.
Definition: PeptideIdentification.h:62
#define OPENMS_LOG_INFO
Macro if a information, e.g. a status should be reported.
Definition: LogStream.h:465
Used to load and store idXML files.
Definition: IdXMLFile.h:63