In [3]:
import daft
import matplotlib
matplotlib.rc('text', usetex=True)
matplotlib.rcParams['text.latex.preamble'] = [r"\usepackage{amsmath}"]
import matplotlib.pyplot as pl
%matplotlib inline
In [4]:
pgm = daft.PGM(shape=(12,10), grid_unit=1)
###################################################################
# Add nodes
#
pgm.add_node(daft.Node("a_k", r"$a_k$", 6, 8))
pgm.add_node(daft.Node("v_n", r"$v_n$", 6, 5))
pgm.add_node(daft.Node("sigma_n", r"$\sigma_n$", 8, 5, observed=True))
pgm.add_node(daft.Node("Q_hat_n", r"$\hat{Q}_n$", 6, 3))
pgm.add_node(daft.Node("i_n", r"$i_n$", 4, 3))
pgm.add_node(daft.Node("Q_n", r"$Q_n$", 8, 3, observed=True))
# mixture plate
pgm.add_plate(daft.Plate([5,7,2,2], label="$K$"))
# observations
pgm.add_plate(daft.Plate([2,2,8,4], label="$N$"))
###################################################################
# Add edges
#
# progenitor
pgm.add_edge('a_k', 'v_n')
pgm.add_edge('v_n', 'Q_hat_n')
pgm.add_edge('i_n', 'Q_hat_n')
pgm.add_edge('Q_hat_n', 'Q_n')
pgm.add_edge('sigma_n', 'Q_n')
ax = pgm.render()
fig = ax.figure
fig.savefig("pgm.pdf")
In [5]:
pgm = daft.PGM(shape=(12,10), grid_unit=1)
###################################################################
# Add nodes
#
pgm.add_node(daft.Node("theta_k", r"$\boldsymbol{\theta}_k$", 6, 8))
pgm.add_node(daft.Node("M_2n", r"$M_{2,n}$", 6, 5))
pgm.add_node(daft.Node("m_fn", r"$M_{f,n}$", 6, 3, observed=True))
pgm.add_node(daft.Node("i_n", r"$i_n$", 4, 3))
pgm.add_node(daft.Node("M_1n", r"$M_{1,n}$", 8, 3))
# mixture plate
pgm.add_plate(daft.Plate([5,7,2,2], label="$K$", label_offset=(3,45)))
# observations
pgm.add_plate(daft.Plate([3,2,6,4], label="$n=1...N$", label_offset=(3,100)))
###################################################################
# Add edges
#
# progenitor
pgm.add_edge('theta_k', 'M_2n')
pgm.add_edge('M_2n', 'm_fn')
pgm.add_edge('i_n', 'm_fn')
pgm.add_edge('M_1n', 'm_fn')
ax = pgm.render()
fig = ax.figure
fig.savefig("pgm_new.pdf")
In [ ]: