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 = c(
		0.99,	
		0.01
	),
	p_S = c(
		0.5,	
		0.5
	),
	p_T = structure(.Data = c(
		0.99,	0.95,	
		0.01,	0.05
	), .Dim = c(2,2)),
	p_L = structure(.Data = c(
		0.99,	0.9,	
		0.01,	0.1
	), .Dim = c(2,2)),
	p_B = structure(.Data = c(
		0.7,	0.4,	
		0.3,	0.6
	), .Dim = c(2,2)),
	p_E = structure(.Data = c(
		1.0,	0.0,	0.0,	0.0,	
		0.0,	1.0,	1.0,	1.0
	), .Dim = c(4,2)),
	p_X = structure(.Data = c(
		0.95,	0.02,	
		0.05,	0.98
	), .Dim = c(2,2)),
	p_D = structure(.Data = c(
		0.9,	0.2,	0.3,	0.1,	
		0.1,	0.8,	0.7,	0.9
	), .Dim = c(4,2))
)

#define distributions of categorical nodes
#varying out-states first (WinBUGS convention)
data = list(
	p_A = c(
		0.99,	0.01
	),
	p_S = c(
		0.5,	0.5
	),
	p_T = structure(.Data = c(
		0.99,	0.01,	
		0.95,	0.05
	), .Dim = c(2,2)),
	p_L = structure(.Data = c(
		0.99,	0.01,	
		0.9,	0.1
	), .Dim = c(2,2)),
	p_B = structure(.Data = c(
		0.7,	0.3,	
		0.4,	0.6
	), .Dim = c(2,2)),
	p_E = structure(.Data = c(
		1.0,	0.0,	
		0.0,	1.0,	
		0.0,	1.0,	
		0.0,	1.0
	), .Dim = c(4,2)),
	p_X = structure(.Data = c(
		0.95,	0.05,	
		0.02,	0.98
	), .Dim = c(2,2)),
	p_D = structure(.Data = c(
		0.9,	0.1,	
		0.2,	0.8,	
		0.3,	0.7,	
		0.1,	0.9
	), .Dim = c(4,2))
)

parameters = list(
	"A",
	"S",
	"T",
	"L",
	"B",
	"E",
	"X",
	"D"
)

#fixed inits
inits = list(
	list(A=1,S=1,T=1,L=1,B=1,E=1,X=1,D=1),
	list(A=1,S=1,T=1,L=1,B=1,E=1,X=1,D=1),
	list(A=1,S=1,T=1,L=1,B=1,E=1,X=1,D=1)
)

#random inits
#runif = random uniform (num samples, min, max)
inits = function() list(
	A = 1 + trunc(runif(1, 0, 2)),
	S = 1 + trunc(runif(1, 0, 2)),
	T = 1 + trunc(runif(1, 0, 2)),
	L = 1 + trunc(runif(1, 0, 2)),
	B = 1 + trunc(runif(1, 0, 2)),
	E = 1 + trunc(runif(1, 0, 2)),
	X = 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,
	"Asia_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
