DiscreteValues.h
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2 
3  * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4  * Atlanta, Georgia 30332-0415
5  * All Rights Reserved
6  * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7 
8  * See LICENSE for the license information
9 
10  * -------------------------------------------------------------------------- */
11 
18 #pragma once
19 
22 #include <gtsam/inference/Key.h>
23 
24 #include <map>
25 #include <string>
26 #include <vector>
27 
28 namespace gtsam {
29 
34 class GTSAM_EXPORT DiscreteValues : public Assignment<Key> {
35  public:
36  using Base = Assignment<Key>; // base class
37 
40  using Assignment::Assignment; // all constructors
41 
42  // Define the implicit default constructor.
43  DiscreteValues() = default;
44 
45  // Construct from assignment.
46  explicit DiscreteValues(const Base& a) : Base(a) {}
47 
48  // Construct from initializer list.
49  DiscreteValues(std::initializer_list<std::pair<const Key, size_t>> init)
50  : Assignment<Key>{init} {}
51 
55 
57  void print(const std::string& s = "",
58  const KeyFormatter& keyFormatter = DefaultKeyFormatter) const;
59 
61  bool equals(const DiscreteValues& x, double tol = 1e-9) const;
62 
66 
68  friend std::ostream& operator<<(std::ostream& os, const DiscreteValues& x);
69 
70  // insert in base class;
71  std::pair<iterator, bool> insert(const value_type& value) {
72  return Base::insert(value);
73  }
74 
82  DiscreteValues& insert(const std::pair<Key, size_t>& assignment);
83 
92 
103 
110  bool contains(Key key) const { return this->find(key) != this->end(); }
111 
120  for (const auto& [key, _] : keys) {
121  if (auto it = this->find(key); it != this->end())
122  result[key] = it->second;
123  }
124  return result;
125  }
126 
135  for (const auto& [key, cardinality] : keys) {
136  if (!this->contains(key)) result.emplace_back(key, cardinality);
137  }
138  return result;
139  }
140 
148  static std::vector<DiscreteValues> CartesianProduct(
149  const DiscreteKeys& keys) {
150  return Base::CartesianProduct<DiscreteValues>(keys);
151  }
152 
156 
158  using Names = std::map<Key, std::vector<std::string>>;
159 
161  static std::string Translate(const Names& names, Key key, size_t index);
162 
170  std::string markdown(const KeyFormatter& keyFormatter = DefaultKeyFormatter,
171  const Names& names = {}) const;
172 
180  std::string html(const KeyFormatter& keyFormatter = DefaultKeyFormatter,
181  const Names& names = {}) const;
182 
184 };
185 
187 inline std::vector<DiscreteValues> cartesianProduct(const DiscreteKeys& keys) {
189 }
190 
192 void GTSAM_EXPORT
193 PrintDiscreteValues(const DiscreteValues& values, const std::string& s = "",
194  const KeyFormatter& keyFormatter = DefaultKeyFormatter);
195 
197 std::string GTSAM_EXPORT
199  const KeyFormatter& keyFormatter = DefaultKeyFormatter,
200  const DiscreteValues::Names& names = {});
201 
203 std::string GTSAM_EXPORT
204 html(const DiscreteValues& values,
205  const KeyFormatter& keyFormatter = DefaultKeyFormatter,
206  const DiscreteValues::Names& names = {});
207 
208 // traits
209 template <>
210 struct traits<DiscreteValues> : public Testable<DiscreteValues> {};
211 
212 } // namespace gtsam
relicense.update
def update(text)
Definition: relicense.py:46
gtsam::markdown
string markdown(const DiscreteValues &values, const KeyFormatter &keyFormatter, const DiscreteValues::Names &names)
Free version of markdown.
Definition: DiscreteValues.cpp:153
s
RealScalar s
Definition: level1_cplx_impl.h:126
e
Array< double, 1, 3 > e(1./3., 0.5, 2.)
gtsam::operator<<
std::ostream & operator<<(std::ostream &os, const Dih6 &m)
Definition: testGroup.cpp:109
keys
const KeyVector keys
Definition: testRegularImplicitSchurFactor.cpp:40
x
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
Definition: gnuplot_common_settings.hh:12
different_sigmas::values
HybridValues values
Definition: testHybridBayesNet.cpp:247
gtsam::DiscreteKeys
DiscreteKeys is a set of keys that can be assembled using the & operator.
Definition: DiscreteKey.h:41
os
ofstream os("timeSchurFactors.csv")
result
Values result
Definition: OdometryOptimize.cpp:8
gtsam::DefaultKeyFormatter
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition: Key.cpp:30
Key.h
gtsam::Assignment::Assignment
Assignment()=default
gtsam::DiscreteValues::DiscreteValues
DiscreteValues(const Base &a)
Definition: DiscreteValues.h:46
gtsam::print
void print(const Matrix &A, const string &s, ostream &stream)
Definition: Matrix.cpp:145
gtsam::DiscreteValues::CartesianProduct
static std::vector< DiscreteValues > CartesianProduct(const DiscreteKeys &keys)
Return a vector of DiscreteValues, one for each possible combination of values.
Definition: DiscreteValues.h:148
gtsam::KeyFormatter
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
gtsam::DiscreteValues::filter
DiscreteValues filter(const DiscreteKeys &keys) const
Filter values by keys.
Definition: DiscreteValues.h:118
Assignment.h
An assignment from labels to a discrete value index (size_t)
DiscreteValues
gtsam::Assignment
Definition: Assignment.h:37
DiscreteKey.h
specialized key for discrete variables
key
const gtsam::Symbol key('X', 0)
process_shonan_timing_results.names
dictionary names
Definition: process_shonan_timing_results.py:175
a
ArrayXXi a
Definition: Array_initializer_list_23_cxx11.cpp:1
gtsam
traits
Definition: SFMdata.h:40
gtsam::Testable
Definition: Testable.h:152
gtsam::DiscreteValues::missingKeys
DiscreteKeys missingKeys(const DiscreteKeys &keys) const
Return the keys that are not present in the DiscreteValues object.
Definition: DiscreteValues.h:133
gtsam::traits
Definition: Group.h:36
gtsam::DiscreteValues
Definition: DiscreteValues.h:34
gtsam::DiscreteValues::contains
bool contains(Key key) const
Check if the DiscreteValues contains the given key.
Definition: DiscreteValues.h:110
gtsam::DiscreteValues::insert
std::pair< iterator, bool > insert(const value_type &value)
Definition: DiscreteValues.h:71
gtsam::PrintDiscreteValues
void PrintDiscreteValues(const DiscreteValues &values, const std::string &s, const KeyFormatter &keyFormatter)
Free version of print for wrapper.
Definition: DiscreteValues.cpp:148
gtsam::DiscreteValues::DiscreteValues
DiscreteValues(std::initializer_list< std::pair< const Key, size_t >> init)
Definition: DiscreteValues.h:49
gtsam::tol
const G double tol
Definition: Group.h:79
gtsam::html
string html(const DiscreteValues &values, const KeyFormatter &keyFormatter, const DiscreteValues::Names &names)
Free version of html.
Definition: DiscreteValues.cpp:158
gtsam::DiscreteValues::Names
std::map< Key, std::vector< std::string > > Names
Translation table from values to strings.
Definition: DiscreteValues.h:158
Eigen::placeholders::end
static const EIGEN_DEPRECATED end_t end
Definition: IndexedViewHelper.h:181
gtsam::cartesianProduct
std::vector< DiscreteValues > cartesianProduct(const DiscreteKeys &keys)
Free version of CartesianProduct.
Definition: DiscreteValues.h:187
gtsam::Key
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:97
_
constexpr descr< N - 1 > _(char const (&text)[N])
Definition: descr.h:109
insert
A insert(1, 2)=0
init
Definition: TutorialInplaceLU.cpp:2
test_callbacks.value
value
Definition: test_callbacks.py:162


gtsam
Author(s):
autogenerated on Thu Apr 10 2025 03:01:23