Molassembler  1.0.0
Molecule graph and conformer library
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
FeasiblePermutations.h
Go to the documentation of this file.
1 
8 #ifndef INCLUDE_MOLASSEMBLER_STEREOPERMUTATIONS_FEASIBLE_PERMUTATIONS_H
9 #define INCLUDE_MOLASSEMBLER_STEREOPERMUTATIONS_FEASIBLE_PERMUTATIONS_H
10 
12 #include "Molassembler/Options.h"
14 
16 
17 namespace Scine {
18 namespace Molassembler {
19 namespace Stereopermutators {
20 
21 // Forward-declarations
22 struct Abstract;
23 
24 struct Feasible {
27  using ConeAngleType = std::vector<
28  boost::optional<DistanceGeometry::ValueBounds>
29  >;
31 
34 
41  static bool linkPossiblyFeasible(
42  const RankingInformation::Link& link,
43  AtomIndex placement,
44  const ConeAngleType& cones,
45  const RankingInformation& ranking,
47  const SiteToShapeVertexMap& shapeVertexMap,
48  const Graph& graph
49  );
50 
59  static bool possiblyFeasible(
60  const Stereopermutations::Stereopermutation& assignment,
61  AtomIndex placement,
62  const RankingInformation::RankedSitesType& canonicalSites,
63  const ConeAngleType& coneAngles,
64  const RankingInformation& ranking,
65  Shapes::Shape shape,
66  const Graph& graph
67  );
69 
73  Feasible() = default;
74 
89  Feasible(
90  const Abstract& abstractPermutations,
91  Shapes::Shape shape,
92  AtomIndex placement,
93  const RankingInformation& ranking,
94  const Graph& graph
95  );
97 
101  std::vector<DistanceGeometry::ValueBounds> siteDistances;
102 
104  ConeAngleType coneAngles;
105 
107  std::vector<unsigned> indices;
109 };
110 
111 } // namespace Stereopermutators
112 } // namespace Molassembler
113 } // namespace Scine
114 
115 #endif
Ranking data of substituents around a central vertex.
Definition: RankingInformation.h:23
std::vector< unsigned > indices
Vector of permutation indices that are feasible.
Definition: FeasiblePermutations.h:107
Represent abstract stereopermutation around atom center.
Definition: Stereopermutation.h:32
Base class to describe substituent arrangements in shapes.
ShapeResult shape(const PositionCollection &normalizedPositions, Shape shape)
Forwarding function to calculate the continuous shape measure.
static bool possiblyFeasible(const Stereopermutations::Stereopermutation &assignment, AtomIndex placement, const RankingInformation::RankedSitesType &canonicalSites, const ConeAngleType &coneAngles, const RankingInformation &ranking, Shapes::Shape shape, const Graph &graph)
Determine whether a stereopermutation is possibly feasible.
Represents the connectivity of atoms of a molecule.
Definition: Graph.h:57
std::vector< DistanceGeometry::ValueBounds > siteDistances
Mapping from site index to modeled site plane distance.
Definition: FeasiblePermutations.h:101
std::size_t AtomIndex
Unsigned integer atom index type. Used to refer to particular atoms.
Definition: Types.h:51
Data struct for storing a numeric interval.
Feasible()=default
Empty initializer, all data members are null objects.
Centralizes the main customization points of the library&#39;s behavior.
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:24
Calculate shape position maps.
static bool linkPossiblyFeasible(const RankingInformation::Link &link, AtomIndex placement, const ConeAngleType &cones, const RankingInformation &ranking, Shapes::Shape shape, const SiteToShapeVertexMap &shapeVertexMap, const Graph &graph)
Determine whether a link is possibly feasible.
ConeAngleType coneAngles
Mapping from site index to cone angle optional.
Definition: FeasiblePermutations.h:104
NestedList< SiteIndex > RankedSitesType
Ascending ordered list of binding site indices (sub-list site indices equal)
Definition: RankingInformation.h:40