OpenMS
ElementDB Class Reference

Singleton that stores elements and isotopes. More...

#include <OpenMS/CHEMISTRY/ElementDB.h>

Collaboration diagram for ElementDB:
[legend]

Predicates

std::unordered_map< std::string, const Element * > names_
 
std::unordered_map< std::string, const Element * > symbols_
 
std::unordered_map< unsigned int, const Element * > atomic_numbers_
 
bool hasElement (const std::string &name) const
 returns true if the db contains an element with the given name More...
 
bool hasElement (unsigned int atomic_number) const
 returns true if the db contains an element with the given atomic_number More...
 
IsotopeDistribution parseIsotopeDistribution_ (const std::map< unsigned int, double > &abundance, const std::map< unsigned int, double > &mass)
 
double calculateAvgWeight_ (const std::map< unsigned int, double > &abundance, const std::map< unsigned int, double > &mass)
 
double calculateMonoWeight_ (const std::map< unsigned int, double > &abundance, const std::map< unsigned int, double > &mass)
 
void storeElements_ ()
 constructs element objects More...
 
void buildElement_ (const std::string &name, const std::string &symbol, const unsigned int an, const std::map< unsigned int, double > &abundance, const std::map< unsigned int, double > &mass)
 build element objects from given abundances, masses, name, symbol, and atomic number More...
 
void addElementToMaps_ (const std::string &name, const std::string &symbol, const unsigned int an, std::unique_ptr< const Element > e)
 add element objects to documentation maps More...
 
void storeIsotopes_ (const std::string &name, const std::string &symbol, const unsigned int an, const std::map< unsigned int, double > &Z_to_mass, const IsotopeDistribution &isotopes)
 constructs isotope objects More...
 
void clear_ ()
 
 ElementDB ()
 
 ~ElementDB ()
 
 ElementDB (const ElementDB &db)=delete
 
 ElementDB (const ElementDB &&db)=delete
 
ElementDBoperator= (const ElementDB &db)=delete
 

Accessors

static ElementDBgetInstance ()
 
const std::unordered_map< std::string, const Element * > & getNames () const
 returns a hashmap that contains names mapped to pointers to the elements More...
 
const std::unordered_map< std::string, const Element * > & getSymbols () const
 returns a hashmap that contains symbols mapped to pointers to the elements More...
 
const std::unordered_map< unsigned int, const Element * > & getAtomicNumbers () const
 returns a hashmap that contains atomic numbers mapped to pointers of the elements More...
 
const ElementgetElement (const std::string &name) const
 
const ElementgetElement (unsigned int atomic_number) const
 returns a pointer to the element of atomic number; if no element is found 0 is returned More...
 
void addElement (const std::string &name, const std::string &symbol, const unsigned int an, const std::map< unsigned int, double > &abundance, const std::map< unsigned int, double > &mass, bool replace_existing)
 

Detailed Description

Singleton that stores elements and isotopes.

