library("R2WinBUGS")

#set correct working directory
setwd("C:\\WINDOWS\\Desktop\\Backed_up\\R-results")

#WinBUGS requires varying out-states first, but
#early versions of R package "R2WinBUGS" have a bug that requires
#varying in-states first

#define distributions of categorical nodes
#varying in-states first
data = list(
	p_A = structure(.Data = c(
		0.3,	0.1,	0.75,	0.5,	0.5,	0.5,	0.5,	0.5,	
		0.7,	0.9,	0.25,	0.5,	0.5,	0.5,	0.5,	0.5
	), .Dim = c(8,2)),
	p_B = structure(.Data = c(
		0.5,	0.5,	0.5,	0.5,	
		0.5,	0.5,	0.5,	0.5
	), .Dim = c(4,2)),
	p_C = structure(.Data = c(
		0.8,	0.5,	
		0.2,	0.5
	), .Dim = c(2,2)),
	p_D = c(
		0.4,	
		0.6
	)
)

#define distributions of categorical nodes
#varying out-states first (WinBUGS convention)
data = list(
	p_A = structure(.Data = c(
		0.3,	0.7,	
		0.1,	0.9,	
		0.75,	0.25,	
		0.5,	0.5,	
		0.5,	0.5,	
		0.5,	0.5,	
		0.5,	0.5,	
		0.5,	0.5
	), .Dim = c(8,2)),
	p_B = structure(.Data = c(
		0.5,	0.5,	
		0.5,	0.5,	
		0.5,	0.5,	
		0.5,	0.5
	), .Dim = c(4,2)),
	p_C = structure(.Data = c(
		0.8,	0.2,	
		0.5,	0.5
	), .Dim = c(2,2)),
	p_D = c(
		0.4,	0.6
	)
)

parameters = list(
	"A",
	"B",
	"C",
	"D"
)

#fixed inits
inits = list(
	list(A=1,B=1,C=1,D=1),
	list(A=1,B=1,C=1,D=1),
	list(A=1,B=1,C=1,D=1)
)

#random inits
#runif = random uniform (num samples, min, max)
inits = function() list(
	A = 1 + trunc(runif(1, 0, 2)),
	B = 1 + trunc(runif(1, 0, 2)),
	C = 1 + trunc(runif(1, 0, 2)),
	D = 1 + trunc(runif(1, 0, 2))
)

binSize = 50
numBins = 50
numSam = binSize*numBins
bugOut = bugs(
	data, inits, parameters,
	"4nodeFullyConnected_BUGS.txt",
	n.chains=3,
	n.iter=numSam,
	n.thin=1,
	n.burnin=0,
	codaPkg=TRUE,
	#codaPkg=FALSE,
	debug=TRUE,
	DIC=FALSE)  #no nodes are observed so DIC is undefined
