Skip to content

Commit 389408a

Browse files
Fixed PGM bugs
1 parent c027842 commit 389408a

4 files changed

Lines changed: 168 additions & 57 deletions

File tree

inference/straightline.ipynb

Lines changed: 132 additions & 21 deletions
Large diffs are not rendered by default.

inference/straightline_pgm.png

2.95 KB
Loading

inference/straightline_pgm.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import daft
2+
3+
def draw():
4+
5+
# Instantiate a PGM.
6+
pgm = daft.PGM([3.3, 3.0], origin=[0.3, 0.3], grid_unit=2.6, node_unit=1.3, observed_style="inner")
7+
8+
# Model parameters:
9+
pgm.add_node(daft.Node("m", r"$m$", 0.8, 2.8))
10+
pgm.add_node(daft.Node("b", r"$b$", 1.8, 2.8))
11+
12+
# Latent variable - intrinsic or true y:
13+
pgm.add_node(daft.Node("ytrue", r"$y^{\rm true}_k$", 1.3, 1.4, fixed=True, offset=(10,-25)))
14+
15+
# Data - observed y:
16+
pgm.add_node(daft.Node("y", r"$y_k$", 2.5, 1.4, observed=True))
17+
18+
# Constants - x and errors:
19+
pgm.add_node(daft.Node("sigma", r"$\sigma_k$", 1.9, 0.9, fixed=True, offset=(-3,0)))
20+
pgm.add_node(daft.Node("x", r"$x_k$", 0.8, 1.1, fixed=True))
21+
22+
# Add in the edges.
23+
pgm.add_edge("m", "ytrue")
24+
pgm.add_edge("x", "ytrue")
25+
pgm.add_edge("b", "ytrue")
26+
pgm.add_edge("sigma", "y")
27+
pgm.add_edge("ytrue", "y")
28+
29+
# And a plate for the pixels
30+
pgm.add_plate(daft.Plate([0.5, 0.7, 2.7, 1.4], label=r"datapoints $k$", shift=-0.1))
31+
32+
# Render and save.
33+
pgm.render()
34+
pgm.figure.savefig("straightline_pgm.png", dpi=300)
35+
36+
return

inference/straightline_utils.py

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
# pylab: matplotlib's matlab-like interface
77
import pylab as plt
88

9-
import daft
10-
119
# The data we will fit, sometimes:
1210
# x, y, sigma_y
1311
data1 = np.array([[201,592,61],[244,401,25],[47,583,38],[287,402,15],[203,495,21],
@@ -133,37 +131,3 @@ def plot_line(m, b, **kwargs):
133131
plt.xlim(*xlimits)
134132
plt.ylim(*ylimits)
135133
return p
136-
137-
138-
def draw_pgm():
139-
140-
# Instantiate a PGM.
141-
pgm = daft.PGM([3.3, 3.0], origin=[0.3, 0.3], grid_unit=2.6, node_unit=1.3, observed_style="inner")
142-
143-
# Model parameters:
144-
pgm.add_node(daft.Node("m", r"$m$", 0.8, 2.8))
145-
pgm.add_node(daft.Node("b", r"$b$", 1.8, 2.8))
146-
147-
# Latent variable - intrinsic y:
148-
pgm.add_node(daft.Node("ytrue", r"$y^{\rm true}_k$", 1.3, 1.4, fixed=True, offset=(0,-25)))
149-
150-
# Data - observed magnitude:
151-
pgm.add_node(daft.Node("y", r"$y_k$", 2.5, 1.4, observed=True))
152-
153-
# Constants - magnitude errors:
154-
pgm.add_node(daft.Node("sigma", r"$\sigma_k$", 1.9, 0.9, fixed=True, offset=(-3,0)))
155-
156-
# Add in the edges.
157-
pgm.add_edge("m", "ytrue")
158-
pgm.add_edge("b", "ytrue")
159-
pgm.add_edge("sigma", "y")
160-
pgm.add_edge("ytrue", "y")
161-
162-
# And a plate for the pixels
163-
pgm.add_plate(daft.Plate([0.5, 0.7, 2.7, 1.4], label=r"datapoints $k$", shift=-0.1))
164-
165-
# Render and save.
166-
pgm.render()
167-
pgm.figure.savefig("straightline_pgm.png", dpi=300)
168-
169-
return

0 commit comments

Comments
 (0)