markdown for DiscreteFactorGraph
parent
edadd352af
commit
042cb9d902
|
@ -168,7 +168,7 @@ namespace gtsam {
|
|||
|
||||
/// Render as markdown table.
|
||||
std::string _repr_markdown_(
|
||||
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const;
|
||||
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const override;
|
||||
|
||||
/// @}
|
||||
|
||||
|
|
|
@ -172,7 +172,7 @@ public:
|
|||
|
||||
/// Render as markdown table.
|
||||
std::string _repr_markdown_(
|
||||
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const;
|
||||
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const override;
|
||||
|
||||
/// @}
|
||||
};
|
||||
|
|
|
@ -88,6 +88,14 @@ public:
|
|||
|
||||
virtual DecisionTreeFactor toDecisionTreeFactor() const = 0;
|
||||
|
||||
/// @}
|
||||
/// @name Wrapper support
|
||||
/// @{
|
||||
|
||||
/// Render as markdown table.
|
||||
virtual std::string _repr_markdown_(
|
||||
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const = 0;
|
||||
|
||||
/// @}
|
||||
};
|
||||
// DiscreteFactor
|
||||
|
|
|
@ -129,6 +129,18 @@ namespace gtsam {
|
|||
return std::make_pair(cond, sum);
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
} // namespace
|
||||
/* ************************************************************************* */
|
||||
std::string DiscreteFactorGraph::_repr_markdown_(
|
||||
const KeyFormatter& keyFormatter) const {
|
||||
using std::endl;
|
||||
std::stringstream ss;
|
||||
ss << "`DiscreteFactorGraph` of size " << size() << endl << endl;
|
||||
for (size_t i = 0; i < factors_.size(); i++) {
|
||||
ss << "factor " << i << ":\n";
|
||||
ss << factors_[i]->_repr_markdown_(keyFormatter) << endl;
|
||||
}
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
} // namespace gtsam
|
||||
|
|
|
@ -154,6 +154,14 @@ public:
|
|||
// /** Apply a reduction, which is a remapping of variable indices. */
|
||||
// GTSAM_EXPORT void reduceWithInverse(const internal::Reduction& inverseReduction);
|
||||
|
||||
/// @name Wrapper support
|
||||
/// @{
|
||||
|
||||
/// Render as markdown table.
|
||||
std::string _repr_markdown_(
|
||||
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const;
|
||||
|
||||
/// @}
|
||||
}; // \ DiscreteFactorGraph
|
||||
|
||||
/// traits
|
||||
|
|
|
@ -166,6 +166,9 @@ class DiscreteFactorGraph {
|
|||
gtsam::DiscreteBayesNet eliminateSequential(const gtsam::Ordering& ordering);
|
||||
gtsam::DiscreteBayesTree eliminateMultifrontal();
|
||||
gtsam::DiscreteBayesTree eliminateMultifrontal(const gtsam::Ordering& ordering);
|
||||
|
||||
string _repr_markdown_(const gtsam::KeyFormatter& keyFormatter =
|
||||
gtsam::DefaultKeyFormatter) const;
|
||||
};
|
||||
|
||||
} // namespace gtsam
|
||||
|
|
|
@ -361,11 +361,9 @@ cout << unicorns;
|
|||
|
||||
/* ************************************************************************* */
|
||||
TEST(DiscreteFactorGraph, Dot) {
|
||||
// Declare a bunch of keys
|
||||
DiscreteKey C(0, 2), A(1, 2), B(2, 2);
|
||||
|
||||
// Create Factor graph
|
||||
DiscreteFactorGraph graph;
|
||||
DiscreteKey C(0, 2), A(1, 2), B(2, 2);
|
||||
graph.add(C & A, "0.2 0.8 0.3 0.7");
|
||||
graph.add(C & B, "0.1 0.9 0.4 0.6");
|
||||
|
||||
|
@ -384,6 +382,44 @@ TEST(DiscreteFactorGraph, Dot) {
|
|||
EXPECT(actual == expected);
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
// Check markdown representation looks as expected.
|
||||
TEST(DiscreteFactorGraph, markdown) {
|
||||
// Create Factor graph
|
||||
DiscreteFactorGraph graph;
|
||||
DiscreteKey C(0, 2), A(1, 2), B(2, 2);
|
||||
graph.add(C & A, "0.2 0.8 0.3 0.7");
|
||||
graph.add(C & B, "0.1 0.9 0.4 0.6");
|
||||
|
||||
string expected =
|
||||
"`DiscreteFactorGraph` of size 2\n"
|
||||
"\n"
|
||||
"factor 0:\n"
|
||||
"|C|A|value|\n"
|
||||
"|:-:|:-:|:-:|\n"
|
||||
"|0|0|0.2|\n"
|
||||
"|0|1|0.8|\n"
|
||||
"|1|0|0.3|\n"
|
||||
"|1|1|0.7|\n"
|
||||
"\n"
|
||||
"factor 1:\n"
|
||||
"|C|B|value|\n"
|
||||
"|:-:|:-:|:-:|\n"
|
||||
"|0|0|0.1|\n"
|
||||
"|0|1|0.9|\n"
|
||||
"|1|0|0.4|\n"
|
||||
"|1|1|0.6|\n\n";
|
||||
vector<string> names{"C", "A", "B"};
|
||||
auto formatter = [names](Key key) { return names[key]; };
|
||||
string actual = graph._repr_markdown_(formatter);
|
||||
EXPECT(actual == expected);
|
||||
|
||||
// Make sure values are correctly displayed.
|
||||
DiscreteValues values;
|
||||
values[0] = 1;
|
||||
values[1] = 0;
|
||||
EXPECT_DOUBLES_EQUAL(0.3, graph[0]->operator()(values), 1e-9);
|
||||
}
|
||||
/* ************************************************************************* */
|
||||
int main() {
|
||||
TestResult tr;
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include <gtsam_unstable/dllexport.h>
|
||||
|
||||
#include <boost/assign.hpp>
|
||||
#include <boost/format.hpp>
|
||||
#include <map>
|
||||
|
||||
namespace gtsam {
|
||||
|
@ -81,6 +82,16 @@ class GTSAM_EXPORT Constraint : public DiscreteFactor {
|
|||
/// Partially apply known values, domain version
|
||||
virtual shared_ptr partiallyApply(const Domains&) const = 0;
|
||||
/// @}
|
||||
/// @name Wrapper support
|
||||
/// @{
|
||||
|
||||
/// Render as markdown table.
|
||||
std::string _repr_markdown_(
|
||||
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const override {
|
||||
return (boost::format("`Constraint` on %1% variables\n") % (size())).str();
|
||||
}
|
||||
|
||||
/// @}
|
||||
};
|
||||
// DiscreteFactor
|
||||
|
||||
|
|
Loading…
Reference in New Issue