OpenMS  2.5.0
Related Functions | List of all members
DistanceMatrix< Value > Class Template Reference

A two-dimensional distance matrix, similar to OpenMS::Matrix. More...

#include <OpenMS/DATASTRUCTURES/DistanceMatrix.h>

Public Types

STL compliance type definitions
typedef Value value_type
 

Related Functions

(Note that these are not member functions.)

template<typename Value >
std::ostream & operator<< (std::ostream &os, const DistanceMatrix< Value > &matrix)
 Print the contents to a stream. More...
 

OpenMS compliance type definitions

typedef Size SizeType
 
typedef value_type ValueType
 
ValueType ** matrix_
 sparse element not to be included in base container More...
 
SizeType init_size_
 number of actually stored rows More...
 
SizeType dimensionsize_
 number of accessibly stored rows (i.e. number of columns) More...
 
std::pair< SizeType, SizeTypemin_element_
 index of minimal element(i.e. number in underlying SparseVector) More...
 
 DistanceMatrix ()
 default constructor More...
 
 DistanceMatrix (SizeType dimensionsize, Value value=Value())
 detailed constructor More...
 
 DistanceMatrix (const DistanceMatrix &source)
 copy constructor More...
 
 ~DistanceMatrix ()
 destructor More...
 
const ValueType operator() (SizeType i, SizeType j) const
 gets a value at a given position (read only): More...
 
ValueType operator() (SizeType i, SizeType j)
 gets a value at a given position (read only): More...
 
const ValueType getValue (SizeType i, SizeType j) const
 gets a value at a given position: More...
 
ValueType getValue (SizeType i, SizeType j)
 gets a value at a given position: More...
 
void setValue (SizeType i, SizeType j, ValueType value)
 sets a value at a given position: More...
 
void setValueQuick (SizeType i, SizeType j, ValueType value)
 sets a value at a given position: More...
 
void clear ()
 reset all More...
 
void resize (SizeType dimensionsize, Value value=Value())
 resizing the container More...
 
void reduce (SizeType j)
 reduces DistanceMatrix by one dimension. first the jth row, then jth column More...
 
SizeType dimensionsize () const
 gives the number of rows (i.e. number of columns) More...
 
void updateMinElement ()
 keep track of the actual minimum element after altering the matrix More...
 
bool operator== (DistanceMatrix< ValueType > const &rhs) const
 Equality comparator. More...
 
std::pair< SizeType, SizeTypegetMinElementCoordinates () const
 Indexpair of minimal element. More...
 
DistanceMatrixoperator= (const DistanceMatrix &rhs)
 assignment operator (unsafe) More...
 

Detailed Description

template<typename Value>
class OpenMS::DistanceMatrix< Value >

A two-dimensional distance matrix, similar to OpenMS::Matrix.

Similar to OpenMS::Matrix, but contains only elements above the main diagonal, hence translating access with operator(,) for elements of above the main diagonal to corresponding elements below the main diagonal and returning 0 for requested elements in the main diagonal, since self-distance is assumed to be 0. Keeps track of the minimal element in the Matrix with OpenMS::DistanceMatrix::min_element_ if only for setting a value OpenMS::DistanceMatrix::setValue is used. Other OpenMS::DistanceMatrix altering methods may require a manual update by call of OpenMS::DistanceMatrix::updateMinElement, see the respective methods documentation.

Member Typedef Documentation

◆ SizeType

typedef Size SizeType

◆ value_type

typedef Value value_type

◆ ValueType

Constructor & Destructor Documentation

◆ DistanceMatrix() [1/3]

DistanceMatrix ( )
inline

default constructor

◆ DistanceMatrix() [2/3]

DistanceMatrix ( SizeType  dimensionsize,
Value  value = Value() 
)
inline

detailed constructor

Parameters
dimensionsizethe number of rows (and therewith cols)
valueDistanceMatrix will be filled with this element (main diagonal will still "hold" only zeros)
Exceptions
Exception::OutOfMemoryif requested dimensionsize is to big to fit into memory

References DistanceMatrix< Value >::dimensionsize(), DistanceMatrix< Value >::dimensionsize_, DistanceMatrix< Value >::init_size_, DistanceMatrix< Value >::matrix_, and DistanceMatrix< Value >::min_element_.

◆ DistanceMatrix() [3/3]

DistanceMatrix ( const DistanceMatrix< Value > &  source)
inline

copy constructor

Parameters
sourcethis DistanceMatrix will be copied
Exceptions
Exception::OutOfMemoryif requested dimensionsize is to big to fit into memory

References DistanceMatrix< Value >::dimensionsize_, DistanceMatrix< Value >::init_size_, DistanceMatrix< Value >::matrix_, and DistanceMatrix< Value >::min_element_.

◆ ~DistanceMatrix()

~DistanceMatrix ( )
inline

Member Function Documentation

◆ clear()

void clear ( )
inline

◆ dimensionsize()

