Wrapper class to make working with RDL in C++ more pleasant. More...
#include <Cycles.h>
Data Structures | |
class | AllCyclesIterator |
Iterator for all relevant cycles of the graph. More... | |
class | UrfIdsCycleIterator |
Iterator for cycles of specific universal ring families. More... | |
Public Member Functions | |
Special member functions | |
Cycles (const Graph &sourceGraph, bool ignoreEtaBonds=true) | |
Constructor from outer graph. More... | |
Cycles (const PrivateGraph &innerGraph, bool ignoreEtaBonds=true) | |
Information | |
unsigned | numCycleFamilies () const |
Returns the number of unique ring families (URFs) More... | |
unsigned | numCycleFamilies (AtomIndex index) const |
Returns the number of unique ring families (URFs) an index is involved in. More... | |
unsigned | numCycleFamilies (const BondIndex &bond) const |
Returns the number of unique ring families (URFs) a bond is in. More... | |
unsigned | numRelevantCycles () const |
Returns the number of relevant cycles (RCs) More... | |
unsigned | numRelevantCycles (AtomIndex index) const |
Returns the number of relevant cycles (RCs) More... | |
unsigned | numRelevantCycles (const BondIndex &bond) const |
Returns the number of relevant cycles (RCs) a bond is in. More... | |
RDL_data * | dataPtr () const |
Provide access to calculated data. | |
Iterators | |
AllCyclesIterator | begin () const |
AllCyclesIterator | end () const |
Ranges | |
IteratorRange < UrfIdsCycleIterator > | containing (AtomIndex atom) const |
Range of relevant cycles containing an atom. More... | |
IteratorRange < UrfIdsCycleIterator > | containing (const BondIndex &bond) const |
Range of relevant cycles containing a bond. More... | |
IteratorRange < UrfIdsCycleIterator > | containing (const std::vector< BondIndex > &bonds) const |
Range of relevant cycles containing several bonds. More... | |
Operators | |
bool | operator== (const Cycles &other) const |
Must be copy of another to compare equal. Constructed from same graph does not suffice. | |
bool | operator!= (const Cycles &other) const |
Must be copy of another to compare equal. Constructed from same graph does not suffice. | |
Private Attributes | |
std::shared_ptr< RdlDataPtrs > | rdlPtr_ |
std::unordered_map< BondIndex, std::vector< unsigned > , boost::hash< BondIndex > > | urfMap_ |
Wrapper class to make working with RDL in C++ more pleasant.
Calculated data from a graph is movable, copyable and assignable in all the usual ways, and is therefore suited for caching. Equality comparison of this type and its nested types follows same-base, not equal-base logic of comparison due to management of the C pointer types and the associated allocated memory using shared_ptrs.
Scine::Molassembler::Cycles::Cycles | ( | const Graph & | sourceGraph, |
bool | ignoreEtaBonds = true |
||
) |
Constructor from outer graph.
Complexity Approximately linear in the number of bonds in cycles
Scine::Molassembler::Cycles::Cycles | ( | const PrivateGraph & | innerGraph, |
bool | ignoreEtaBonds = true |
||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
IteratorRange<UrfIdsCycleIterator> Scine::Molassembler::Cycles::containing | ( | AtomIndex | atom | ) | const |
Range of relevant cycles containing an atom.
Complexity \(O(U)\) where \(U\) is the number of unique ring families of the molecule
IteratorRange<UrfIdsCycleIterator> Scine::Molassembler::Cycles::containing | ( | const BondIndex & | bond | ) | const |
Range of relevant cycles containing a bond.
Complexity \(\Theta(1)\)
IteratorRange<UrfIdsCycleIterator> Scine::Molassembler::Cycles::containing | ( | const std::vector< BondIndex > & | bonds | ) | const |
Range of relevant cycles containing several bonds.
Complexity \(\Theta(B)\) where \(B\) is the number of bonds in the parameters
unsigned Scine::Molassembler::Cycles::numCycleFamilies | ( | ) | const |
Returns the number of unique ring families (URFs)
Complexity \(\Theta(1)\)
unsigned Scine::Molassembler::Cycles::numCycleFamilies | ( | AtomIndex | index | ) | const |
Returns the number of unique ring families (URFs) an index is involved in.
Complexity \(\Theta(U)\) where \(U\) is the number of unique ring families in the molecule
unsigned Scine::Molassembler::Cycles::numCycleFamilies | ( | const BondIndex & | bond | ) | const |
Returns the number of unique ring families (URFs) a bond is in.
Complexity \(\Theta(U)\) where \(U\) is the number of unique ring families in the molecule
unsigned Scine::Molassembler::Cycles::numRelevantCycles | ( | ) | const |
Returns the number of relevant cycles (RCs)
Complexity \(\Theta(1)\)
unsigned Scine::Molassembler::Cycles::numRelevantCycles | ( | AtomIndex | index | ) | const |
Returns the number of relevant cycles (RCs)
Complexity \(\Theta(U)\) where \(U\) is the number of unique ring families in the molecule
unsigned Scine::Molassembler::Cycles::numRelevantCycles | ( | const BondIndex & | bond | ) | const |
Returns the number of relevant cycles (RCs) a bond is in.
Complexity \(\Theta(U)\) where \(U\) is the number of unique ring families in the molecule