30 template <
class CONDITIONAL>
33 std::cout << (s.empty() ?
"" : s +
" ") << std::endl;
34 std::cout <<
"size: " << this->size() << std::endl;
35 for (
size_t i = 0; i < this->size(); i++) {
36 const auto& conditional = this->at(i);
38 ss <<
"conditional " << i <<
": ";
39 if (conditional) conditional->print(ss.str(), formatter);
44 template <
class CONDITIONAL>
51 for (
Key key : this->keys()) {
58 for (
auto it = std::make_reverse_iterator(this->end());
59 it != std::make_reverse_iterator(this->begin()); ++it) {
60 const auto& conditional = *it;
61 auto frontals = conditional->frontals();
62 const Key me = frontals.front();
63 auto parents = conditional->parents();
64 for (
const Key& p : parents) {
65 os <<
" var" << p <<
"->var" << me <<
"\n";
74 template <
class CONDITIONAL>
78 dot(ss, keyFormatter, writer);
83 template <
class CONDITIONAL>
87 std::ofstream of(filename.c_str());
88 dot(of, keyFormatter, writer);
93 template <
class CONDITIONAL>
96 for (
const auto& gc : *
this) {
97 if (gc) sum += gc->logProbability(x);
103 template <
class CONDITIONAL>
105 return exp(-logProbability(x));
Definition: HybridValues.h:38
double dot(const V1 &a, const V2 &b)
Definition: Vector.h:195
std::optional< Vector2 > variablePos(Key key) const
Return variable position or none.
Definition: BayesNet.h:35
void dot(std::ostream &os, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
Output to graphviz format, stream version.
Definition: BayesNet-inst.h:45
void digraphPreamble(std::ostream *os) const
Write out preamble for digraph, including size.
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: Key.h:35
DotWriter is a helper class for writing graphviz .dot files.
Definition: DotWriter.h:36
Definition: chartTesting.h:28
void drawVariable(Key key, const KeyFormatter &keyFormatter, const std::optional< Vector2 > &position, std::ostream *os) const
Create a variable dot fragment.
void saveGraph(const std::string &filename, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
output to file with graphviz format.
Definition: BayesNet-inst.h:84
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:102
void print(const std::string &s="BayesNet", const KeyFormatter &formatter=DefaultKeyFormatter) const override
Definition: BayesNet-inst.h:31