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

Method completeConsensus_

src/topp/MultiplexResolver.cpp:399–481  ·  view source on GitHub ↗

* @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 */

Source from the content-addressed store, hash-verified

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);

Callers

nothing calls this directly

Calls 15

getFeaturesMethod · 0.80
setMapIndexMethod · 0.80
ConsensusFeatureFunction · 0.50
sizeMethod · 0.45
getChargeMethod · 0.45
getRTMethod · 0.45
getMZMethod · 0.45
setMZMethod · 0.45
setRTMethod · 0.45
setChargeMethod · 0.45
getIntensityMethod · 0.45
setQualityMethod · 0.45

Tested by

no test coverage detected