25 #include <unordered_set> 
   70   template <
typename ContainerType, 
typename PredicateType>
 
   73     for (
auto it = container.begin(); it != container.end(); )
 
   77         it = container.erase(it);
 
  198       bool allow_missing = 
false;
 
  208       current_step_ref_(processing_steps_.end()), no_checks_(false)
 
  350       return processing_softwares_;
 
  356       return processing_steps_;
 
  362       return db_search_params_;
 
  368       return db_search_steps_;
 
  380       return observations_;
 
  392       return parent_groups_;
 
  398       return identified_peptides_;
 
  404       return identified_compounds_;
 
  410       return identified_oligos_;
 
  422       return observation_matches_;
 
  428       return observation_match_groups_;
 
  461                                                                 bool require_score = 
false) 
const;
 
  474     template <
typename PredicateType>
 
  477       auto count = observation_matches_.size();
 
  479       if (count != observation_matches_.size()) cleanup();
 
  489     template <
typename PredicateType>
 
  492       auto count = parents_.size();
 
  494       if (count != parents_.size()) cleanup();
 
  497     template <
typename PredicateType>
 
  500       for (
auto it = observations_.begin(); it != observations_.end(); ++it)
 
  501         observations_.modify(it, func);
 
  525     void cleanup(
bool require_observation_match = 
true,
 
  526                  bool require_identified_sequence = 
true,
 
  527                  bool require_parent_match = 
true,
 
  528                  bool require_parent_group = 
false,
 
  529                  bool require_match_group = 
false);
 
  567     template <
class ScoredProcessingResults>
 
  569                                bool all_elements = 
false, 
bool any_score = 
false)
 const 
  571       std::map<ScoreTypeRef, Size> score_counts;
 
  575         for (
const auto& element : container)
 
  577           for (
const auto& step : element.steps_and_scores)
 
  579             for (
const auto& pair : step.scores)
 
  581               score_counts[pair.first]++;
 
  588         for (
const auto& element : container)
 
  590           auto score_info = element.getMostRecentScore();
 
  591           if (std::get<2>(score_info)) 
 
  594             if (!all_elements) 
return score_ref;
 
  595             score_counts[score_ref]++; 
 
  599       if (score_counts.empty()) 
return score_types_.end();
 
  600       auto pos = max_element(score_counts.begin(), score_counts.end());
 
  665                                       steps_and_scores) 
const;
 
  687     template <
typename ElementType>
 
  695     template <
typename ElementType>
 
  703     template <
typename ElementType>
 
  707     template <
typename ContainerType, 
typename ElementType>
 
  711     template <
typename ContainerType, 
typename ElementType>
 
  713       ContainerType& container, 
const ElementType& element,
 
Definition: AdductInfo.h:17
 
Class to hold strings, numeric values, lists of strings and lists of numeric values.
Definition: DataValue.h:33
 
Definition: IdentificationData.h:87
 
ObservationRef registerObservation(const Observation &obs)
Register an observation (e.g. MS2 spectrum or feature)
 
IdentificationDataInternal::PeakAnnotations PeakAnnotations
Definition: IdentificationData.h:156
 
DBSearchParams db_search_params_
Definition: IdentificationData.h:626
 
ParentGroupSets parent_groups_
Definition: IdentificationData.h:633
 
IdentificationDataInternal::ParentMatches ParentMatches
Definition: IdentificationData.h:138
 
void calculateCoverages(bool check_molecule_length=false)
Calculate sequence coverages of parent sequences.
 
ProcessingSoftwares processing_softwares_
Definition: IdentificationData.h:624
 
IdentificationData(const IdentificationData &other)
Copy constructor.
 
std::unordered_set< uintptr_t > AddressLookup
Definition: IdentificationData.h:181
 
ProcessingSteps processing_steps_
Definition: IdentificationData.h:625
 
const DBSearchParams & getDBSearchParams() const
Return the registered database search parameters (immutable)
Definition: IdentificationData.h:360
 
IdentificationData(IdentificationData &&other) noexcept
Move constructor.
 
ObservationMatchGroups observation_match_groups_
Definition: IdentificationData.h:639
 