SizeType dimensionsize ( ) const
inline

◆ getMinElementCoordinates()

std::pair<SizeType, SizeType> getMinElementCoordinates ( ) const
inline

Indexpair of minimal element.

Exceptions
Exception::OutOfRangethrown if there is no element to access

References DistanceMatrix< Value >::dimensionsize_, and DistanceMatrix< Value >::min_element_.

◆ getValue() [1/2]

ValueType getValue ( SizeType  i,
SizeType  j 
)
inline

gets a value at a given position:

Parameters
ithe i-th row
jthe j-th col
Exceptions
Exception::OutOfRangeif given coordinates are out of range

References DistanceMatrix< Value >::dimensionsize_, and DistanceMatrix< Value >::matrix_.

◆ getValue() [2/2]

const ValueType getValue ( SizeType  i,
SizeType  j 
) const
inline

gets a value at a given position:

Parameters
ithe i-th row
jthe j-th col
Exceptions
Exception::OutOfRangeif given coordinates are out of range

References DistanceMatrix< Value >::dimensionsize_, and DistanceMatrix< Value >::matrix_.

Referenced by DistanceMatrix< Value >::operator()().

◆ operator()() [1/2]

ValueType operator() ( SizeType  i,
SizeType  j 
)
inline

gets a value at a given position (read only):

Parameters
ithe i-th row
jthe j-th col

References DistanceMatrix< Value >::getValue().

◆ operator()() [2/2]

const ValueType operator() ( SizeType  i,
SizeType  j 
) const
inline

gets a value at a given position (read only):

Parameters
ithe i-th row
jthe j-th col

References DistanceMatrix< Value >::getValue().

◆ operator=()

DistanceMatrix& operator= ( const DistanceMatrix< Value > &  rhs)
inlineprivate

◆ operator==()

bool operator== ( DistanceMatrix< ValueType > const &  rhs) const
inline

◆ reduce()

void reduce ( SizeType  j)
inline

reduces DistanceMatrix by one dimension. first the jth row, then jth column

Parameters
jthe jth row (and therewith also jth col) to be removed
Exceptions
Exception::OutOfRangeif j is grater than the greatest row number

May invalidates min_element_, make sure to update min_element_ if necessary before used

References DistanceMatrix< Value >::dimensionsize_, and DistanceMatrix< Value >::matrix_.

◆ resize()

void resize ( SizeType  dimensionsize,
Value  value = Value() 
)
inline

resizing the container

Parameters
dimensionsizethe desired number of rows (and therewith cols)
valuewhich the matrix will be filled with
Exceptions
Exception::OutOfMemorythrown if size of DistanceMatrix requested does not fit into memory

invalidates all content

References DistanceMatrix< Value >::dimensionsize(), DistanceMatrix< Value >::dimensionsize_, DistanceMatrix< Value >::init_size_, OpenMS::Constants::k, DistanceMatrix< Value >::matrix_, and DistanceMatrix< Value >::min_element_.

Referenced by ClusterHierarchical::cluster().

◆ setValue()

void setValue ( SizeType  i,
SizeType  j,
ValueType  value 
)
inline

sets a value at a given position:

Parameters
ithe i-th row
jthe j-th col
valuethe set-value
Exceptions
Exception::OutOfRangeif given coordinates are out of range

References DistanceMatrix< Value >::dimensionsize_, DistanceMatrix< Value >::matrix_, DistanceMatrix< Value >::min_element_, and DistanceMatrix< Value >::updateMinElement().

Referenced by ClusterHierarchical::cluster().

◆ setValueQuick()

void setValueQuick ( SizeType  i,
SizeType  j,
ValueType  value 
)
inline

sets a value at a given position:

Parameters
ithe i-th row
jthe j-th col
valuethe set-value
Exceptions
Exception::OutOfRangeif given coordinates are out of range

possible invalidation of min_element_ - make sure to update before further usage of matrix

References DistanceMatrix< Value >::dimensionsize_, and DistanceMatrix< Value >::matrix_.

Referenced by ClusterHierarchical::cluster().

◆ updateMinElement()

void updateMinElement ( )
inline

keep track of the actual minimum element after altering the matrix

Exceptions
Exception::OutOfRangethrown if there is no element to access

References DistanceMatrix< Value >::dimensionsize_, DistanceMatrix< Value >::matrix_, and DistanceMatrix< Value >::min_element_.

Referenced by DistanceMatrix< Value >::setValue().

Friends And Related Function Documentation

◆ operator<<()

std::ostream & operator<< ( std::ostream &  os,
const DistanceMatrix< Value > &  matrix 
)
related

Print the contents to a stream.

Member Data Documentation

◆ dimensionsize_

SizeType dimensionsize_
protected

◆ init_size_

SizeType init_size_
protected

◆ matrix_

ValueType** matrix_
protected

◆ min_element_

std::pair<SizeType, SizeType> min_element_
protected