MCPcopy Create free account
hub / github.com/OpenMS/OpenMS / findModificationIndex

Method findModificationIndex

src/openms/source/CHEMISTRY/ModificationsDB.cpp:297–336  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

295 }
296
297 Size ModificationsDB::findModificationIndex(const String & mod_name) const
298 {
299 if (!has(mod_name))
300 {
301 throw Exception::ElementNotFound(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, "Modification not found: " + mod_name);
302 }
303
304 bool one_mod(true);
305 #pragma omp critical(OpenMS_ModificationsDB)
306 {
307 if (modification_names_.find(mod_name)->second.size() > 1)
308 {
309 one_mod = false;
310 }
311 }
312 if (!one_mod)
313 {
314 throw Exception::ElementNotFound(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, "More than one modification with name: " + mod_name);
315 }
316
317 Size index(numeric_limits<Size>::max());
318 #pragma omp critical(OpenMS_ModificationsDB)
319 {
320 const ResidueModification* mod = *(modification_names_.find(mod_name)->second.begin());
321 for (Size i = 0; i != mods_.size(); ++i)
322 {
323 if (mods_[i] == mod)
324 {
325 index = i;
326 break;
327 }
328 }
329 }
330
331 if (index == numeric_limits<Size>::max())
332 {
333 throw Exception::ElementNotFound(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, "Modification name found but modification not found: " + mod_name);
334 }
335 return index;
336 }
337
338 void ModificationsDB::searchModificationsByDiffMonoMass(vector<String>& mods, double mass, double max_error, const String& residue, ResidueModification::TermSpecificity term_spec)
339 {

Calls 4

hasFunction · 0.85
sizeMethod · 0.45
findMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected