|
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