ObservationMatches observation_matches_
Definition: IdentificationData.h:638
 
void removeObservationMatchesIf(PredicateType &&func)
Helper function for filtering observation matches (e.g. PSMs) in IdentificationData.
Definition: IdentificationData.h:475
 
ScoreTypeRef findScoreType(const String &score_name) const
Look up a score type by name.
 
IdentificationDataInternal::ScoreTypes ScoreTypes
Definition: IdentificationData.h:118
 
const ProcessingSoftwares & getProcessingSoftwares() const
Return the registered data processing software (immutable)
Definition: IdentificationData.h:348
 
AdductRef registerAdduct(const AdductInfo &adduct)
Register an adduct.
 
AddressLookup observation_match_lookup_
Definition: IdentificationData.h:658
 
IdentificationDataInternal::IdentifiedOligos IdentifiedOligos
Definition: IdentificationData.h:151
 
const InputFiles & getInputFiles() const
Return the registered input files (immutable)
Definition: IdentificationData.h:342
 
MatchGroupRef registerObservationMatchGroup(const ObservationMatchGroup &group)
Register a group of observation matches that belong together.
 
AddressLookup observation_lookup_
Definition: IdentificationData.h:652
 
void removeMetaValue(const ObservationMatchRef ref, const String &key)
 
ProcessingStepRef registerProcessingStep(const ProcessingStep &step, SearchParamRef search_ref)
Register a database search step with associated parameters.
 
AddressLookup identified_oligo_lookup_
Definition: IdentificationData.h:657
 
IdentifiedOligos identified_oligos_
Definition: IdentificationData.h:636
 
const ObservationMatchGroups & getObservationMatchGroups() const
Return the registered groups of observation matches (immutable)
Definition: IdentificationData.h:426
 
const ParentSequences & getParentSequences() const
Return the registered parent sequences (immutable)
Definition: IdentificationData.h:384
 
bool no_checks_
Suppress validity checks in register... calls?
Definition: IdentificationData.h:649
 
void setMetaValue(const ObservationRef ref, const String &key, const DataValue &value)
Set a meta value on a stored observation.
 
const IdentifiedCompounds & getIdentifiedCompounds() const
Return the registered compounds (immutable)
Definition: IdentificationData.h:402
 
void addScore(ObservationMatchRef match_ref, ScoreTypeRef score_ref, double value)
Add a score to an input match (e.g. PSM)
 
IdentifiedCompoundRef registerIdentifiedCompound(const IdentifiedCompound &compound)
Register an identified compound (small molecule)
 
ObservationMatchRef registerObservationMatch(const ObservationMatch &match)
Register an observation match (e.g. peptide-spectrum match)
 
IdentificationDataInternal::Adducts Adducts
Definition: IdentificationData.h:158
 
IdentifiedOligoRef registerIdentifiedOligo(const IdentifiedOligo &oligo)
Register an identified RNA oligonucleotide.
 
bool empty() const
Return whether the data structure is empty (no data)
 
Adducts adducts_
Definition: IdentificationData.h:637
 
void setCurrentProcessingStep(ProcessingStepRef step_ref)
Set a data processing step that will apply to all subsequent "register..." calls.
 
IdentificationDataInternal::Observations Observations
Definition: IdentificationData.h:130
 
void swap(IdentificationData &other)
Swap contents with a second instance.
 
void setMetaValue(const ObservationMatchRef ref, const String &key, const DataValue &value)
Set a meta value on a stored observation match (e.g. PSM)
 
IdentificationData & operator=(IdentificationData &&other) noexcept
Move assignment operator.
 
IdentificationDataInternal::ParentSequences ParentSequences
Definition: IdentificationData.h:134
 
ScoreTypeRef registerScoreType(const ScoreType &score)
Register a score type.
 
IdentificationDataInternal::AppliedProcessingSteps AppliedProcessingSteps
Definition: IdentificationData.h:127
 
const ProcessingSteps & getProcessingSteps() const
Return the registered data processing steps (immutable)
Definition: IdentificationData.h:354
 
