Skip to content

Commit 4235334

Browse files
committed
Rename DiscretePrior -> DiscreteDistribution
1 parent 0b11b12 commit 4235334

File tree

10 files changed

+70
-67
lines changed

10 files changed

+70
-67
lines changed

gtsam/discrete/DiscreteBayesNet.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#pragma once
2020

2121
#include <gtsam/discrete/DiscreteConditional.h>
22-
#include <gtsam/discrete/DiscretePrior.h>
22+
#include <gtsam/discrete/DiscreteDistribution.h>
2323
#include <gtsam/inference/BayesNet.h>
2424
#include <gtsam/inference/FactorGraph.h>
2525

@@ -79,9 +79,9 @@ namespace gtsam {
7979
// Add inherited versions of add.
8080
using Base::add;
8181

82-
/** Add a DiscretePrior using a table or a string */
82+
/** Add a DiscreteDistribution using a table or a string */
8383
void add(const DiscreteKey& key, const std::string& spec) {
84-
emplace_shared<DiscretePrior>(key, spec);
84+
emplace_shared<DiscreteDistribution>(key, spec);
8585
}
8686

8787
/** Add a DiscreteCondtional */

gtsam/discrete/DiscreteConditional.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ class GTSAM_EXPORT DiscreteConditional
8989
const std::string& spec)
9090
: DiscreteConditional(Signature(key, parents, spec)) {}
9191

92-
/// No-parent specialization; can also use DiscretePrior.
92+
/// No-parent specialization; can also use DiscreteDistribution.
9393
DiscreteConditional(const DiscreteKey& key, const std::string& spec)
9494
: DiscreteConditional(Signature(key, {}, spec)) {}
9595

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,23 @@
1010
* -------------------------------------------------------------------------- */
1111

1212
/**
13-
* @file DiscretePrior.cpp
13+
* @file DiscreteDistribution.cpp
1414
* @date December 2021
1515
* @author Frank Dellaert
1616
*/
1717

18-
#include <gtsam/discrete/DiscretePrior.h>
18+
#include <gtsam/discrete/DiscreteDistribution.h>
19+
20+
#include <vector>
1921

