OpenMS
|
Implements MassDecomposer
interface using algorithm and data structures described in paper "Efficient Mass Decomposition" S. Böcker, Z. Lipták, ACM SAC-BIO, 2004 doi:10.1145/1066677.1066715.
More...
#include <OpenMS/CHEMISTRY/MASSDECOMPOSITION/IMS/IntegerMassDecomposer.h>
Public Types | |
typedef MassDecomposer< ValueType, DecompositionValueType >::value_type | value_type |
Type of value to be decomposed. More... | |
typedef MassDecomposer< ValueType, DecompositionValueType >::decomposition_value_type | decomposition_value_type |
Type of decomposition value. More... | |
typedef MassDecomposer< ValueType, DecompositionValueType >::decomposition_type | decomposition_type |
Type of decomposition. More... | |
typedef MassDecomposer< ValueType, DecompositionValueType >::decompositions_type | decompositions_type |
Type of container for many decompositions. More... | |
typedef decomposition_type::size_type | size_type |
Type of decomposition's size. More... | |
Public Types inherited from MassDecomposer< long unsigned int, unsigned int > | |
typedef long unsigned int | value_type |
typedef unsigned int | decomposition_value_type |
typedef std::vector< decomposition_value_type > | decomposition_type |
typedef std::vector< decomposition_type > | decompositions_type |
Public Member Functions | |
IntegerMassDecomposer (const Weights &alphabet) | |
bool | exist (value_type mass) override |
decomposition_type | getDecomposition (value_type mass) override |
decompositions_type | getAllDecompositions (value_type mass) override |
decomposition_value_type | getNumberOfDecompositions (value_type mass) override |
Public Member Functions inherited from MassDecomposer< long unsigned int, unsigned int > | |
virtual | ~MassDecomposer () |
virtual bool | exist (value_type mass)=0 |
virtual decomposition_type | getDecomposition (value_type mass)=0 |
virtual decompositions_type | getAllDecompositions (value_type mass)=0 |
virtual decomposition_value_type | getNumberOfDecompositions (value_type mass)=0 |
Private Types | |
typedef std::vector< std::pair< size_type, decomposition_value_type > > | witness_vector_type |
typedef std::vector< value_type > | residues_table_row_type |
typedef std::vector< residues_table_row_type > | residues_table_type |
Private Member Functions | |
void | fillExtendedResidueTable_ (const Weights &_alphabet, residues_table_row_type &_lcms, residues_table_row_type &_mass_in_lcms, const value_type _infty, witness_vector_type &_witness_vector, residues_table_type &_ertable) |
void | collectDecompositionsRecursively_ (value_type mass, size_type alphabetMassIndex, decomposition_type decomposition, decompositions_type &decompositionsStore) |
Private Attributes | |
Weights | alphabet_ |
residues_table_type | ertable_ |
residues_table_row_type | lcms_ |
residues_table_row_type | mass_in_lcms_ |
value_type | infty_ |
witness_vector_type | witness_vector_ |
Implements MassDecomposer
interface using algorithm and data structures described in paper "Efficient Mass Decomposition" S. Böcker, Z. Lipták, ACM SAC-BIO, 2004 doi:10.1145/1066677.1066715.
The main idea is instead of using the classical dynamic programming algorithm, store the residues of the smallest decomposable numbers for every modulo of the smallest alphabet mass.
ValueType | Type of values to be decomposed. |
DecompositionValueType | Type of decomposition elements. |
typedef MassDecomposer<ValueType, DecompositionValueType>::decomposition_type decomposition_type |
Type of decomposition.
typedef MassDecomposer<ValueType, DecompositionValueType>::decomposition_value_type decomposition_value_type |
Type of decomposition value.
typedef MassDecomposer<ValueType, DecompositionValueType>::decompositions_type decompositions_type |
Type of container for many decompositions.
|
private |
Type of rows of residues table.
|
private |
Type of the residues table.
typedef decomposition_type::size_type size_type |
Type of decomposition's size.
typedef MassDecomposer<ValueType, DecompositionValueType>::value_type value_type |
Type of value to be decomposed.
|
private |
Type of witness vector.
|
explicit |
Constructor with weights.
alphabet | Weights over which masses to be decomposed. |
References IntegerMassDecomposer< ValueType, DecompositionValueType >::ertable_, IntegerMassDecomposer< ValueType, DecompositionValueType >::fillExtendedResidueTable_(), Weights::getWeight(), IntegerMassDecomposer< ValueType, DecompositionValueType >::infty_, IntegerMassDecomposer< ValueType, DecompositionValueType >::lcms_, IntegerMassDecomposer< ValueType, DecompositionValueType >::mass_in_lcms_, Weights::size(), and IntegerMassDecomposer< ValueType, DecompositionValueType >::witness_vector_.
|
private |
Collects decompositions for mass
by recursion.
mass | Mass to be decomposed. |
alphabetMassIndex | An index of the mass in alphabet that is used on this step of recursion. |
decomposition | Decomposition which is calculated on this step of recursion. |
decompositionsStore | Container where decompositions are collected. |
|
override |
Returns true if decomposition over the mass
exists, otherwise - false.
mass | Mass to be decomposed. |
|
private |
Fills the extended residues table.
References OpenMS::Math::gcd(), Weights::getWeight(), and Weights::size().
Referenced by IntegerMassDecomposer< ValueType, DecompositionValueType >::IntegerMassDecomposer().
|
override |
Gets all possible decompositions for mass
.
mass | Mass to be decomposed. |
|
override |
Gets one possible decomposition for mass
.
mass | Mass to be decomposed. |
|
override |
Gets number of all possible decompositions for a given mass
. Since using getAllDecomposition() the usage of this function could be consuming.
mass | Mass to be decomposed |
Gets number of all possible decompositions for a given mass
. Since using getAllDecomposition() the usage of this function could be consuming.
Needs the mass
to be decomposed and returns the number of decompositions for that mass.
|
private |
Table with the residues of the smallest decomposable numbers over every modulo of the smallest alphabet mass are stored. Corresponds to the Extended Residue Table in the paper.
Referenced by IntegerMassDecomposer< ValueType, DecompositionValueType >::IntegerMassDecomposer().
|
private |
Represents an infinite value.
Referenced by IntegerMassDecomposer< ValueType, DecompositionValueType >::IntegerMassDecomposer().
|
private |
List of the least common multiples. Corresponds to the lcm data structure in the paper.
Referenced by IntegerMassDecomposer< ValueType, DecompositionValueType >::IntegerMassDecomposer().
|
private |
List of the counters for the least common multiples that store the number how often the smallest alphabet mass fits into the corresponding least common multiple(lcm).
Referenced by IntegerMassDecomposer< ValueType, DecompositionValueType >::IntegerMassDecomposer().
|
private |
List of the witnesses that is used to find one mass decomposition. Corresponds to the witness vector w in the paper.
Referenced by IntegerMassDecomposer< ValueType, DecompositionValueType >::IntegerMassDecomposer().