11#ifndef RDKIT_SYNTHONSPACESEARCHDETAILS_H
12#define RDKIT_SYNTHONSPACESEARCHDETAILS_H
19using Clock = std::chrono::steady_clock;
24namespace SynthonSpaceSearch::details {
35 std::vector<std::unique_ptr<ROMol>> &molFrags);
47 std::uint64_t maxNumFrags,
TimePoint *endTime,
bool &timedOut);
58 const std::vector<std::unique_ptr<ROMol>> &fragSet);
68 const boost::dynamic_bitset<> &fragConns,
69 const boost::dynamic_bitset<> &reactionConns);
78 std::vector<boost::dynamic_bitset<>> &bitSets);
81 const std::vector<boost::dynamic_bitset<>> &bitSets,
82 std::vector<std::vector<size_t>> &outVecs);
87 explicit Stepper(
const std::vector<size_t> &sizes) : d_sizes(sizes) {
88 d_currState = std::vector<size_t>(sizes.size(), 0);
93 if (d_currState[0] == d_sizes[0]) {
96 std::int64_t i =
static_cast<std::int64_t
>(d_currState.size()) - 1;
99 if (d_currState[0] == d_sizes[0]) {
102 if (d_currState[i] == d_sizes[i]) {
std::chrono::time_point< Clock > TimePoint
std::chrono::steady_clock Clock
#define RDKIT_SYNTHONSPACESEARCH_EXPORT
RDKIT_SYNTHONSPACESEARCH_EXPORT boost::dynamic_bitset getConnectorPattern(const std::vector< std::unique_ptr< ROMol > > &fragSet)
RDKIT_SYNTHONSPACESEARCH_EXPORT void bitSetsToVectors(const std::vector< boost::dynamic_bitset<> > &bitSets, std::vector< std::vector< size_t > > &outVecs)
RDKIT_SYNTHONSPACESEARCH_EXPORT bool checkTimeOut(const TimePoint *endTime)
RDKIT_SYNTHONSPACESEARCH_EXPORT std::vector< std::vector< unsigned int > > permMFromN(unsigned int m, unsigned int n)
RDKIT_SYNTHONSPACESEARCH_EXPORT std::vector< boost::dynamic_bitset<> > getConnectorPatterns(const std::vector< std::unique_ptr< ROMol > > &fragSet)
RDKIT_SYNTHONSPACESEARCH_EXPORT void fixAromaticRingSplits(std::vector< std::unique_ptr< ROMol > > &molFrags)
RDKIT_SYNTHONSPACESEARCH_EXPORT int countConnections(const ROMol &frag)
RDKIT_SYNTHONSPACESEARCH_EXPORT std::vector< std::vector< unsigned int > > combMFromN(unsigned int m, unsigned int n)
RDKIT_SYNTHONSPACESEARCH_EXPORT std::vector< std::vector< std::unique_ptr< ROMol > > > splitMolecule(const ROMol &query, unsigned int maxBondSplits, std::uint64_t maxNumFrags, TimePoint *endTime, bool &timedOut)
RDKIT_SYNTHONSPACESEARCH_EXPORT void expandBitSet(std::vector< boost::dynamic_bitset<> > &bitSets)
RDKIT_SYNTHONSPACESEARCH_EXPORT std::vector< std::vector< std::unique_ptr< ROMol > > > getConnectorPermutations(const std::vector< std::unique_ptr< ROMol > > &molFrags, const boost::dynamic_bitset<> &fragConns, const boost::dynamic_bitset<> &reactionConns)
Stepper(const std::vector< size_t > &sizes)
std::vector< size_t > d_sizes
std::vector< size_t > d_currState