OpenMS
Loading...
Searching...
No Matches
ControlledVocabulary Class Reference

#include <OpenMS/FORMAT/ControlledVocabulary.h>

Collaboration diagram for ControlledVocabulary:
[legend]

Classes

struct  CVTerm
 Representation of a CV term. More...
 
struct  FNV1aHasher
 ensure same hash on all platforms (for reproducibility)- More...
 

Public Member Functions

 ControlledVocabulary ()
 Constructor.
 
virtual ~ControlledVocabulary ()
 Destructor.
 
const std::string & name () const
 Returns the CV name (set in the load method)
 
const std::string & label () const
 Returns the CV label (set in the load method)
 
const std::string & version () const
 Returns the CV version (set in the load method)
 
const std::string & url () const
 Returns the CV url (set in the load method)
 
void loadFromOBO (const std::string &name, const std::string &filename)
 Loads the CV from an OBO file.
 
bool exists (const std::string &id) const
 Returns true if the term is in the CV. Returns false otherwise.
 
bool hasTermWithName (const std::string &name) const
 Returns true if a term with the given name is in the CV. Returns false otherwise.
 
const CVTermgetTerm (const std::string &id) const
 Returns a term specified by ID.
 
const CVTermgetTermByName (const std::string &name, const std::string &desc="") const
 Returns a term specified by name.
 
const std::map< std::string, CVTerm > & getTerms () const
 returns all the terms stored in the CV
 
void getAllChildTerms (std::set< std::string > &terms, const std::string &parent_id) const
 Writes all child terms recursively into terms.
 
void addAllChildTerms (std::set< std::string > &terms, const std::string &parent_id) const
 Writes the parent term and all descendant term IDs into terms.
 
template<class LAMBDA >
bool iterateAllChildren (const std::string &parent_id, LAMBDA lbd) const
 Iterates over all children (incl. subchildren etc) of parent recursively, i.e. the whole subtree.
 
const ControlledVocabulary::CVTermcheckAndGetTermByName (const std::string &name) const
 Searches the existing terms for the given name.
 
bool isChildOf (const std::string &child_id, const std::string &parent_id) const
 Returns if child is a child of parent.
 

Static Public Member Functions

static const ControlledVocabularygetPSIMSCV ()
 Returns a CV for parsing/storing PSI-MS related data, e.g. mzML, or handle accessions/ids in datastructures.
 

Protected Member Functions

bool checkName_ (const std::string &id, const std::string &name, bool ignore_case=true) const
 checks if a name corresponds to an id
 

Protected Attributes

std::map< std::string, CVTermterms_
 Map from ID to CVTerm.
 
std::map< std::string, std::string > namesToIds_
 Map from name to id.
 
std::string name_
 Name set in the load method.
 
std::string label_
 CV label.
 
std::string version_
 CV version.
 
std::string url_
 CV URL.
 

Friends

std::ostream & operator<< (std::ostream &os, const ControlledVocabulary &cv)
 Print the contents to a stream.
 

Detailed Description

@brief Representation of a controlled vocabulary.

This representation only contains the information used for parsing and validation.
All other lines are stored in the @em unparsed member of the CVTerm struct.

Constructor & Destructor Documentation

◆ ControlledVocabulary()

Constructor.

◆ ~ControlledVocabulary()

virtual ~ControlledVocabulary ( )
virtual

Destructor.

Member Function Documentation

◆ addAllChildTerms()

void addAllChildTerms ( std::set< std::string > &  terms,
const std::string &  parent_id 
) const

Writes the parent term and all descendant term IDs into terms.

Parameters
[in,out]termsOutput set extended with parent_id and all descendants
[in]parent_idThe parent term ID
Exceptions
Exception::InvalidValueis thrown if the term is not present

◆ checkAndGetTermByName()

const ControlledVocabulary::CVTerm * checkAndGetTermByName ( const std::string &  name) const

Searches the existing terms for the given name.

Parameters
[in]nameThe term name to search for
Returns
const Pointer to found term. When term is not found, returns nullptr

◆ checkName_()

