50#ifndef DOXYGEN_SHOULD_SKIP_THIS
59 const std::vector< std::pair< std::size_t, std::size_t > >& ranges,
60 const Bijection< NodeId, std::size_t >& nodeId2columns) :
61 prior_(prior.clone()), counter_(parser, ranges, nodeId2columns) {
62 GUM_CONSTRUCTOR(Score);
66 INLINE Score::Score(
const DBRowGeneratorParser& parser,
68 const Bijection< NodeId, std::size_t >& nodeId2columns) :
69 prior_(prior.clone()), counter_(parser, nodeId2columns) {
70 GUM_CONSTRUCTOR(Score);
74 INLINE Score::Score(
const Score& from) :
75 prior_(from.prior_->clone()), counter_(from.counter_), cache_(from.cache_),
76 use_cache_(from.use_cache_) {
81 INLINE Score::Score(Score&& from) :
82 prior_(from.prior_), counter_(
std::move(from.counter_)), cache_(
std::move(from.cache_)),
83 use_cache_(from.use_cache_) {
84 from.prior_ =
nullptr;
89 INLINE Score::~Score() {
90 if (prior_ !=
nullptr)
delete prior_;
91 GUM_DESTRUCTOR(Score);
95 INLINE
void Score::setNumberOfThreads(Size nb) { counter_.setNumberOfThreads(nb); }
98 INLINE Size Score::getNumberOfThreads()
const {
return counter_.getNumberOfThreads(); }
101 INLINE
bool Score::isGumNumberOfThreadsOverriden()
const {
102 return counter_.isGumNumberOfThreadsOverriden();
107 INLINE
void Score::setMinNbRowsPerThread(
const std::size_t nb)
const {
108 counter_.setMinNbRowsPerThread(nb);
112 INLINE std::size_t Score::minNbRowsPerThread()
const {
return counter_.minNbRowsPerThread(); }
115 INLINE
const std::vector< std::pair< std::size_t, std::size_t > >& Score::ranges()
const {
116 return counter_.ranges();
120 INLINE
double Score::score(
const NodeId var) {
121 IdCondSet idset(var, empty_ids_,
true);
123 if (
auto ptr_score = cache_.tryGet(idset)) {
return *ptr_score; }
124 double the_score = score_(idset);
125 cache_.insert(std::move(idset), the_score);
128 return score_(std::move(idset));
136 INLINE
double Score::score(
const NodeId var,
const std::vector< NodeId >& rhs_ids) {
137 IdCondSet idset(var, rhs_ids,
false);
139 if (
auto ptr_score = cache_.tryGet(idset)) {
return *ptr_score; }
140 const double the_score = score_(idset);
141 cache_.insert(std::move(idset), the_score);
144 return score_(idset);
149 INLINE
void Score::clear() {
155 INLINE
void Score::clearCache() { cache_.clear(); }
158 INLINE
void Score::useCache(
const bool on_off) { use_cache_ = on_off; }
161 INLINE
bool Score::isUsingCache()
const {
return use_cache_; }
164 INLINE
const Bijection< NodeId, std::size_t >& Score::nodeId2Columns()
const {
165 return counter_.nodeId2Columns();
169 INLINE
const DatabaseTable& Score::database()
const {
return counter_.database(); }
the class used to read a row in the database and to transform it into a set of DBRow instances that c...
the base class for all a priori
Score(const DBRowGeneratorParser &parser, const Prior &external_prior, const std::vector< std::pair< std::size_t, std::size_t > > &ranges, const Bijection< NodeId, std::size_t > &nodeId2columns=Bijection< NodeId, std::size_t >())
default constructor
include the inlined functions if necessary
gum is the global namespace for all aGrUM entities
the base class for all the scores used for learning (BIC, BDeu, etc)