Chemical Data Processing Library C++ API - Version 1.4.0
Public Types | Public Member Functions | List of all members
CDPL::Descr::BulkSimilarityCalculator< DT, SVT > Class Template Reference

Calculator that performs a bulk pairwise comparison of a single query descriptor against a stored set of target descriptors using a configurable similarity function. More...

#include <BulkSimilarityCalculator.hpp>

Public Types

typedef DT Descriptor
 The descriptor type. More...
 
typedef std::shared_ptr< DT > DescriptorPointer
 A smart pointer to a stored descriptor. More...
 
typedef SVT SimilarityValue
 The similarity-value type. More...
 
typedef std::function< SVT(const DT &, const DT &)> SimilarityFunction
 Type of the generic functor used to compute the similarity of two descriptors. More...
 
typedef std::pair< std::size_t, SVT > Result
 A single calculation result: (target descriptor index, similarity value). More...
 
typedef std::shared_ptr< BulkSimilarityCalculatorSharedPointer
 A reference-counted smart pointer [SHPTR] for dynamically allocated BulkSimilarityCalculator instances. More...
 
typedef boost::indirect_iterator< typename DescriptorList::const_iterator, DT > ConstDescriptorIterator
 A constant iterator over the stored target descriptors. More...
 
typedef boost::indirect_iterator< typename DescriptorList::iterator, DT > DescriptorIterator
 A mutable iterator over the stored target descriptors. More...
 
typedef ResultList::const_iterator ConstResultIterator
 A constant iterator over the calculation results. More...
 

Public Member Functions

 BulkSimilarityCalculator ()=default
 Constructs the BulkSimilarityCalculator instance with the default similarity function (TanimotoSimilarity). More...
 
 BulkSimilarityCalculator (const BulkSimilarityCalculator &calc)=default
 Copy constructor. More...
 
 BulkSimilarityCalculator (BulkSimilarityCalculator &&calc)=default
 Move constructor. More...
 
template<typename SF >
 BulkSimilarityCalculator (SF &&sim_func)
 Constructs the BulkSimilarityCalculator instance with the given similarity function. More...
 
BulkSimilarityCalculatoroperator= (const BulkSimilarityCalculator &calc)=default
 Copy assignment operator. More...
 
BulkSimilarityCalculatoroperator= (BulkSimilarityCalculator &&calc)=default
 Move assignment operator. More...
 
const SimilarityFunctiongetSimilarityFunction () const
 Returns the currently configured similarity function. More...
 
template<typename SF >
void setSimilarityFunction (SF &&func)
 Sets the similarity function. More...
 
void clear ()
 Removes all stored descriptors and calculation results. More...
 
DescriptorIterator getDescriptorsBegin ()
 Returns a mutable iterator pointing to the first stored descriptor. More...
 
DescriptorIterator getDescriptorsEnd ()
 Returns a mutable iterator pointing one past the last stored descriptor. More...
 
ConstDescriptorIterator getDescriptorsBegin () const
 Returns a constant iterator pointing to the first stored descriptor. More...
 
ConstDescriptorIterator getDescriptorsEnd () const
 Returns a constant iterator pointing one past the last stored descriptor. More...
 
std::size_t getNumDescriptors () const
 Returns the number of stored descriptors. More...
 
void addDescriptor (const Descriptor &descr)
 Adds a copy of descr to the stored descriptor list. More...
 
void addDescriptor (const DescriptorPointer &descr_ptr)
 Adds the descriptor referenced by descr_ptr to the stored descriptor list, sharing ownership. More...
 
bool containsDescriptor (const Descriptor &descr) const
 Tells whether a descriptor that compares equal to descr is stored. More...
 
const DescriptorgetDescriptor (std::size_t idx) const
 Returns the stored descriptor at index idx. More...
 
void removeDescriptor (std::size_t idx)
 Removes the descriptor at index idx. More...
 
DescriptorIterator removeDescriptor (const DescriptorIterator &it)
 Removes the descriptor referenced by it. More...
 
