29 #ifndef CDPL_CHEM_SYMMETRYCLASSCALCULATOR_HPP
30 #define CDPL_CHEM_SYMMETRYCLASSCALCULATOR_HPP
69 static constexpr
unsigned int DEF_ATOM_PROPERTY_FLAGS =
77 static constexpr
unsigned int DEF_BOND_PROPERTY_FLAGS =
173 void calcSVMNumbers();
178 AtomNode* allocNode(std::uint64_t class_id);
180 typedef std::vector<AtomNode*> NodeList;
188 void addNbrNode(AtomNode*);
190 void setSVMNumber(std::uint64_t);
192 void calcNextSVMNumber();
193 void updateSVMNumber();
194 void updateSVMHistory();
196 void setNextSymClassID(std::uint64_t);
200 std::size_t getSymClassID()
const;
201 void setSymClassID(std::uint64_t class_id);
216 typedef std::vector<std::uint64_t> SVMNumberList;
218 std::uint64_t symClassID;
219 std::uint64_t nextSymClassID;
220 std::uint64_t nbrSymClassIDProd;
221 std::uint64_t svmNumber;
222 std::uint64_t nextSVMNumber;
223 SVMNumberList svmNumberHistory;
230 unsigned int atomPropertyFlags;
231 unsigned int bondPropertyFlags;
235 NodeList sortedAtomNodes;
Definition of class CDPL::Util::Array.
Definition of constants in namespace CDPL::Chem::BondPropertyFlag.
Definition of the preprocessor macro CDPL_CHEM_API.
#define CDPL_CHEM_API
Tells the compiler/linker which classes, functions and variables are part of the library API.
Definition of constants in namespace CDPL::Chem::AtomPropertyFlag.
Definition of class CDPL::Util::ObjectStack.
Abstract base class for representations of a chemical structure as a graph of bonded atoms.
Definition: MolecularGraph.hpp:57
Perceives topological-symmetry classes of the atoms in a molecular graph.
Definition: SymmetryClassCalculator.hpp:62
bool implicitHydrogensIncluded() const
Tells whether implicit hydrogen atoms are ignored or treated in the same way as explicit ones.
void setBondPropertyFlags(unsigned int flags)
Allows to specify the set of bond properties that has to be considered in the perception of topologic...
void calculate(const MolecularGraph &molgraph, Util::STArray &class_ids)
Perceives the topological symmetry classes of the atoms in the molecular graph molgraph.
SymmetryClassCalculator()
Constructs the SymmetryClassCalculator instance.
void setAtomPropertyFlags(unsigned int flags)
Allows to specify the set of atomic properties that has to be considered in the perception of topolog...
SymmetryClassCalculator(const MolecularGraph &molgraph, Util::STArray &class_ids)
Constructs the SymmetryClassCalculator instance and perceives the topological symmetry classes of the...
SymmetryClassCalculator & operator=(const SymmetryClassCalculator &)=delete
SymmetryClassCalculator(const SymmetryClassCalculator &)=delete
unsigned int getAtomPropertyFlags() const
Returns the set of atomic properties that gets considered in the perception of topological symmetry c...
unsigned int getBondPropertyFlags() const
Returns the set of bond properties that gets considered in the perception of topological symmetry cla...
void includeImplicitHydrogens(bool include)
Allows to specify whether implicit hydrogen atoms shall be ignored or treated in the same way as expl...
constexpr unsigned int FORMAL_CHARGE
Specifies the formal charge of an atom.
Definition: Chem/AtomPropertyFlag.hpp:73
constexpr unsigned int H_COUNT
Specifies the hydrogen count of an atom.
Definition: Chem/AtomPropertyFlag.hpp:78
constexpr unsigned int AROMATICITY
Specifies the membership of an atom in aromatic rings.
Definition: Chem/AtomPropertyFlag.hpp:93
constexpr unsigned int ISOTOPE
Specifies the isotopic mass of an atom.
Definition: Chem/AtomPropertyFlag.hpp:68
constexpr unsigned int TYPE
Specifies the generic type or element of an atom.
Definition: Chem/AtomPropertyFlag.hpp:63
constexpr unsigned int AROMATICITY
Specifies the membership of a bond in aromatic rings.
Definition: BondPropertyFlag.hpp:73
constexpr unsigned int ORDER
Specifies the order of a bond.
Definition: BondPropertyFlag.hpp:63
Array< std::size_t > STArray
Array storing unsigned integers of type std::size_t.
Definition: Array.hpp:575
The namespace of the Chemical Data Processing Library.
Definition: SymmetryClassCalculator.hpp:210
bool operator()(const AtomNode *, const AtomNode *) const
Definition: SymmetryClassCalculator.hpp:204
bool operator()(const AtomNode *, const AtomNode *) const