void applyToObservations(PredicateType &&func)
Definition: IdentificationData.h:498
 
const ParentGroupSets & getParentGroupSets() const
Return the registered parent sequence groupings (immutable)
Definition: IdentificationData.h:390
 
IdentificationDataInternal::InputFiles InputFiles
Definition: IdentificationData.h:98
 
std::pair< ObservationMatchRef, ObservationMatchRef > getMatchesForObservation(ObservationRef obs_ref) const
Get range of matches (cf. equal_range) for a given observation.
 
ProcessingStepRef registerProcessingStep(const ProcessingStep &step)
Register a data processing step.
 
IdentificationDataInternal::DBSearchParams DBSearchParams
Definition: IdentificationData.h:113
 
const ScoreTypes & getScoreTypes() const
Return the registered score types (immutable)
Definition: IdentificationData.h:372
 
IdentificationData()
Default constructor.
Definition: IdentificationData.h:207
 
IdentifiedCompounds identified_compounds_
Definition: IdentificationData.h:635
 
const IdentifiedOligos & getIdentifiedOligos() const
Return the registered identified oligonucleotides (immutable)
Definition: IdentificationData.h:408
 
IdentificationDataInternal::IdentifiedPeptides IdentifiedPeptides
Definition: IdentificationData.h:141
 
DBSearchSteps db_search_steps_
Definition: IdentificationData.h:629
 
ProcessingStepRef getCurrentProcessingStep()
Return the current processing step (set via setCurrentProcessingStep()).
 
ProcessingSoftwareRef registerProcessingSoftware(const ProcessingSoftware &software)
Register data processing software.
 
void checkParentMatches_(const ParentMatches &matches, MoleculeType expected_type) const
Helper function to check if all parent matches are valid.
 
Observations observations_
Definition: IdentificationData.h:631
 
IdentificationDataInternal::ProcessingSteps ProcessingSteps
Definition: IdentificationData.h:109
 
IdentificationDataInternal::DBSearchSteps DBSearchSteps
Definition: IdentificationData.h:115
 
void setMetaValue(const IdentifiedMolecule &var, const String &key, const DataValue &value)
Set a meta value on a stored identified molecule (variant)
 
ParentSequenceRef registerParentSequence(const ParentSequence &parent)
Register a parent sequence (e.g. protein or intact RNA)
 
const DBSearchSteps & getDBSearchSteps() const
Return the registered database search steps (immutable)
Definition: IdentificationData.h:366
 
ScoreTypes score_types_
Definition: IdentificationData.h:630
 
InputFiles input_files_
Definition: IdentificationData.h:623
 
IdentificationDataInternal::AdductOpt AdductOpt
Definition: IdentificationData.h:160
 
const Adducts & getAdducts() const
Return the registered adducts (immutable)
Definition: IdentificationData.h:414
 
IdentificationDataInternal::ParentGroupSets ParentGroupSets
Definition: IdentificationData.h:179
 
