17 #ifndef INCLUDE_MOLASSEMBLER_ATOM_STEREOPERMUTATOR_H
18 #define INCLUDE_MOLASSEMBLER_ATOM_STEREOPERMUTATOR_H
28 namespace Molassembler {
31 struct RankingInformation;
32 class AngstromPositions;
35 namespace Stereopermutators {
44 namespace DistanceGeometry {
92 std::vector<unsigned>(
133 [[deprecated("Prefer constructor without graph argument")]]
164 const ThermalizationPredicate& thermalization = {}
204 static bool thermalized(
207 const RankingInformation& ranking,
230 void assign(boost::optional<unsigned> assignment);
274 boost::optional<ShapeMap> fit(
275 const SiteCentroids& centroids,
276 const FeasiblesGenerator& feasibility = {},
277 const ThermalizationPredicate& thermalization = {}
295 boost::optional<ShapeMap> fit(
296 const AngstromPositions& wrapper,
297 const FeasiblesGenerator& feasibility = {},
298 const ThermalizationPredicate& thermalization = {}
301 [[deprecated(
"Prefer graph-less alternative parameters")]]
302 boost::optional<ShapeMap> fit(
304 const AngstromPositions& angstromWrapper
316 MASM_NO_EXPORT boost::optional<PropagatedState> propagate(
317 RankingInformation newRanking,
318 boost::optional<Shapes::Shape> shapeOption,
319 const FeasiblesGenerator& feasibility = {},
320 const ThermalizationPredicate& thermalization = {}
330 void propagateVertexRemoval(
AtomIndex removedIndex);
342 const FeasiblesGenerator& feasibility = {},
343 const ThermalizationPredicate& thermalization = {}
346 [[deprecated(
"Prefer graph-less alternative parameters")]]
353 void thermalize(
bool thermalization =
true);
372 double angle(SiteIndex i, SiteIndex j)
const;
381 boost::optional<unsigned> assigned()
const;
397 boost::optional<unsigned> indexOfPermutation()
const;
415 std::vector<MinimalChiralConstraint> minimalChiralConstraints(
bool enforce =
false)
const;
421 std::string info()
const;
427 std::string rankInfo()
const;
437 std::vector<std::vector<SiteIndex>> siteGroups()
const;
440 SiteCentroids sitePositions(
441 const AngstromPositions& wrapper,
442 const std::vector<std::pair<AtomIndex, AtomIndex>>& substitutions = {}
446 bool thermalized()
const;
453 MASM_NO_EXPORT
const Stereopermutators::Abstract& getAbstract()
const;
460 MASM_NO_EXPORT
const std::vector<unsigned>& getFeasible()
const;
466 const RankingInformation& getRanking()
const;
479 const ShapeMap& getShapePositionMap()
const;
502 unsigned numAssignments()
const;
525 unsigned numStereopermutations()
const;
539 bool operator == (
const AtomStereopermutator& other)
const;
541 bool operator != (
const AtomStereopermutator& other)
const;
551 bool operator < (
const AtomStereopermutator& other)
const;
556 std::unique_ptr<Impl> pImpl_;
std::array< boost::optional< SiteIndex >, 4 > MinimalChiralConstraint
Site index sequence defining a chiral constraint. If a site index is None, then it denotes the positi...
Definition: AtomStereopermutator.h:107
std::function< bool(AtomIndex, Shapes::Shape, const RankingInformation &)> ThermalizationPredicate
Predicate to decide whether an atom stereopermutator is thermalized.
Definition: AtomStereopermutator.h:88
Strongly typed index permutations.
bool thermalized() const
Returns whether the stereopermutations are thermalized.
Drives a PRNG.
Definition: Prng.h:24
ShapeResult shape(const PositionCollection &normalizedPositions, Shape shape)
Forwarding function to calculate the continuous shape measure.
std::tuple< RankingInformation, ShapeMap > PropagatedState
Old state dumped upon propagation.
Definition: AtomStereopermutator.h:101
Eigen::Matrix< double, 3, Eigen::Dynamic > SiteCentroids
Spatial positions of the centroids of sites.
Definition: AtomStereopermutator.h:85
Represents the connectivity of atoms of a molecule.
Definition: Graph.h:54
Class performing spatial modeling of molecules.
Definition: SpatialModel.h:40
Centralizes basic shape data in runtime types.
Handles the steric permutation of substituents of a non-terminal central atom.
Definition: AtomStereopermutator.h:79
std::function< std::vector< unsigned >(const Stereopermutators::Abstract &abstract, Shapes::Shape shape, AtomIndex placement, const RankingInformation &ranking) > FeasiblesGenerator
Generator function to list spatially feasible permutation indices.
Definition: AtomStereopermutator.h:98
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.
static auto thermalizationFunctor(const Graph &g)
Binds a graph instance into a functor invoking thermalized.
Definition: AtomStereopermutator.h:212
Temple::StrongIndex< vertex_index_tag, unsigned > Vertex
Index of a shape vertex.
Definition: Data.h:33
Class to compute the set of abstract permutations from ranking and shape.
Definition: AbstractPermutations.h:24
Shape
Enumeration of all contained symmetry names.
Definition: Shapes.h:28
Definition: FeasiblePermutations.h:51
Data struct representing a chiral constraint.
Definition: DistanceGeometry.h:32