11 #ifndef INCLUDE_MOLASSEMBLER_MOLECULE_H
12 #define INCLUDE_MOLASSEMBLER_MOLECULE_H
14 #include "boost/optional.hpp"
21 using ElementTypeCollection = std::vector<ElementType>;
25 namespace Molassembler {
29 class StereopermutatorList;
30 struct RankingInformation;
88 const std::vector<AtomIndex>& canonicalizationIndexMap,
122 Utils::ElementType a,
123 Utils::ElementType b,
124 BondType bondType = BondType::Single
163 const boost::optional<
164 std::vector<BondIndex>
165 >& bondStereopermutatorCandidatesOptional = boost::none
181 boost::optional<AtomEnvironmentComponents> canonicalComponentsOption = boost::none
209 Utils::ElementType elementType,
211 BondType bondType = BondType::Single
242 BondType bondType = BondType::Single
281 void assignStereopermutator(
283 const boost::optional<unsigned>& assignmentOption
314 void assignStereopermutator(
316 const boost::optional<unsigned>& assignmentOption
403 std::vector<AtomIndex> canonicalize(
517 Utils::ElementType elementType
556 boost::optional<AtomEnvironmentComponents> canonicalComponents()
const;
602 std::string dumpGraphviz()
const;
608 const Graph& graph()
const;
632 std::size_t
hash()
const;
662 const boost::optional<
663 std::vector<BondIndex>
664 >& explicitBondStereopermutatorCandidatesOption = boost::none
668 std::string str()
const;
697 const std::vector<AtomIndex>& excludeAdjacent = {},
698 const boost::optional<AngstromPositions>& positionsOption = boost::none
721 bool canonicalCompare(
722 const Molecule& other,
759 boost::optional<std::vector<AtomIndex>> modularIsomorphism(
760 const Molecule& other,
784 bool operator == (
const Molecule& other)
const;
786 bool operator != (
const Molecule& other)
const;
792 std::unique_ptr<Impl> pImpl_;
Models a molecule as a graph (connectivity of atoms) and a list of stereopermutators.
Definition: Molecule.h:73
Drives a PRNG.
Definition: Prng.h:24
double element(const PositionCollection &normalizedPositions, const Elements::Rotation &rotation)
Returns the CSM for a Rotation symmetry element along the rotation axis without optimizing the coordi...
A wrapper class around Utils' PositionCollection to emphasize that the positions stored therein are i...
Definition: AngstromPositions.h:25
ShapeResult shape(const PositionCollection &normalizedPositions, Shape shape)
Forwarding function to calculate the continuous shape measure.
Definition: MoleculeImpl.h:21
Represents the connectivity of atoms of a molecule.
Definition: Graph.h:57
boost::optional< Shapes::Shape > inferShape(const Graph &graph, AtomIndex index, const RankingInformation &ranking)
Forwards inference to appropriate model depending on environment.
AtomEnvironmentComponents
For bitmasks grouping components of immediate atom environments.
Definition: Types.h:103
std::ostream & operator<<(std::ostream &os, const Scine::Molassembler::Molecule &molecule)
Writes some information about a molecule to a stream.
Manages all stereopermutators that are part of a Molecule.
Definition: StereopermutatorList.h:30
std::size_t AtomIndex
Unsigned integer atom index type. Used to refer to particular atoms.
Definition: Types.h:51
Permutation applyPermutation(const Permutation &occupation, const Permutation &permutation)
Rotates a passed list of indices with a specified rotation vector.
BondType
Discrete bond type numeration.
Definition: Types.h:26
Type used to refer to particular bonds. Orders first < second.
Definition: Types.h:54
Centralizes the main customization points of the library's behavior.
WideHashType hash(AtomEnvironmentComponents bitmask, Utils::ElementType elementType, const std::vector< BondInformation > &sortedBonds, const boost::optional< Shapes::Shape > &shapeOptional, const boost::optional< unsigned > &assignedOptional)
Convolutes the atom's element type and bonds into an unsigned integer.
Shape
Enumeration of all contained symmetry names.
Definition: Shapes.h:28
Class with static functions providing higher-level molecule operations.
Definition: Editing.h:22
Random::Engine & randomnessEngine()
Randomness source for the entire library.