void calculate (const Descriptor &descr, bool sort=false, bool sort_desc=true)
 Computes the similarity between the query descr and every stored descriptor. More...
 
ConstResultIterator getResultsBegin () const
 Returns a constant iterator pointing to the first result of the last calculate() call. More...
 
ConstResultIterator getResultsEnd () const
 Returns a constant iterator pointing one past the last result of the last calculate() call. More...
 
ConstResultIterator begin () const
 Returns a constant iterator pointing to the first result (range-based for support). More...
 
ConstResultIterator end () const
 Returns a constant iterator pointing one past the last result (range-based for support). More...
 
const ResultgetResult (std::size_t idx) const
 Returns the result at the given index. More...
 
const SimilarityValuegetSimilarity (std::size_t idx) const
 Returns the similarity value of the result at the given index. More...
 
std::size_t getDescriptorIndex (std::size_t idx) const
 Returns the index of the target descriptor referenced by the result at the given result index. More...
 

Detailed Description

template<typename DT = Util::BitSet, typename SVT = double>
class CDPL::Descr::BulkSimilarityCalculator< DT, SVT >

Calculator that performs a bulk pairwise comparison of a single query descriptor against a stored set of target descriptors using a configurable similarity function.

Stored descriptors are held by shared pointer; the calculator can therefore share descriptor ownership with external code. After a call to calculate() the per-target similarity values are available in stored order and can optionally be sorted.

Template Parameters
DTThe descriptor type (defaults to Util::BitSet, suitable for fingerprint similarity).
SVTThe similarity-value type (defaults to double).
Since
1.2.3

Member Typedef Documentation

◆ Descriptor

template<typename DT = Util::BitSet, typename SVT = double>
typedef DT CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::Descriptor

The descriptor type.

◆ DescriptorPointer

template<typename DT = Util::BitSet, typename SVT = double>
typedef std::shared_ptr<DT> CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::DescriptorPointer

A smart pointer to a stored descriptor.

◆ SimilarityValue

template<typename DT = Util::BitSet, typename SVT = double>
typedef SVT CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::SimilarityValue

The similarity-value type.

◆ SimilarityFunction

template<typename DT = Util::BitSet, typename SVT = double>
typedef std::function<SVT(const DT&, const DT&)> CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::SimilarityFunction

Type of the generic functor used to compute the similarity of two descriptors.

◆ Result

template<typename DT = Util::BitSet, typename SVT = double>
typedef std::pair<std::size_t, SVT> CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::Result

A single calculation result: (target descriptor index, similarity value).

◆ SharedPointer

template<typename DT = Util::BitSet, typename SVT = double>
typedef std::shared_ptr<BulkSimilarityCalculator> CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::SharedPointer

A reference-counted smart pointer [SHPTR] for dynamically allocated BulkSimilarityCalculator instances.

◆ ConstDescriptorIterator

template<typename DT = Util::BitSet, typename SVT = double>
typedef boost::indirect_iterator<typename DescriptorList::const_iterator, DT> CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::ConstDescriptorIterator

A constant iterator over the stored target descriptors.

◆ DescriptorIterator

template<typename DT = Util::BitSet, typename SVT = double>
typedef boost::indirect_iterator<typename DescriptorList::iterator, DT> CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::DescriptorIterator

A mutable iterator over the stored target descriptors.

◆ ConstResultIterator

template<typename DT = Util::BitSet, typename SVT = double>
typedef ResultList::const_iterator CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::ConstResultIterator

A constant iterator over the calculation results.

Constructor & Destructor Documentation

◆ BulkSimilarityCalculator() [1/4]

template<typename DT = Util::BitSet, typename SVT = double>
CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::BulkSimilarityCalculator ( )
default

Constructs the BulkSimilarityCalculator instance with the default similarity function (TanimotoSimilarity).

◆ BulkSimilarityCalculator() [2/4]

template<typename DT = Util::BitSet, typename SVT = double>
CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::BulkSimilarityCalculator ( const BulkSimilarityCalculator< DT, SVT > &  calc)
default

