remove export, typo
parent
eb4309d264
commit
deae4499a1
|
|
@ -604,7 +604,7 @@ namespace gtsam {
|
||||||
using MXChoice = typename DecisionTree<M, X>::Choice;
|
using MXChoice = typename DecisionTree<M, X>::Choice;
|
||||||
auto choice = boost::dynamic_pointer_cast<const MXChoice>(f);
|
auto choice = boost::dynamic_pointer_cast<const MXChoice>(f);
|
||||||
if (!choice) throw std::invalid_argument(
|
if (!choice) throw std::invalid_argument(
|
||||||
"DecisionTree::Convert: Invalid NodePtr");
|
"DecisionTree::convertFrom: Invalid NodePtr");
|
||||||
|
|
||||||
// get new label
|
// get new label
|
||||||
const M oldLabel = choice->label();
|
const M oldLabel = choice->label();
|
||||||
|
|
@ -634,6 +634,8 @@ namespace gtsam {
|
||||||
|
|
||||||
using Choice = typename DecisionTree<L, Y>::Choice;
|
using Choice = typename DecisionTree<L, Y>::Choice;
|
||||||
auto choice = boost::dynamic_pointer_cast<const Choice>(node);
|
auto choice = boost::dynamic_pointer_cast<const Choice>(node);
|
||||||
|
if (!choice)
|
||||||
|
throw std::invalid_argument("DecisionTree::Visit: Invalid NodePtr");
|
||||||
for (auto&& branch : choice->branches()) (*this)(branch); // recurse!
|
for (auto&& branch : choice->branches()) (*this)(branch); // recurse!
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -663,6 +665,8 @@ namespace gtsam {
|
||||||
|
|
||||||
using Choice = typename DecisionTree<L, Y>::Choice;
|
using Choice = typename DecisionTree<L, Y>::Choice;
|
||||||
auto choice = boost::dynamic_pointer_cast<const Choice>(node);
|
auto choice = boost::dynamic_pointer_cast<const Choice>(node);
|
||||||
|
if (!choice)
|
||||||
|
throw std::invalid_argument("DecisionTree::VisitWith: Invalid NodePtr");
|
||||||
for (size_t i = 0; i < choice->nrChoices(); i++) {
|
for (size_t i = 0; i < choice->nrChoices(); i++) {
|
||||||
choices[choice->label()] = i; // Set assignment for label to i
|
choices[choice->label()] = i; // Set assignment for label to i
|
||||||
(*this)(choice->branches()[i]); // recurse!
|
(*this)(choice->branches()[i]); // recurse!
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ namespace gtsam {
|
||||||
* Y = function range (any algebra), e.g., bool, int, double
|
* Y = function range (any algebra), e.g., bool, int, double
|
||||||
*/
|
*/
|
||||||
template<typename L, typename Y>
|
template<typename L, typename Y>
|
||||||
class GTSAM_EXPORT DecisionTree {
|
class DecisionTree {
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/// Default method for comparison of two objects of type Y.
|
/// Default method for comparison of two objects of type Y.
|
||||||
|
|
@ -340,4 +340,11 @@ namespace gtsam {
|
||||||
return f.apply(g, op);
|
return f.apply(g, op);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// unzip a DecisionTree if its leaves are `std::pair`
|
||||||
|
template<typename L, typename T1, typename T2>
|
||||||
|
std::pair<DecisionTree<L, T1>, DecisionTree<L, T2> > unzip(const DecisionTree<L, std::pair<T1, T2> > &input) {
|
||||||
|
return std::make_pair(DecisionTree<L, T1>(input, [](std::pair<T1, T2> i) { return i.first; }),
|
||||||
|
DecisionTree<L, T2>(input, [](std::pair<T1, T2> i) { return i.second; }));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace gtsam
|
} // namespace gtsam
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue