29 #ifndef CDPL_CHEM_BONDORDERCALCULATOR_HPP
30 #define CDPL_CHEM_BONDORDERCALCULATOR_HPP
49 class SubstructureSearch;
54 class AtomBondMapping;
121 typedef std::shared_ptr<MolecularGraph> MolecularGraphPtr;
122 typedef std::shared_ptr<SubstructureSearch> SubstructureSearchPtr;
123 typedef std::vector<const Bond*> BondList;
124 typedef std::vector<const Atom*> AtomList;
125 typedef std::vector<std::size_t> UIntTable;
126 typedef std::vector<Geometry> GeometryTable;
127 typedef std::vector<MolecularGraphPtr> MolecularGraphPtrList;
128 typedef std::vector<std::pair<double, const AtomBondMapping*> > ABMappingList;
130 class AtomMatchExpression;
131 class BondMatchExpression;
133 friend class BondMatchExpression;
147 void assignFragBondOrders(std::size_t depth,
Util::STArray& orders);
149 double calcHybridizationMatchScore();
154 Geometry perceiveInitialGeometry(
const Atom& atom);
155 void fixRingAtomGeometries(
const Fragment& ring);
160 void getNeighborAtoms(
const Atom& atom, AtomList& atom_list,
const Atom* exclude_atom)
const;
161 std::size_t countBondsWithOrder(
const Atom& atom, std::size_t order,
const UIntTable& order_table)
const;
163 template <
typename Pred>
164 void getUndefBondFragment(
const Atom& atom,
bool add_atoms,
const Pred& bond_pred);
166 double calcAvgBondAngle(
const Atom& atom,
const AtomList& nbr_atoms)
const;
167 double calcDihedralAngle(
const Atom& atom1,
const Atom& atom2,
const Atom& atom3,
const Atom& atom4)
const;
170 double calcAvgTorsionAngle(
const Fragment& ring)
const;
172 bool isPlanarPiBond(
const Bond& bond)
const;
178 UIntTable freeAtomValences;
179 GeometryTable atomGeometries;
181 BondList fragBondList;
182 AtomList fragAtomList;
183 AtomList nbrAtomList1;
184 AtomList nbrAtomList2;
185 UIntTable fragBondOrders;
186 UIntTable workingBondOrders;
187 double currOrderAssmentScore;
188 double bestOrderAssmentScore;
189 SubstructureSearchPtr substructSearch;
190 MolecularGraphPtrList funcGroupPatterns;
191 ABMappingList funcGroupMappings;
Definition of class CDPL::Util::Array.
Declaration of type CDPL::Util::BitSet.
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 vector data types.
Data structure for the common storage of related atom to atom and bond to bond mappings.
Definition: AtomBondMapping.hpp:55
Abstract base class representing a chemical atom and its bonded neighborhood.
Definition: Atom.hpp:58
Perceives bond orders of a molecular graph from its 3D structure and atom connectivity.
Definition: BondOrderCalculator.hpp:64
bool undefinedOnly() const
Tells whether or not only undefined bond orders have to be perceived.
BondOrderCalculator(const MolecularGraph &molgraph, Util::STArray &orders, bool undef_only=true)
Constructs the BondOrderCalculator instance and perceives the order of the bonds in the molecular gra...
void undefinedOnly(bool undef_only)
Allows to specify whether already defined bond orders should be left unchanged.
void calculate(const MolecularGraph &molgraph, Util::STArray &orders)
Perceives the order of the bonds in the molecular graph molgraph from its 3D structure and atom conne...
BondOrderCalculator()
Constructs the BondOrderCalculator instance.
Abstract base class representing a chemical bond between two atoms (represented by Chem::Atom instanc...
Definition: Bond.hpp:54
Concrete implementation of the Chem::MolecularGraph interface that stores references to selectable Ch...
Definition: Fragment.hpp:60
Abstract base class for data structures that represent chemical structures as molecular graphs.
Definition: MolecularGraph.hpp:60
CVector< double, 3 > Vector3D
Bounded 3 element vector holding floating-point values of type double.
Definition: Vector.hpp:3218
constexpr unsigned int LINEAR
Specifies linear geometry.
Definition: CoordinationGeometry.hpp:58
constexpr unsigned int TETRAHEDRAL
Specifies tetrahedral geometry.
Definition: CoordinationGeometry.hpp:68
Array< std::size_t > STArray
Array storing unsigned integers of type std::size_t.
Definition: Array.hpp:578
boost::dynamic_bitset BitSet
Dynamic bitset class.
Definition: BitSet.hpp:46
The namespace of the Chemical Data Processing Library.