2022
namespace gtsam {
2123

22-
void DiscretePrior::print(const std::string& s,
23-
const KeyFormatter& formatter) const {
24+
void DiscreteDistribution::print(const std::string& s,
25+
const KeyFormatter& formatter) const {
2426
Base::print(s, formatter);
2527
}
2628

27-
double DiscretePrior::operator()(size_t value) const {
29+
double DiscreteDistribution::operator()(size_t value) const {
2830
if (nrFrontals() != 1)
2931
throw std::invalid_argument(
3032
"Single value operator can only be invoked on single-variable "
@@ -34,10 +36,10 @@ double DiscretePrior::operator()(size_t value) const {
3436
return Base::operator()(values);
3537
}
3638

37-
std::vector<double> DiscretePrior::pmf() const {
39+
std::vector<double> DiscreteDistribution::pmf() const {
3840
if (nrFrontals() != 1)
3941
throw std::invalid_argument(
40-
"DiscretePrior::pmf only defined for single-variable priors");
42+
"DiscreteDistribution::pmf only defined for single-variable priors");
4143
const size_t nrValues = cardinalities_.at(keys_[0]);
4244
std::vector<double> array;
4345
array.reserve(nrValues);
Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* -------------------------------------------------------------------------- */
1111

1212
/**
13-
* @file DiscretePrior.h
13+
* @file DiscreteDistribution.h
1414
* @date December 2021
1515
* @author Frank Dellaert
1616
*/
@@ -20,50 +20,52 @@
2020
#include <gtsam/discrete/DiscreteConditional.h>
2121

2222
#include <string>
23+
#include <vector>
2324

2425
namespace gtsam {
2526

2627
/**
2728
* A prior probability on a set of discrete variables.
2829
* Derives from DiscreteConditional
2930
*/
30-
class GTSAM_EXPORT DiscretePrior : public DiscreteConditional {
31+
class GTSAM_EXPORT DiscreteDistribution : public DiscreteConditional {
3132
public:
3233
using Base = DiscreteConditional;
3334

3435
/// @name Standard Constructors
3536
/// @{
3637

3738
/// Default constructor needed for serialization.
38-
DiscretePrior() {}
39+
DiscreteDistribution() {}
3940

4041
/// Constructor from factor.
41-
DiscretePrior(const DecisionTreeFactor& f) : Base(f.size(), f) {}
42+
explicit DiscreteDistribution(const DecisionTreeFactor& f)
43+
: Base(f.size(), f) {}
4244

4345
/**
4446
* Construct from a Signature.
4547
*
46-
* Example: DiscretePrior P(D % "3/2");
48+
* Example: DiscreteDistribution P(D % "3/2");
4749
*/
48-
DiscretePrior(const Signature& s) : Base(s) {}
50+
explicit DiscreteDistribution(const Signature& s) : Base(s) {}
4951

5052
/**
5153
* Construct from key and a vector of floats specifying the probability mass
5254
* function (PMF).
5355
*
54-
* Example: DiscretePrior P(D, {0.4, 0.6});
56+
* Example: DiscreteDistribution P(D, {0.4, 0.6});
5557
*/
56-
DiscretePrior(const DiscreteKey& key, const std::vector<double>& spec)
57-
: DiscretePrior(Signature(key, {}, Signature::Table{spec})) {}
58+
DiscreteDistribution(const DiscreteKey& key, const std::vector<double>& spec)
59+
: DiscreteDistribution(Signature(key, {}, Signature::Table{spec})) {}
5860

5961
/**
6062
* Construct from key and a string specifying the probability mass function
6163
* (PMF).
6264
*
63-
* Example: DiscretePrior P(D, "9/1 2/8 3/7 1/9");
65+
* Example: DiscreteDistribution P(D, "9/1 2/8 3/7 1/9");
6466
*/
65-
DiscretePrior(const DiscreteKey& key, const std::string& spec)
66-
: DiscretePrior(Signature(key, {}, spec)) {}
67+
DiscreteDistribution(const DiscreteKey& key, const std::string& spec)
68+
: DiscreteDistribution(Signature(key, {}, spec)) {}
6769

6870
/// @}
6971
/// @name Testable
@@ -102,10 +104,10 @@ class GTSAM_EXPORT DiscretePrior : public DiscreteConditional {
102104

103105
/// @}
104106
};
105-
// DiscretePrior
107+
// DiscreteDistribution
106108

107109
// traits
108110
template <>
109-
struct traits<DiscretePrior> : public Testable<DiscretePrior> {};
111+
struct traits<DiscreteDistribution> : public Testable<DiscreteDistribution> {};
110112

111113
} // namespace gtsam

gtsam/discrete/discrete.i

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -128,12 +128,12 @@ virtual class DiscreteConditional : gtsam::DecisionTreeFactor {
128128
std::map<gtsam::Key, std::vector<std::string>> names) const;
129129
};
130130

131-
#include <gtsam/discrete/DiscretePrior.h>
132-
virtual class DiscretePrior : gtsam::DiscreteConditional {
133-
DiscretePrior();
134-
DiscretePrior(const gtsam::DecisionTreeFactor& f);
135-
DiscretePrior(const gtsam::DiscreteKey& key, string spec);
136-
DiscretePrior(const gtsam::DiscreteKey& key, std::vector<double> spec);
131+
#include <gtsam/discrete/DiscreteDistribution.h>
132+
virtual class DiscreteDistribution : gtsam::DiscreteConditional {
133+
DiscreteDistribution();
134+
DiscreteDistribution(const gtsam::DecisionTreeFactor& f);
135+
DiscreteDistribution(const gtsam::DiscreteKey& key, string spec);
136+
DiscreteDistribution(const gtsam::DiscreteKey& key, std::vector<double> spec);
137137
void print(string s = "Discrete Prior\n",
138138
const gtsam::KeyFormatter& keyFormatter =
139139
gtsam::DefaultKeyFormatter) const;

gtsam/discrete/tests/testDecisionTreeFactor.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include <CppUnitLite/TestHarness.h>
2121
#include <gtsam/base/Testable.h>
2222
#include <gtsam/discrete/DecisionTreeFactor.h>
23-
#include <gtsam/discrete/DiscretePrior.h>
23+
#include <gtsam/discrete/DiscreteDistribution.h>
2424
#include <gtsam/discrete/Signature.h>
2525

2626
#include <boost/assign/std/map.hpp>
@@ -56,8 +56,8 @@ TEST( DecisionTreeFactor, constructors)
5656
TEST(DecisionTreeFactor, multiplication) {
5757
DiscreteKey v0(0, 2), v1(1, 2), v2(2, 2);
5858

59-
// Multiply with a DiscretePrior, i.e., Bayes Law!
60-
DiscretePrior prior(v1 % "1/3");
59+
// Multiply with a DiscreteDistribution, i.e., Bayes Law!
60+
DiscreteDistribution prior(v1 % "1/3");
6161
DecisionTreeFactor f1(v0 & v1, "1 2 3 4");
6262
DecisionTreeFactor expected(v0 & v1, "0.25 1.5 0.75 3");
6363
CHECK(assert_equal(expected, static_cast<DecisionTreeFactor>(prior) * f1));

gtsam/discrete/tests/testDiscretePrior.cpp renamed to gtsam/discrete/tests/testDiscreteDistribution.cpp

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,42 +11,41 @@
1111

1212
/*
1313
* @file testDiscretePrior.cpp
14-
* @brief unit tests for DiscretePrior
14+
* @brief unit tests for DiscreteDistribution
1515
* @author Frank dellaert
1616
* @date December 2021
1717
*/
1818

1919
#include <CppUnitLite/TestHarness.h>
20-
#include <gtsam/discrete/DiscretePrior.h>
20+
#include <gtsam/discrete/DiscreteDistribution.h>
2121
#include <gtsam/discrete/Signature.h>
2222

23-
using namespace std;
2423
using namespace gtsam;
2524

2625
static const DiscreteKey X(0, 2);
2726

2827
/* ************************************************************************* */
29-
TEST(DiscretePrior, constructors) {
28+
TEST(DiscreteDistribution, constructors) {
3029
DecisionTreeFactor f(X, "0.4 0.6");
31-
DiscretePrior expected(f);
30+
DiscreteDistribution expected(f);
3231

33-
DiscretePrior actual(X % "2/3");
32+
DiscreteDistribution actual(X % "2/3");
3433
EXPECT_LONGS_EQUAL(1, actual.nrFrontals());
3534
EXPECT_LONGS_EQUAL(0, actual.nrParents());
3635
EXPECT(assert_equal(expected, actual, 1e-9));
3736

38-
const vector<double> pmf{0.4, 0.6};
39-
DiscretePrior actual2(X, pmf);
37+
const std::vector<double> pmf{0.4, 0.6};
38+
DiscreteDistribution actual2(X, pmf);
4039
EXPECT_LONGS_EQUAL(1, actual2.nrFrontals());
4140
EXPECT_LONGS_EQUAL(0, actual2.nrParents());
4241
EXPECT(assert_equal(expected, actual2, 1e-9));
4342
}
4443

4544
/* ************************************************************************* */
46-
TEST(DiscretePrior, Multiply) {
45+
TEST(DiscreteDistribution, Multiply) {
4746
DiscreteKey A(0, 2), B(1, 2);
4847
DiscreteConditional conditional(A | B = "1/2 2/1");
49-
DiscretePrior prior(B, "1/2");
48+
DiscreteDistribution prior(B, "1/2");
5049
DiscreteConditional actual = prior * conditional; // P(A|B) * P(B)
5150

5251
EXPECT_LONGS_EQUAL(2, actual.nrFrontals()); // = P(A,B)
@@ -56,22 +55,22 @@ TEST(DiscretePrior, Multiply) {
5655
}
5756

5857
/* ************************************************************************* */
59-
TEST(DiscretePrior, operator) {
60-
DiscretePrior prior(X % "2/3");
58+
TEST(DiscreteDistribution, operator) {
59+
DiscreteDistribution prior(X % "2/3");
6160
EXPECT_DOUBLES_EQUAL(prior(0), 0.4, 1e-9);
6261
EXPECT_DOUBLES_EQUAL(prior(1), 0.6, 1e-9);
6362
}
6463

6564
/* ************************************************************************* */
66-
TEST(DiscretePrior, pmf) {
67-
DiscretePrior prior(X % "2/3");
68-
vector<double> expected {0.4, 0.6};
69-
EXPECT(prior.pmf() == expected);
65+
TEST(DiscreteDistribution, pmf) {
66+
DiscreteDistribution prior(X % "2/3");
67+
std::vector<double> expected{0.4, 0.6};
68+
EXPECT(prior.pmf() == expected);
7069
}
7170

7271
/* ************************************************************************* */
73-
TEST(DiscretePrior, sample) {
74-
DiscretePrior prior(X % "2/3");
72+
TEST(DiscreteDistribution, sample) {
73+
DiscreteDistribution prior(X % "2/3");
7574
prior.sample();
7675
}
7776

python/gtsam/tests/test_DecisionTreeFactor.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
import unittest
1515

16-
from gtsam import DecisionTreeFactor, DiscreteValues, DiscretePrior, Ordering
16+
from gtsam import DecisionTreeFactor, DiscreteValues, DiscreteDistribution, Ordering
1717
from gtsam.utils.test_case import GtsamTestCase
1818

1919

@@ -36,8 +36,8 @@ def test_multiplication(self):
3636
v1 = (1, 2)
3737
v2 = (2, 2)
3838

39-
# Multiply with a DiscretePrior, i.e., Bayes Law!
40-
prior = DiscretePrior(v1, [1, 3])
39+
# Multiply with a DiscreteDistribution, i.e., Bayes Law!
40+
prior = DiscreteDistribution(v1, [1, 3])
4141
f1 = DecisionTreeFactor([v0, v1], "1 2 3 4")
4242
expected = DecisionTreeFactor([v0, v1], "0.25 1.5 0.75 3")
4343
self.gtsamAssertEquals(DecisionTreeFactor(prior) * f1, expected)

python/gtsam/tests/test_DiscreteBayesNet.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import unittest
1515

1616
from gtsam import (DiscreteBayesNet, DiscreteConditional, DiscreteFactorGraph,
17-
DiscreteKeys, DiscretePrior, DiscreteValues, Ordering)
17+
DiscreteKeys, DiscreteDistribution, DiscreteValues, Ordering)
1818
from gtsam.utils.test_case import GtsamTestCase
1919

2020

@@ -74,7 +74,7 @@ def test_Asia(self):
7474
for j in range(8):
7575
ordering.push_back(j)
7676
chordal = fg.eliminateSequential(ordering)
77-
expected2 = DiscretePrior(Bronchitis, "11/9")
77+
expected2 = DiscreteDistribution(Bronchitis, "11/9")
7878
self.gtsamAssertEquals(chordal.at(7), expected2)
7979

8080
# solve

python/gtsam/tests/test_DiscretePrior.py renamed to python/gtsam/tests/test_DiscreteDistribution.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import unittest
1515

1616
import numpy as np
17-
from gtsam import DecisionTreeFactor, DiscreteKeys, DiscretePrior
17+
from gtsam import DecisionTreeFactor, DiscreteKeys, DiscreteDistribution
1818
from gtsam.utils.test_case import GtsamTestCase
1919

2020
X = 0, 2
@@ -28,33 +28,33 @@ def test_constructor(self):
2828
keys = DiscreteKeys()
2929
keys.push_back(X)
3030
f = DecisionTreeFactor(keys, "0.4 0.6")
31-
expected = DiscretePrior(f)
32-
33-
actual = DiscretePrior(X, "2/3")
31+
expected = DiscreteDistribution(f)
32+
33+
actual = DiscreteDistribution(X, "2/3")
3434
self.gtsamAssertEquals(actual, expected)
35-
36-
actual2 = DiscretePrior(X, [0.4, 0.6])
35+
36+
actual2 = DiscreteDistribution(X, [0.4, 0.6])
3737
self.gtsamAssertEquals(actual2, expected)
3838

3939
def test_operator(self):
40-
prior = DiscretePrior(X, "2/3")
40+
prior = DiscreteDistribution(X, "2/3")
4141
self.assertAlmostEqual(prior(0), 0.4)
4242
self.assertAlmostEqual(prior(1), 0.6)
4343

4444
def test_pmf(self):
45-
prior = DiscretePrior(X, "2/3")
45+
prior = DiscreteDistribution(X, "2/3")
4646
expected = np.array([0.4, 0.6])
4747
np.testing.assert_allclose(expected, prior.pmf())
4848

4949
def test_sample(self):
50-
prior = DiscretePrior(X, "2/3")
50+
prior = DiscreteDistribution(X, "2/3")
5151
actual = prior.sample()
5252
self.assertIsInstance(actual, int)
5353

5454
def test_markdown(self):
5555
"""Test the _repr_markdown_ method."""
5656

57-
prior = DiscretePrior(X, "2/3")
57+
prior = DiscreteDistribution(X, "2/3")
5858
expected = " *P(0):*\n\n" \
5959
"|0|value|\n" \
6060
"|:-:|:-:|\n" \

0 commit comments

Comments
 (0)