11 #ifndef INCLUDE_MOLASSEMBLER_MOLECULE_H
12 #define INCLUDE_MOLASSEMBLER_MOLECULE_H
15 #include "boost/optional.hpp"
23 using ElementTypeCollection = std::vector<ElementType>;
27 namespace Molassembler {
31 class StereopermutatorList;
32 struct RankingInformation;
33 class AtomStereopermutator;
34 struct PeriodicBoundaryDuplicates;
92 const std::vector<AtomIndex>& canonicalizationIndexMap,
167 const
boost::optional<
169 >& bondStereopermutatorCandidatesOptional =
boost::none
175 const
boost::optional<
177 >& bondStereopermutatorCandidatesOptional,
304 void assignStereopermutator(
306 const
boost::optional<
unsigned>& assignmentOption
337 void assignStereopermutator(
339 const
boost::optional<
unsigned>& assignmentOption
588 void thermalizeStereopermutator(
AtomIndex a,
bool thermalization = true);
596 MASM_NO_EXPORT
Graph& graph(unsafe_tag_t );
597 MASM_NO_EXPORT
void propagate(unsafe_tag_t );
610 bool canRemove(
const BondIndex& edge)
const final;
612 const Cycles& cycles() const final;
614 unsigned degree(
AtomIndex a) const final;
620 unsigned E() const final;
675 std::
string dumpGraphviz() const;
735 const
boost::optional<
737 >& explicitBondStereopermutatorCandidatesOption =
boost::none
741 std::
string str() const;
770 const std::vector<
AtomIndex>& excludeAdjacent = {},
771 const boost::optional<AngstromPositions>& positionsOption = boost::none
865 std::unique_ptr<Impl> pImpl_;
Handle rotational arrangements of adjacent atom-centered shapes.
Interface class for the molecular graph.
std::ostream & operator<<(std::ostream &os, const Scine::Molassembler::Molecule &molecule)
Writes some information about a molecule to a stream.
Centralizes the main customization points of the library's behavior.
A wrapper class around Utils' PositionCollection to emphasize that the positions stored therein are i...
Definition: AngstromPositions.h:25
Handles specific relative arrangements of two atom stereopermutators joined by a bond.
Definition: BondStereopermutator.h:46
Wrapper class to make working with RDL in C++ more pleasant.
Definition: Cycles.h:44
Represents the connectivity of atoms of a molecule.
Definition: Graph.h:54
Models a molecule as a graph (connectivity of atoms) and a list of stereopermutators.
Definition: Molecule.h:77
static Utils::AtomCollection applyCanonicalizationMap(const std::vector< AtomIndex > &canonicalizationIndexMap, const Utils::AtomCollection &atomCollection)
Applies a canonicalization index mapping to an atom collection.
Molecule(Molecule &&other) noexcept
Default-constructor creates a hydrogen molecule (H2).
Molecule(const Molecule &other)
Default-constructor creates a hydrogen molecule (H2).
bool canonicalCompare(const Molecule &other, AtomEnvironmentComponents componentBitmask=AtomEnvironmentComponents::All) const
Modular comparison of this Molecule with another, assuming that both are in a canonical form.
~Molecule() final
Default-constructor creates a hydrogen molecule (H2).
boost::optional< std::vector< AtomIndex > > modularIsomorphism(const Molecule &other, AtomEnvironmentComponents componentBitmask) const
Modular comparison of this Molecule with another.
Manages all stereopermutators that are part of a Molecule.
Definition: StereopermutatorList.h:30
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.
boost::optional< Shapes::Shape > inferShape(const Graph &graph, AtomIndex index, const RankingInformation &ranking)
Forwards inference to appropriate model depending on environment.
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...
ShapeResult shape(const PositionCollection &normalizedPositions, Shape shape)
Forwarding function to calculate the continuous shape measure.
Permutation applyPermutation(const Permutation &occupation, const Permutation &permutation)
Rotates a passed list of indices with a specified rotation vector.
Shape
Enumeration of all contained symmetry names.
Definition: Shapes.h:28
AtomEnvironmentComponents
For bitmasks grouping components of immediate atom environments.
Definition: Types.h:103
BondType
Discrete bond type numeration.
Definition: Types.h:26
std::size_t AtomIndex
Unsigned integer atom index type. Used to refer to particular atoms.
Definition: Types.h:51
Random::Engine & randomnessEngine()
Randomness source for the entire library.
Additions to Boost namespace for BGL compatibility of custom graph classes.
Definition: Gor1.h:30
Type used to refer to particular bonds. Orders first < second.
Definition: Types.h:54
Definition: GraphInterface.h:21
Definition: MoleculeImpl.h:22
Definition: Molecule.h:593
Definition: PeriodicBoundaries.h:22