Copy constructor.

Parameters
calcThe other BulkSimilarityCalculator instance.

◆ BulkSimilarityCalculator() [3/4]

template<typename DT = Util::BitSet, typename SVT = double>
CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::BulkSimilarityCalculator ( BulkSimilarityCalculator< DT, SVT > &&  calc)
default

Move constructor.

Parameters
calcThe other BulkSimilarityCalculator instance.

◆ BulkSimilarityCalculator() [4/4]

template<typename DT = Util::BitSet, typename SVT = double>
template<typename SF >
CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::BulkSimilarityCalculator ( SF &&  sim_func)
inline

Constructs the BulkSimilarityCalculator instance with the given similarity function.

Template Parameters
SFThe similarity-function type.
Parameters
sim_funcThe similarity function.

Member Function Documentation

◆ operator=() [1/2]

template<typename DT = Util::BitSet, typename SVT = double>
BulkSimilarityCalculator& CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::operator= ( const BulkSimilarityCalculator< DT, SVT > &  calc)
default

Copy assignment operator.

Parameters
calcThe other BulkSimilarityCalculator instance.
Returns
A reference to itself.

◆ operator=() [2/2]

template<typename DT = Util::BitSet, typename SVT = double>
BulkSimilarityCalculator& CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::operator= ( BulkSimilarityCalculator< DT, SVT > &&  calc)
default

Move assignment operator.

Parameters
calcThe other BulkSimilarityCalculator instance.
Returns
A reference to itself.

◆ getSimilarityFunction()

template<typename DT , typename SVT >
const CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::SimilarityFunction & CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::getSimilarityFunction

Returns the currently configured similarity function.

Returns
A const reference to the similarity function.

◆ setSimilarityFunction()

template<typename DT , typename SVT >
template<typename SF >
void CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::setSimilarityFunction ( SF &&  func)

Sets the similarity function.

Template Parameters
SFThe similarity-function type.
Parameters
funcThe new similarity function.

◆ clear()

template<typename DT , typename SVT >
void CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::clear

Removes all stored descriptors and calculation results.

◆ getDescriptorsBegin() [1/2]

template<typename DT , typename SVT >
CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::DescriptorIterator CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::getDescriptorsBegin

Returns a mutable iterator pointing to the first stored descriptor.

Returns
A mutable iterator pointing to the first stored descriptor.

◆ getDescriptorsEnd() [1/2]

template<typename DT , typename SVT >
CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::DescriptorIterator CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::getDescriptorsEnd

Returns a mutable iterator pointing one past the last stored descriptor.

Returns
A mutable iterator pointing one past the last stored descriptor.

◆ getDescriptorsBegin() [2/2]

template<typename DT , typename SVT >
CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::ConstDescriptorIterator CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::getDescriptorsBegin

Returns a constant iterator pointing to the first stored descriptor.

Returns
A constant iterator pointing to the first stored descriptor.

◆ getDescriptorsEnd() [2/2]

template<typename DT , typename SVT >
CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::ConstDescriptorIterator CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::getDescriptorsEnd

Returns a constant iterator pointing one past the last stored descriptor.

Returns
A constant iterator pointing one past the last stored descriptor.

◆ getNumDescriptors()

template<typename DT , typename SVT >
std::size_t CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::getNumDescriptors

Returns the number of stored descriptors.

Returns
The number of descriptors.

◆ addDescriptor() [1/2]

template<typename DT , typename SVT >
void CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::addDescriptor ( const Descriptor descr)

Adds a copy of descr to the stored descriptor list.

Parameters
descrThe descriptor to copy.

◆ addDescriptor() [2/2]

template<typename DT , typename SVT >
void CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::addDescriptor ( const DescriptorPointer descr_ptr)

Adds the descriptor referenced by descr_ptr to the stored descriptor list, sharing ownership.

Parameters
descr_ptrA smart pointer to the descriptor.

◆ containsDescriptor()

template<typename DT , typename SVT >
bool CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::containsDescriptor ( const Descriptor descr) const

