8 #ifndef INCLUDE_MOLASSEMBLER_DIRECTED_CONFORMER_GENERATOR_H 
    9 #define INCLUDE_MOLASSEMBLER_DIRECTED_CONFORMER_GENERATOR_H 
   15 #include "boost/variant/variant_fwd.hpp" 
   17 #include <unordered_map> 
   24 namespace Molassembler {
 
   26 namespace outcome = OUTCOME_V2_NAMESPACE;
 
  105   constexpr 
static std::uint8_t unknownDecision = std::numeric_limits<std::uint8_t>::max();
 
  110     AtomStereopermutatorPreconditionsUnmet,
 
  112     HasAssignedBondStereopermutator,
 
  114     HasTerminalConstitutingAtom,
 
  186   static boost::variant<IgnoreReason, BondStereopermutator> considerBond(
 
  222     const DecisionList& a,
 
  223     const DecisionList& b,
 
  224     const DecisionList& bounds
 
  250     const BondList& bondsToConsider = {}
 
  256   DirectedConformerGenerator(DirectedConformerGenerator&& other) noexcept;
 
  257   DirectedConformerGenerator& operator = (DirectedConformerGenerator&& other) noexcept;
 
  258   DirectedConformerGenerator(const DirectedConformerGenerator& other) = delete;
 
  259   DirectedConformerGenerator& operator = (const DirectedConformerGenerator& other) = delete;
 
  260   ~DirectedConformerGenerator();
 
  283   DecisionList generateNewDecisionList(Random::Engine& engine = 
randomnessEngine());
 
  295   bool insert(const DecisionList& decisionList);
 
  305   bool contains(const DecisionList& decisionList) const;
 
  311   BondStereopermutator::Alignment alignment() const;
 
  320   const BondList& bondList() const;
 
  332   unsigned decisionListSetSize() const;
 
  341   unsigned idealEnsembleSize() const;
 
  356     const DecisionList& decisionList,
 
  357     const DistanceGeometry::Configuration& configuration = DistanceGeometry::Configuration {},
 
  372     const DecisionList& decisionList,
 
  374     const DistanceGeometry::Configuration& configuration = DistanceGeometry::Configuration {},
 
  382   Molecule conformationMolecule(
const DecisionList& decisionList) 
const;
 
  404   DecisionList getDecisionList(
 
  405     const Utils::AtomCollection& atomCollection,
 
  425   DecisionList getDecisionList(
 
  426     const Utils::PositionCollection& positions,
 
  433       : dihedralRetries(3),
 
  491   void enumerateRandom(
 
  493     const EnumerationSettings& settings = {}
 
  497   Relabeler relabeler() 
const;
 
  500   std::vector<int> binMidpointIntegers(
const DecisionList& decision) 
const;
 
  505   std::unique_ptr<Impl> pImpl_;
 
  522     std::vector<AtomIndex> is;
 
  525     std::vector<AtomIndex> ls;
 
  526     unsigned symmetryOrder;
 
  528   using Interval = std::pair<double, double>;
 
  529   using Intervals = std::vector<Interval>;
 
  538     const std::vector<double>& dihedrals,
 
  540     unsigned symmetryOrder = 1
 
  563   std::vector<Intervals> 
bins(
double delta=M_PI / 6) 
const;
 
  574   std::vector<std::vector<unsigned>> 
binIndices(
 
  575     const std::vector<Intervals>& allBins
 
  580     const std::vector<std::vector<unsigned>>& 
binIndices,
 
  581     const std::vector<Intervals>& allBins
 
  586   std::vector<DihedralInfo> sequences;
 
  587   std::vector<std::vector<double>> observedDihedrals;
 
Models a molecule as a graph (connectivity of atoms) and a list of stereopermutators. 
Definition: Molecule.h:73
outcome::result< Utils::PositionCollection > generateConformation(const Molecule &molecule, unsigned seed, const DistanceGeometry::Configuration &configuration=DistanceGeometry::Configuration{})
Generate a 3D structure of a Molecule. 
A configuration object for distance geometry runs with sane defaults. 
Definition: Conformers.h:75
At least one pair of substituents are staggered along the axis. 
std::vector< unsigned > distance(AtomIndex i, const Graph &graph)
Calculates the graph distance from a single atom index to all others. 
Choose whichever assignment best represents the geometry directly. 
outcome::result< Utils::PositionCollection > generateRandomConformation(const Molecule &molecule, const DistanceGeometry::Configuration &configuration=DistanceGeometry::Configuration{})
Generate a 3D structure of a Molecule. 
Positions must be close to the idealized assignment geometry. 
std::size_t AtomIndex
Unsigned integer atom index type. Used to refer to particular atoms. 
Definition: Types.h:51
Handle rotational arrangements of adjacent atom-centered shapes. 
Type used to refer to particular bonds. Orders first < second. 
Definition: Types.h:54
Centralizes the main customization points of the library's behavior. 
FittingMode
Differentiates how viable assignments are chosen during fitting. 
Definition: BondStereopermutator.h:67
Random::Engine & randomnessEngine()
Randomness source for the entire library. 
Alignment
How dihedrals are aligned in the generation of stereopermutations. 
Definition: BondStereopermutator.h:53