* @brief complete consensus * * @param consensus (possibly) incomplete consensus * @param pattern matching theoretical delta mass pattern * @param delta_mass_matched Was this delta mass in the theoretical pattern matched? * @param index_label_set index within the pattern at which the label sets were matched * * @return completed consensus */
| 397 | * @return completed consensus |
| 398 | */ |
| 399 | ConsensusFeature completeConsensus_(const ConsensusFeature& consensus, const std::vector<MultiplexDeltaMasses::DeltaMass>& pattern, const std::vector<bool>& delta_mass_matched, int index_label_set) |
| 400 | { |
| 401 | // Nothing to do. Detected consensus is already complete. |
| 402 | if (consensus.size() == pattern.size()) |
| 403 | { |
| 404 | return ConsensusFeature(consensus); |
| 405 | } |
| 406 | |
| 407 | if (pattern.size() != delta_mass_matched.size()) |
| 408 | { |
| 409 | throw Exception::InvalidSize(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, delta_mass_matched.size()); |
| 410 | } |
| 411 | |
| 412 | // new complete consensus feature |
| 413 | ConsensusFeature consensus_complete; |
| 414 | |
| 415 | int charge = consensus.getCharge(); |
| 416 | double RT = consensus.getRT(); |
| 417 | double mz = consensus.getMZ(); |
| 418 | |
| 419 | // find m/z of the new complete consensus |
| 420 | double mz_complete = findNewMZ_(mz, charge, pattern, delta_mass_matched); |
| 421 | |
| 422 | consensus_complete.setMZ(mz_complete); |
| 423 | consensus_complete.setRT(consensus.getRT()); |
| 424 | consensus_complete.setCharge(consensus.getCharge()); |
| 425 | consensus_complete.setIntensity(consensus.getIntensity()); // Alternatively, reduce intensity due to new zero-intensity dummy features. |
| 426 | consensus_complete.setQuality(consensus.getQuality()); |
| 427 | consensus_complete.setPeptideIdentifications(consensus.getPeptideIdentifications()); |
| 428 | consensus_complete.getPeptideIdentifications()[0].getHits()[0].setMetaValue("map_index", index_label_set); |
| 429 | |
| 430 | // loop over delta masses in theoretical pattern |
| 431 | std::vector<MultiplexDeltaMasses::DeltaMass>::const_iterator it_mass_shift; |
| 432 | std::vector<bool>::const_iterator it_delta_mass_matched; |
| 433 | ConsensusFeature::HandleSetType::const_iterator it_feature; |
| 434 | for (it_mass_shift = pattern.begin(), it_delta_mass_matched = delta_mass_matched.begin(), it_feature = consensus.getFeatures().begin(); |
| 435 | it_mass_shift != pattern.end() && it_delta_mass_matched != delta_mass_matched.end(); |
| 436 | ++it_mass_shift, ++it_delta_mass_matched) |
| 437 | { |
| 438 | |
| 439 | //OPENMS_LOG_DEBUG << " index = " << (it_mass_shift - pattern.begin()) << " shift = " << it_mass_shift->delta_mass; |
| 440 | if (*it_delta_mass_matched) |
| 441 | { |
| 442 | // copy feature from incomplete consensus |
| 443 | FeatureHandle feature_handle(*it_feature); |
| 444 | feature_handle.setMapIndex(it_mass_shift - pattern.begin()); |
| 445 | consensus_complete.insert(feature_handle); |
| 446 | |
| 447 | if (it_feature != consensus.getFeatures().end()) |
| 448 | { |
| 449 | ++it_feature; |
| 450 | } |
| 451 | } |
| 452 | else |
| 453 | { |
| 454 | // construct dummy feature |
| 455 | FeatureHandle feature_handle; |
| 456 | feature_handle.setMZ(mz_complete + it_mass_shift->delta_mass / charge); |
nothing calls this directly
no test coverage detected