bool checkName_ ( const std::string &  id,
const std::string &  name,
bool  ignore_case = true 
) const
protected

checks if a name corresponds to an id

If the term is not known, 'true' is returned!

◆ exists()

bool exists ( const std::string &  id) const

Returns true if the term is in the CV. Returns false otherwise.

◆ getAllChildTerms()

void getAllChildTerms ( std::set< std::string > &  terms,
const std::string &  parent_id 
) const

Writes all child terms recursively into terms.

If parent has child this method writes them recursively into the term object

Parameters
[out]termsOutput set of child term IDs
[in]parent_idThe parent term ID
Exceptions
Exception::InvalidValueis thrown if the term is not present

◆ getPSIMSCV()

static const ControlledVocabulary & getPSIMSCV ( )
static

Returns a CV for parsing/storing PSI-MS related data, e.g. mzML, or handle accessions/ids in datastructures.

The CV will be initialized on first access. Repeated access is therefor cheap.

It consists of the following CVs:

  • PSI-MS (psi-ms.obo)
  • PATO (quality.obo)
  • UO (unit.obo)
  • BTO (CV/brenda.obo)
  • GO (goslim_goa.obo)

◆ getTerm()

const CVTerm & getTerm ( const std::string &  id) const

Returns a term specified by ID.

Exceptions
Exception::InvalidValueis thrown if the term is not present

◆ getTermByName()

const CVTerm & getTermByName ( const std::string &  name,
const std::string &  desc = "" 
) const

Returns a term specified by name.

Exceptions
Exception::InvalidValueis thrown if the term is not present

◆ getTerms()

const std::map< std::string, CVTerm > & getTerms ( ) const

returns all the terms stored in the CV

◆ hasTermWithName()

bool hasTermWithName ( const std::string &  name) const

Returns true if a term with the given name is in the CV. Returns false otherwise.

◆ isChildOf()

bool isChildOf ( const std::string &  child_id,
const std::string &  parent_id 
) const

Returns if child is a child of parent.

Parameters
[in]child_idThe child term ID
[in]parent_idThe parent term ID
Exceptions
Exception::InvalidValueis thrown if one of the terms is not present

◆ iterateAllChildren()

template<class LAMBDA >
bool iterateAllChildren ( const std::string &  parent_id,
LAMBDA  lbd 
) const
inline

Iterates over all children (incl. subchildren etc) of parent recursively, i.e. the whole subtree.

Parameters
[in]parent_idId of parent (to be passed to getTerm(), to obtain its children).
[in]lbdFunction that gets the child-Ids passed. Must return bool. Used for comparisons and / or to set captured variables. If the lambda returns true, the iteration is exited prematurely. E.g. if you have found your search, you don't need to continue searching. Otherwise, if you want to go through the whole tree (e.g. to fill a vector) you can just return false always to not quit early.

◆ label()

const std::string & label ( ) const

Returns the CV label (set in the load method)

◆ loadFromOBO()

void loadFromOBO ( const std::string &  name,
const std::string &  filename 
)

Loads the CV from an OBO file.

Parameters
[in]nameThe CV name
[in]filenameThe OBO file path
Exceptions
Exception::FileNotFoundis thrown if the file could not be opened
Exception::ParseErroris thrown if an error occurs during parsing

◆ name()

const std::string & name ( ) const

Returns the CV name (set in the load method)

◆ url()

const std::string & url ( ) const

Returns the CV url (set in the load method)

◆ version()

const std::string & version ( ) const

Returns the CV version (set in the load method)

Friends And Related Symbol Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream &  os,
const ControlledVocabulary cv 
)
friend

Print the contents to a stream.

Member Data Documentation

◆ label_

std::string label_
protected

CV label.

◆ name_

std::string name_
protected

Name set in the load method.

◆ namesToIds_

std::map<std::string, std::string> namesToIds_
protected

Map from name to id.

◆ terms_

std::map<std::string, CVTerm> terms_
protected

Map from ID to CVTerm.

◆ url_

std::string url_
protected

CV URL.

◆ version_

std::string version_
protected

CV version.