## Graphical model from Dawid and Evett (1997)
## http://www.math.leidenuniv.nl/~gillrd/teaching/graphical/DawidEvett.net
## http://www.math.leidenuniv.nl/~gillrd/teaching/graphical/DawidEvettSN.net
## "SN" stands for "short names", better for these plots
library(Rgraphviz)
## Loading required package: graph
## Loading required package: grid
library(gRain)
## Loading required package: gRbase
network <- loadHuginNet("DawidEvettSN.net")
g <- network$dag
mg <- moralize(g)
tmg <- triangulate(mg)
par(mfrow = c(1, 2))
plot(g); plot(tmg)

gM <- as(g, "matrix")
tmgM <- as(tmg, "matrix")
bgM <- tmgM
bgM[col(tmgM) < row(tmgM)] <- bgM[col(tmgM) < row(tmgM)] - t(gM)[col(tmgM) < row(tmgM)]
bgI <- as(bgM, "igraph")
library(igraph)
##
## Attaching package: 'igraph'
##
## The following objects are masked from 'package:graph':
##
## degree, edges
E(bgI)$arrow.mode <- c(2,0)[1+is.mutual(bgI)]
plot(bgI)
bgG <- as(bgI, "graphNEL")
plot(bgG)

edges <- buildEdgeList(bgG)
nodes <- buildNodeList(bgG)
for (i in 1:length(edges)) {
if (edges[[i]]@attrs$dir=="both") edges[[i]]@attrs$dir <- "none"
edges[[i]]@attrs$color <- "red"
}
for (i in 1:length(edges)) {
if (edges[[i]]@attrs$dir=="forward") edges[[i]]@attrs$color <- "blue"
}
bgA <- agopen(tmg, edges=edges, nodes=nodes, name="bg")
gedges <- edges
for (i in 1:length(gedges)) {
if (gedges[[i]]@attrs$dir=="none") gedges[[i]]@attrs$color <- "white"
}
gA <- agopen(g, edges=gedges, nodes=nodes, name="g")
plot(gA)
plot(bgA)