Tells whether a descriptor that compares equal to descr is stored.

Parameters
descrThe descriptor to look for.
Returns
true if such a descriptor is stored, and false otherwise.

◆ getDescriptor()

template<typename DT , typename SVT >
const CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::Descriptor & CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::getDescriptor ( std::size_t  idx) const

Returns the stored descriptor at index idx.

Parameters
idxThe zero-based descriptor index.
Returns
A const reference to the descriptor.
Exceptions
Base::IndexErrorif the number of descriptors is zero or idx is not in the range [0, getNumDescriptors() - 1].

◆ removeDescriptor() [1/2]

template<typename DT , typename SVT >
void CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::removeDescriptor ( std::size_t  idx)

Removes the descriptor at index idx.

Parameters
idxThe zero-based descriptor index.
Exceptions
Base::IndexErrorif the number of descriptors is zero or idx is not in the range [0, getNumDescriptors() - 1].

◆ removeDescriptor() [2/2]

template<typename DT , typename SVT >
CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::DescriptorIterator CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::removeDescriptor ( const DescriptorIterator it)

Removes the descriptor referenced by it.

Parameters
itIterator referencing the descriptor to remove.
Returns
A mutable iterator pointing to the descriptor following the removed one.
Exceptions
Base::RangeErrorif the number of descriptors is zero or it is not in the range [getDescriptorsBegin(), getDescriptorsEnd() - 1].

◆ calculate()

template<typename DT , typename SVT >
void CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::calculate ( const Descriptor descr,
bool  sort = false,
bool  sort_desc = true 
)

Computes the similarity between the query descr and every stored descriptor.

Parameters
descrThe query descriptor.
sortIf true, the resulting (index, similarity) pairs are sorted by similarity value.
sort_descIf true (default), sorting is in descending order of similarity; if false, in ascending order.

◆ getResultsBegin()

template<typename DT , typename SVT >
CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::ConstResultIterator CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::getResultsBegin

Returns a constant iterator pointing to the first result of the last calculate() call.

Returns
A constant iterator pointing to the first result.

◆ getResultsEnd()

template<typename DT , typename SVT >
CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::ConstResultIterator CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::getResultsEnd

Returns a constant iterator pointing one past the last result of the last calculate() call.

Returns
A constant iterator pointing one past the last result.

◆ begin()

template<typename DT , typename SVT >
CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::ConstResultIterator CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::begin

Returns a constant iterator pointing to the first result (range-based for support).

Returns
A constant iterator pointing to the first result.

◆ end()

template<typename DT , typename SVT >
CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::ConstResultIterator CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::end

Returns a constant iterator pointing one past the last result (range-based for support).

Returns
A constant iterator pointing one past the last result.

◆ getResult()

template<typename DT , typename SVT >
const CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::Result & CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::getResult ( std::size_t  idx) const

Returns the result at the given index.

Parameters
idxThe zero-based result index.
Returns
A const reference to the (descriptor index, similarity) pair.
Exceptions
Base::IndexErrorif the number of descriptors is zero or idx is not in the range [0, getNumDescriptors() - 1].

◆ getSimilarity()

template<typename DT , typename SVT >
const CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::SimilarityValue & CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::getSimilarity ( std::size_t  idx) const

Returns the similarity value of the result at the given index.

Parameters
idxThe zero-based result index.
Returns
A const reference to the similarity value.
Exceptions
Base::IndexErrorif the number of descriptors is zero or idx is not in the range [0, getNumDescriptors() - 1].

◆ getDescriptorIndex()

template<typename DT , typename SVT >
std::size_t CDPL::Descr::BulkSimilarityCalculator< DT, SVT >::getDescriptorIndex ( std::size_t  idx) const

Returns the index of the target descriptor referenced by the result at the given result index.

Parameters
idxThe zero-based result index.
Returns
The descriptor index referenced by the result.
Exceptions
Base::IndexErrorif the number of descriptors is zero or idx is not in the range [0, getNumDescriptors() - 1].

The documentation for this class was generated from the following file: