15#ifndef SYNTHONSPACESEARCHER_H
16#define SYNTHONSPACESEARCHER_H
25#include <boost/spirit/home/support/common_terminals.hpp>
27using Clock = std::chrono::steady_clock;
33namespace SynthonSpaceSearch {
59 const std::vector<std::unique_ptr<ROMol>> &
fragSet,
69 const std::vector<size_t> &
synthNums)
const;
72 std::unique_ptr<std::mt19937> d_randGen;
82 virtual void extraSearchSetup(
83 [[
maybe_unused]] std::vector<std::vector<std::unique_ptr<ROMol>>>
86 std::vector<std::unique_ptr<SynthonSpaceHitSet>> doTheSearch(
87 std::vector<std::vector<std::unique_ptr<ROMol>>> &
fragSets,
94 virtual bool quickVerify(
101 virtual bool verifyHit(
const ROMol &mol)
const = 0;
108 void buildHits(std::vector<std::unique_ptr<SynthonSpaceHitSet>> &
hitsets,
110 std::vector<std::unique_ptr<ROMol>> &
results)
const;
112 const std::vector<std::unique_ptr<SynthonSpaceHitSet>> &
hitsets,
114 std::vector<std::unique_ptr<ROMol>> &
results)
const;
115 void makeHitsFromToTry(
117 std::pair<
const SynthonSpaceHitSet *, std::vector<size_t>>> &
toTry,
119 std::vector<std::unique_ptr<ROMol>> &
results)
const;
120 void processToTrySet(
121 std::vector<std::pair<
const SynthonSpaceHitSet *, std::vector<size_t>>>
124 std::vector<std::unique_ptr<ROMol>> &
results)
const;
128 std::vector<std::vector<ROMol *>> getSynthonsToUse(
129 const std::vector<boost::dynamic_bitset<>> &synthonsToUse,
140 void buildHits(std::vector<std::unique_ptr<SynthonSpaceHitSet>> &
hitsets,
142 std::vector<std::unique_ptr<ROMol>> &
results)
const;
144 const std::vector<std::unique_ptr<SynthonSpaceHitSet>> &
hitsets,
148 const std::vector<std::unique_ptr<SynthonSpaceHitSet>> &
hitsets,
151 std::vector<std::unique_ptr<ROMol>> &
results)
const;
154 std::vector<std::vector<ROMol *>> getSynthonsToUse(
155 const std::vector<boost::dynamic_bitset<>> &synthonsToUse,
std::chrono::steady_clock Clock
std::chrono::time_point< Clock > TimePoint
contains a class for searching combinatorial libraries in Synthon format such as Enamine REAL.
SynthonSpaceSearcher(const ROMol &query, const SynthonSpaceSearchParams ¶ms, SynthonSpace &space)
SynthonSpaceSearcher(SynthonSpaceSearcher &&other)=delete
SynthonSpaceSearcher(const SynthonSpaceSearcher &other)=delete
const ROMol & getQuery() const
virtual ~SynthonSpaceSearcher()=default
virtual std::vector< std::unique_ptr< SynthonSpaceHitSet > > searchFragSet(const std::vector< std::unique_ptr< ROMol > > &fragSet, const SynthonSet &reaction) const =0
SynthonSpaceSearcher & operator=(const SynthonSpaceSearcher &other)=delete
SynthonSpace & getSpace() const
SynthonSpaceSearcher()=delete
const SynthonSpaceSearchParams & getParams() const
std::unique_ptr< ROMol > buildAndVerifyHit(const SynthonSpaceHitSet *hitset, const std::vector< size_t > &synthNums) const
SynthonSpaceSearcher & operator=(SynthonSpaceSearcher &&other)=delete
bool rdvalue_is(const RDValue_cast_t)