33 #ifndef RGROUP_RANDOM_SAMPLE_H 34 #define RGROUP_RANDOM_SAMPLE_H 37 #include <boost/random.hpp> 38 #include <boost/random/uniform_int_distribution.hpp> 65 boost::uint64_t m_numPermutationsProcessed;
66 boost::minstd_rand m_rng;
67 std::vector<boost::random::uniform_int_distribution<> > m_distributions;
72 m_numPermutationsProcessed(),
76 m_distributions.push_back(
77 boost::random::uniform_int_distribution<>(0,
m_permutation[i] - 1));
84 m_distributions.clear();
86 m_distributions.push_back(boost::random::uniform_int_distribution<>(
90 m_numPermutationsProcessed = 0;
93 virtual const char *
type()
const {
return "RandomSampleStrategy"; }
101 ++m_numPermutationsProcessed;
107 return m_numPermutationsProcessed; }
109 virtual operator bool()
const {
return true; }
116 #ifdef RDK_USE_BOOST_SERIALIZATION 117 friend class boost::serialization::access;
119 template <
class Archive>
120 void save(Archive &ar,
const unsigned int )
const {
122 ar << boost::serialization::base_object<const EnumerationStrategyBase>(
124 ar << m_numPermutationsProcessed;
126 std::stringstream random;
128 std::string s = random.str();
132 template <
class Archive>
133 void load(Archive &ar,
const unsigned int ) {
135 ar >> boost::serialization::base_object<EnumerationStrategyBase>(*this);
136 ar >> m_numPermutationsProcessed;
139 std::stringstream random(s);
143 m_distributions.clear();
145 m_distributions.push_back(boost::random::uniform_int_distribution<>(
150 template <
class Archive>
151 void serialize(Archive &ar,
const unsigned int file_version) {
152 boost::serialization::split_member(ar, *
this, file_version);
158 #ifdef RDK_USE_BOOST_SERIALIZATION virtual void initializeStrategy(const ChemicalReaction &, const EnumerationTypes::BBS &)
void initialize(const ChemicalReaction &reaction, const EnumerationTypes::BBS &building_blocks)
This is a class for storing and applying general chemical reactions.
virtual boost::uint64_t getPermutationIdx() const
Returns how many permutations have been processed by this strategy.
EnumerationTypes::RGROUPS m_permutation
This is a class for fully randomly sampling reagents.
virtual const char * type() const
std::vector< MOL_SPTR_VECT > BBS
virtual const EnumerationTypes::RGROUPS & next()
The current permutation {r1, r2, ...}.
std::vector< boost::uint64_t > RGROUPS
EnumerationStrategyBase * copy() const
copy the enumeration strategy complete with current state
EnumerationTypes::RGROUPS m_permutationSizes