void mergeScoredProcessingResults_(ScoredProcessingResult &result, const ScoredProcessingResult &other, const RefTranslator &trans)
Helper function to merge scored processing results while updating references (to processing steps and...
 
ContainerType::iterator insertIntoMultiIndex_(ContainerType &container, const ElementType &element)
Helper function for adding entries (derived from ScoredProcessingResult) to a boost::multi_index_cont...
 
InputFileRef registerInputFile(const InputFile &file)
Register an input file.
 
IdentifiedPeptideRef registerIdentifiedPeptide(const IdentifiedPeptide &peptide)
Register an identified peptide.
 
AddressLookup identified_peptide_lookup_
Definition: IdentificationData.h:655
 
ContainerType::iterator insertIntoMultiIndex_(ContainerType &container, const ElementType &element, AddressLookup &lookup)
Variant of insertIntoMultiIndex_() that also updates a look-up table of valid references (addresses)
 
ProcessingStepRef current_step_ref_
Reference to the current data processing step (see setCurrentProcessingStep())
Definition: IdentificationData.h:642
 
void clear()
Clear all contents.
 
const IdentifiedPeptides & getIdentifiedPeptides() const
Return the registered identified peptides (immutable)
Definition: IdentificationData.h:396
 
void clearCurrentProcessingStep()
Cancel the effect of setCurrentProcessingStep().
 
std::vector< ObservationMatchRef > getBestMatchPerObservation(ScoreTypeRef score_ref, bool require_score=false) const
Return the best match for each observation, according to a given score type.
 
void cleanup(bool require_observation_match=true, bool require_identified_sequence=true, bool require_parent_match=true, bool require_parent_group=false, bool require_match_group=false)
Clean up the data structure after filtering parts of it.
 
IdentificationDataInternal::ProcessingSoftwares ProcessingSoftwares
Definition: IdentificationData.h:104
 
void removeParentSequencesIf(PredicateType &&func)
Helper function for filtering parent sequences (e.g. protein sequences) in IdentificationData.
Definition: IdentificationData.h:490
 
SearchParamRef registerDBSearchParam(const DBSearchParam ¶m)
Register database search parameters.
 
void checkScoreTypes_(const std::map< ScoreTypeRef, double > &scores) const
Helper function to check if all score types are valid.
 
const Observations & getObservations() const
Return the registered observations (immutable)
Definition: IdentificationData.h:378
 
AddressLookup parent_lookup_
Definition: IdentificationData.h:653
 
void checkAppliedProcessingSteps_(const AppliedProcessingSteps &steps_and_scores) const
Helper function to check if all applied processing steps are valid.
 
IdentificationDataInternal::ParentGroups ParentGroups
Definition: IdentificationData.h:174
 
AddressLookup identified_compound_lookup_
Definition: IdentificationData.h:656
 
RefTranslator merge(const IdentificationData &other)
Merge in data from another instance.
 
IdentificationDataInternal::ObservationMatchGroups ObservationMatchGroups
Definition: IdentificationData.h:169
 
IdentificationData & operator=(const IdentificationData &other)
Copy assignment operator.
 
const ObservationMatches & getObservationMatches() const
Return the registered observation matches (immutable)
Definition: IdentificationData.h:420
 
IdentificationDataInternal::IdentifiedCompounds IdentifiedCompounds
Definition: IdentificationData.h:146
 
IdentifiedPeptides identified_peptides_
Definition: IdentificationData.h:634
 
void registerParentGroupSet(const ParentGroupSet &groups)
Register a grouping of parent sequences (e.g. protein inference result)
 
ParentSequences parents_
Definition: IdentificationData.h:632
 
IdentificationDataInternal::ObservationMatches ObservationMatches
Definition: IdentificationData.h:163
 
ScoreTypeRef pickScoreType(const ScoredProcessingResults &container, bool all_elements=false, bool any_score=false) const
Definition: IdentificationData.h:568
 
Helper functor for adding processing steps to elements in a boost::multi_index_container structure.
Definition: IdentificationData.h:688
 
Helper functor for adding scores to elements in a boost::multi_index_container structure.
Definition: IdentificationData.h:696
 
Helper functor for removing invalid parent matches from elements in a boost::multi_index_container st...
Definition: IdentificationData.h:704
 
A more convenient string class.
Definition: String.h:34
 
std::map< ProcessingStepRef, SearchParamRef > DBSearchSteps
Definition: DBSearchParam.h:100
 
IteratorWrapper< ObservationMatchGroups::iterator > MatchGroupRef
Definition: ObservationMatchGroup.h:74
 
IteratorWrapper< IdentifiedCompounds::iterator > IdentifiedCompoundRef
Definition: IdentifiedCompound.h:55
 
IdentifiedSequence< NASequence > IdentifiedOligo
Definition: IdentifiedSequence.h:81
 
IteratorWrapper< IdentifiedOligos::iterator > IdentifiedOligoRef
Definition: IdentifiedSequence.h:99
 
boost::multi_index_container< Observation, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::composite_key< Observation, boost::multi_index::member< Observation, InputFileRef, &Observation::input_file >, boost::multi_index::member< Observation, String, &Observation::data_id > > > > > Observations
Definition: Observation.h:69
 
boost::multi_index_container< ObservationMatch, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::composite_key< ObservationMatch, boost::multi_index::member< ObservationMatch, ObservationRef, &ObservationMatch::observation_ref >, boost::multi_index::member< ObservationMatch, IdentifiedMolecule, &ObservationMatch::identified_molecule_var >, boost::multi_index::member< ObservationMatch, AdductOpt, &ObservationMatch::adduct_opt > > > > > ObservationMatches
Definition: ObservationMatch.h:124
 
std::optional< AdductRef > AdductOpt
Definition: ObservationMatch.h:44
 
std::set< ScoreType > ScoreTypes
Definition: ScoreType.h:65
 
IteratorWrapper< IdentifiedPeptides::iterator > IdentifiedPeptideRef
Definition: IdentifiedSequence.h:90
 
IteratorWrapper< ScoreTypes::iterator > ScoreTypeRef
Definition: ScoreType.h:66
 
IteratorWrapper< Adducts::iterator > AdductRef
Definition: ObservationMatch.h:43
 
std::set< DBSearchParam > DBSearchParams
Definition: DBSearchParam.h:98
 
IteratorWrapper< Observations::iterator > ObservationRef
Definition: Observation.h:70
 
boost::multi_index_container< AppliedProcessingStep, boost::multi_index::indexed_by< boost::multi_index::sequenced<>, boost::multi_index::ordered_unique< boost::multi_index::member< AppliedProcessingStep, std::optional< ProcessingStepRef >, &AppliedProcessingStep::processing_step_opt > > > > AppliedProcessingSteps
Definition: AppliedProcessingStep.h:107
 
IteratorWrapper< ObservationMatches::iterator > ObservationMatchRef
Definition: ObservationMatch.h:126
 
boost::multi_index_container< IdentifiedPeptide, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::member< IdentifiedPeptide, AASequence, &IdentifiedPeptide::sequence > > > > IdentifiedPeptides
Definition: IdentifiedSequence.h:89
 
IteratorWrapper< ProcessingSoftwares::iterator > ProcessingSoftwareRef
Definition: ProcessingSoftware.h:42
 
IteratorWrapper< DBSearchParams::iterator > SearchParamRef
Definition: DBSearchParam.h:99
 
std::vector< PeptideHit::PeakAnnotation > PeakAnnotations
Definition: ObservationMatch.h:26
 
MoleculeType
Definition: MetaData.h:40
 
boost::multi_index_container< ParentSequence, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::member< ParentSequence, String, &ParentSequence::accession > > > > ParentSequences
Definition: ParentSequence.h:94
 
std::vector< ParentGroupSet > ParentGroupSets
Definition: ParentGroup.h:56
 
boost::multi_index_container< ParentGroup, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::member< ParentGroup, std::set< ParentSequenceRef >, &ParentGroup::parent_refs > > > > ParentGroups
Definition: ParentGroup.h:38
 
boost::multi_index_container< IdentifiedOligo, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::member< IdentifiedOligo, NASequence, &IdentifiedOligo::sequence > > > > IdentifiedOligos
Definition: IdentifiedSequence.h:98
 
boost::multi_index_container< IdentifiedCompound, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::member< IdentifiedCompound, String, &IdentifiedCompound::identifier > > > > IdentifiedCompounds
Definition: IdentifiedCompound.h:54
 
std::map< ParentSequenceRef, std::set< ParentMatch > > ParentMatches
mapping: parent sequence -> match information
Definition: ParentMatch.h:75
 
std::set< ProcessingStep > ProcessingSteps
Definition: ProcessingStep.h:62
 
std::set< ProcessingSoftware > ProcessingSoftwares
Definition: ProcessingSoftware.h:41
 
IteratorWrapper< ProcessingSteps::iterator > ProcessingStepRef
Definition: ProcessingStep.h:63
 
boost::multi_index_container< ObservationMatchGroup, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::member< ObservationMatchGroup, std::set< ObservationMatchRef >, &ObservationMatchGroup::observation_match_refs > > > > ObservationMatchGroups
Definition: ObservationMatchGroup.h:73
 
IdentifiedSequence< AASequence > IdentifiedPeptide
Definition: IdentifiedSequence.h:80
 
IteratorWrapper< InputFiles::iterator > InputFileRef
Definition: include/OpenMS/METADATA/ID/InputFile.h:69
 
MassType
Definition: MetaData.h:48
 
IteratorWrapper< ParentSequences::iterator > ParentSequenceRef
Definition: ParentSequence.h:95
 
IteratorWrapper< ParentGroups::iterator > ParentGroupRef
Definition: ParentGroup.h:39
 
boost::multi_index_container< InputFile, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::member< InputFile, String, &InputFile::name > > > > InputFiles
Definition: include/OpenMS/METADATA/ID/InputFile.h:68
 
std::set< AdductInfo, AdductCompare > Adducts
Definition: ObservationMatch.h:42
 
: Group of ambiguously identified parent sequences (e.g. protein group)
Definition: ParentGroup.h:25
 
Main OpenMS namespace.
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
 
Definition: AppliedProcessingStep.h:30
 
Parameters specific to a database search step.
Definition: DBSearchParam.h:22
 
Definition: IdentifiedCompound.h:23
 
Variant type holding Peptide/Compound/Oligo references and convenience functions.
Definition: IdentifiedMolecule.h:29
 
Representation of an identified sequence (peptide or oligonucleotide)
Definition: IdentifiedSequence.h:27
 
: Group of related (co-identified) input matches
Definition: ObservationMatchGroup.h:25
 
Representation of a search hit (e.g. peptide-spectrum match).
Definition: ObservationMatch.h:48
 
Representation of an observation, e.g. a spectrum or feature, in an input data file.
Definition: Observation.h:28
 
Set of groups of ambiguously identified parent sequences (e.g. results of running a protein inference...
Definition: ParentGroup.h:44
 
Meta data for the association between an identified molecule (e.g. peptide) and a parent sequence (e....
Definition: ParentMatch.h:20
 
Representation of a parent sequence that is identified only indirectly (e.g. a protein).
Definition: ParentSequence.h:24
 
Information about software used for data processing.
Definition: ProcessingSoftware.h:23
 
Data processing step that is applied to the data (e.g. database search, PEP calculation,...
Definition: ProcessingStep.h:22
 
Information about a score type.
Definition: ScoreType.h:20
 
Base class for ID data with scores and processing steps (and meta info)
Definition: ScoredProcessingResult.h:19
 
structure that maps references of corresponding objects after copying
Definition: IdentificationData.h:184
 
std::map< ObservationMatchRef, ObservationMatchRef > observation_match_refs
Definition: IdentificationData.h:196
 
std::map< ProcessingSoftwareRef, ProcessingSoftwareRef > processing_software_refs
Definition: IdentificationData.h:187
 
std::map< IdentifiedPeptideRef, IdentifiedPeptideRef > identified_peptide_refs
Definition: IdentificationData.h:192
 
IdentifiedMolecule translate(IdentifiedMolecule old) const
 
std::map< ParentSequenceRef, ParentSequenceRef > parent_sequence_refs
Definition: IdentificationData.h:191
 
ObservationMatchRef translate(ObservationMatchRef old) const
 
std::map< SearchParamRef, SearchParamRef > search_param_refs
Definition: IdentificationData.h:188
 
std::map< ScoreTypeRef, ScoreTypeRef > score_type_refs
Definition: IdentificationData.h:186
 
std::map< IdentifiedCompoundRef, IdentifiedCompoundRef > identified_compound_refs
Definition: IdentificationData.h:194
 
std::map< ProcessingStepRef, ProcessingStepRef > processing_step_refs
Definition: IdentificationData.h:189
 
std::map< AdductRef, AdductRef > adduct_refs
Definition: IdentificationData.h:195
 
std::map< ObservationRef, ObservationRef > observation_refs
Definition: IdentificationData.h:190
 
std::map< IdentifiedOligoRef, IdentifiedOligoRef > identified_oligo_refs
Definition: IdentificationData.h:193
 
std::map< InputFileRef, InputFileRef > input_file_refs
Definition: IdentificationData.h:185