The elements weights (in the default file) are taken from "Isotopic Compositions of the Elements 1997", Pure Appl. Chem., 70(1), 217-235, 1998. (http://www.iupac.org/reports/1998/7001rosman/)

The isotope distributions (in the default file) are taken from "Atomic weights of the elements. Review 2000" (IUPAC Technical Report) Pure Appl. Chem., 2003, Vol. 75, No. 6, pp. 683-799 doi:10.1351/pac200375060683

Specific isotopes of elements can be accessed by writing the atomic number of the isotope in brackets followed by the element name, e.g. "(2)H" for deuterium.

Improvement:

include exact mass values for the isotopes (done) and update IsotopeDistribution (Andreas)

add exact isotope distribution based on exact isotope values (Andreas)

Constructor & Destructor Documentation

◆ ElementDB() [1/3]

ElementDB ( )
private

◆ ~ElementDB()

~ElementDB ( )
private

◆ ElementDB() [2/3]

ElementDB ( const ElementDB db)
privatedelete

◆ ElementDB() [3/3]

ElementDB ( const ElementDB &&  db)
privatedelete

Member Function Documentation

◆ addElement()

void addElement ( const std::string &  name,
const std::string &  symbol,
const unsigned int  an,
const std::map< unsigned int, double > &  abundance,
const std::map< unsigned int, double > &  mass,
bool  replace_existing 
)

Adds or replaces a new element to the database

Adds a new element (or replaces an existing one if replace_existing is true).

Parameters
nameCommon name of the element
symbolElement symbol (one or two letter)
anAtomic number (number of protons)
abundanceList of abundances for each isotope (e.g. {{12u, 0.9893}, {13u, 0.0107}} for Carbon)
massList of masses for each isotope (e.g. {{12u, 12.0}, {13u, 13.003355}} for Carbon)
replace_existingIf the element must be replaced (i.e. is not new), either allow that (=true), or throw an exception (=false).
Exceptions
Exception::IllegalArgumentif element already exists in DB, but replace_existing is false
Note
Do not use this function inside parallel code as it modifies a singleton that is shared between threads.

◆ addElementToMaps_()

void addElementToMaps_ ( const std::string &  name,
const std::string &  symbol,
const unsigned int  an,
std::unique_ptr< const Element e 
)
protected

add element objects to documentation maps

◆ buildElement_()

void buildElement_ ( const std::string &  name,
const std::string &  symbol,
const unsigned int  an,
const std::map< unsigned int, double > &  abundance,
const std::map< unsigned int, double > &  mass 
)
protected

build element objects from given abundances, masses, name, symbol, and atomic number

◆ calculateAvgWeight_()

double calculateAvgWeight_ ( const std::map< unsigned int, double > &  abundance,
const std::map< unsigned int, double > &  mass 
)
protected

calculates the average weight based on isotope abundance and mass

◆ calculateMonoWeight_()

double calculateMonoWeight_ ( const std::map< unsigned int, double > &  abundance,
const std::map< unsigned int, double > &  mass 
)
protected

_ calculates the mono weight based on the most abundant isotope

◆ clear_()

void clear_ ( )
protected

_ resets all containers

◆ getAtomicNumbers()

const std::unordered_map<unsigned int, const Element*>& getAtomicNumbers ( ) const

returns a hashmap that contains atomic numbers mapped to pointers of the elements

◆ getElement() [1/2]

const Element* getElement ( const std::string &  name) const

returns a pointer to the element with name or symbol given in parameter name; if no element exists with that name or symbol 0 is returned

Parameters
namename or symbol of the element

◆ getElement() [2/2]

const Element* getElement ( unsigned int  atomic_number) const

returns a pointer to the element of atomic number; if no element is found 0 is returned

◆ getInstance()

static ElementDB* getInstance ( )
static

returns a pointer to the singleton instance of the element db This is thread safe upon first and subsequent calls.

◆ getNames()

const std::unordered_map<std::string, const Element*>& getNames ( ) const

returns a hashmap that contains names mapped to pointers to the elements

◆ getSymbols()

const std::unordered_map<std::string, const Element*>& getSymbols ( ) const

returns a hashmap that contains symbols mapped to pointers to the elements

◆ hasElement() [1/2]

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

returns true if the db contains an element with the given name

◆ hasElement() [2/2]

bool hasElement ( unsigned int  atomic_number) const

returns true if the db contains an element with the given atomic_number

◆ operator=()

ElementDB& operator= ( const ElementDB db)
privatedelete

◆ parseIsotopeDistribution_()

IsotopeDistribution parseIsotopeDistribution_ ( const std::map< unsigned int, double > &  abundance,
const std::map< unsigned int, double > &  mass 
)
protected

parses a isotope distribution of abundances and masses

◆ storeElements_()

void storeElements_ ( )
protected

constructs element objects

◆ storeIsotopes_()

void storeIsotopes_ ( const std::string &  name,
const std::string &  symbol,
const unsigned int  an,
const std::map< unsigned int, double > &  Z_to_mass,
const IsotopeDistribution isotopes 
)
protected

constructs isotope objects

Member Data Documentation

◆ atomic_numbers_

std::unordered_map<unsigned int, const Element*> atomic_numbers_
protected

◆ names_

std::unordered_map<std::string, const Element*> names_
protected

◆ symbols_

std::unordered_map<std::string, const Element*> symbols_
protected