29 #ifndef CDPL_CHEM_BONDORDERCALCULATOR_HPP 
   30 #define CDPL_CHEM_BONDORDERCALCULATOR_HPP 
   49         class SubstructureSearch;
 
   54         class AtomBondMapping;
 
  113             typedef std::shared_ptr<MolecularGraph>                         MolecularGraphPtr;
 
  114             typedef std::shared_ptr<SubstructureSearch>                     SubstructureSearchPtr;
 
  115             typedef std::vector<const Bond*>                                BondList;
 
  116             typedef std::vector<const Atom*>                                AtomList;
 
  117             typedef std::vector<std::size_t>                                UIntTable;
 
  118             typedef std::vector<Geometry>                                   GeometryTable;
 
  119             typedef std::vector<MolecularGraphPtr>                          MolecularGraphPtrList;
 
  120             typedef std::vector<std::pair<double, const AtomBondMapping*> > ABMappingList;
 
  122             class AtomMatchExpression;
 
  123             class BondMatchExpression;
 
  125             friend class BondMatchExpression;
 
  139             void assignFragBondOrders(std::size_t depth, 
Util::STArray& orders);
 
  141             double calcHybridizationMatchScore();
 
  146             Geometry perceiveInitialGeometry(
const Atom& atom);
 
  147             void     fixRingAtomGeometries(
const Fragment& ring);
 
  152             void        getNeighborAtoms(
const Atom& atom, AtomList& atom_list, 
const Atom* exclude_atom) 
const;
 
  153             std::size_t countBondsWithOrder(
const Atom& atom, std::size_t order, 
const UIntTable& order_table) 
const;
 
  155             template <
typename Pred>
 
  156             void getUndefBondFragment(
const Atom& atom, 
bool add_atoms, 
const Pred& bond_pred);
 
  158             double calcAvgBondAngle(
const Atom& atom, 
const AtomList& nbr_atoms) 
const;
 
  159             double calcDihedralAngle(
const Atom& atom1, 
const Atom& atom2, 
const Atom& atom3, 
const Atom& atom4) 
const;
 
  162             double calcAvgTorsionAngle(
const Fragment& ring) 
const;
 
  164             bool isPlanarPiBond(
const Bond& bond) 
const;
 
  170             UIntTable             freeAtomValences;
 
  171             GeometryTable         atomGeometries;
 
  173             BondList              fragBondList;
 
  174             AtomList              fragAtomList;
 
  175             AtomList              nbrAtomList1;
 
  176             AtomList              nbrAtomList2;
 
  177             UIntTable             fragBondOrders;
 
  178             UIntTable             workingBondOrders;
 
  179             double                currOrderAssmentScore;
 
  180             double                bestOrderAssmentScore;
 
  181             SubstructureSearchPtr substructSearch;
 
  182             MolecularGraphPtrList funcGroupPatterns;
 
  183             ABMappingList         funcGroupMappings;
 
Definition of the class CDPL::Util::Array.
 
Definition of the 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.
 
A data structure for the common storage of related atom to atom and bond to bond mappings.
Definition: AtomBondMapping.hpp:55
 
Atom.
Definition: Atom.hpp:52
 
BondOrderCalculator.
Definition: BondOrderCalculator.hpp:60
 
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.
 
Bond.
Definition: Bond.hpp:50
 
Fragment.
Definition: Fragment.hpp:52
 
MolecularGraph.
Definition: MolecularGraph.hpp:52
 
CVector< double, 3 > Vector3D
A bounded 3 element vector holding floating point values of type double.
Definition: Vector.hpp:1637
 
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
An array of unsigned integers of type std::size_t.
Definition: Array.hpp:567
 
boost::dynamic_bitset BitSet
A dynamic bitset class.
Definition: BitSet.hpp:46
 
The namespace of the Chemical Data Processing Library.