15#ifndef RD_ENUMERATESTEREOISOMERS_H
16#define RD_ENUMERATESTEREOISOMERS_H
21#include <unordered_set>
23#include <boost/dynamic_bitset/dynamic_bitset.hpp>
71 bool verbose =
false);
82 std::unique_ptr<ROMol>
next();
91 std::uint64_t d_numReturned{0};
94 std::uint64_t d_numToReturn{1024};
96 std::uint64_t d_totalPoss{0};
97 std::unordered_set<std::string> d_generatedIsomers;
100 std::unique_ptr<std::mt19937> d_randGen;
101 std::bernoulli_distribution d_randDis{0.5};
104 std::vector<std::unique_ptr<details::Flipper>> d_flippers;
107 std::unordered_set<boost::dynamic_bitset<>> d_seen;
109 void buildFlippers();
110 std::unique_ptr<ROMol> generateRandomIsomer();
111 bool embeddable(ROMol &isomer);
Defines the primary molecule class ROMol as well as associated typedefs.
Defines the editable molecule class RWMol.
StereoisomerEnumerator & operator=(StereoisomerEnumerator &&other)=delete
std::unique_ptr< ROMol > next()
StereoisomerEnumerator(const ROMol &mol, const StereoEnumerationOptions &options=StereoEnumerationOptions(), bool verbose=false)
std::uint64_t getStereoisomerCount() const
StereoisomerEnumerator(StereoisomerEnumerator &&other)=delete
StereoisomerEnumerator(const StereoisomerEnumerator &other)=delete
StereoisomerEnumerator & operator=(const StereoisomerEnumerator &other)=delete
StereoisomerEnumerator()=delete
~StereoisomerEnumerator()=default
RWMol is a molecule class that is intended to be edited.
#define RDKIT_ENUMERATESTEREOISOMERS_EXPORT