| 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 | { |
no test coverage detected