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_A1 = c(
		0.20447,	
		0.79553
	),
	p_A2 = structure(.Data = c(
		0.175846,	0.556788,	
		0.824154,	0.443212
	), .Dim = c(2,2)),
	p_A3 = structure(.Data = c(
		0.249284,	0.878329,	0.596277,	0.83944,	
		0.750716,	0.121671,	0.403723,	0.16056
	), .Dim = c(4,2)),
	p_B1 = structure(.Data = c(
		0.994679,	0.456333,	0.634557,	0.127071,	0.439575,	0.903013,	0.610953,	0.156745,	
		0.00532072,	0.543667,	0.365443,	0.872929,	0.560425,	0.0969876,	0.389047,	0.843255
	), .Dim = c(8,2)),
	p_B2 = structure(.Data = c(
		0.471678,	0.462471,	0.96132,	0.636474,	0.37884,	0.287222,	0.491653,	0.408507,	
		0.528322,	0.537529,	0.0386801,	0.363526,	0.62116,	0.712778,	0.508347,	0.591493
	), .Dim = c(8,2)),
	p_B3 = structure(.Data = c(
		0.61711,	0.0218745,	0.892599,	0.710166,	0.071071,	0.566529,	0.0848538,	0.867176,	
		0.38289,	0.978126,	0.107401,	0.289833,	0.928929,	0.433471,	0.915146,	0.132824
	), .Dim = c(8,2)),
	p_C1 = structure(.Data = c(
		0.944446,	0.160834,	0.708014,	0.704344,	0.938945,	0.488742,	0.831516,	0.285367,	
		0.0555541,	0.839166,	0.291986,	0.295656,	0.0610552,	0.511258,	0.168484,	0.714633
	), .Dim = c(8,2)),
	p_C2 = structure(.Data = c(
		0.506773,	0.352072,	0.596014,	0.983365,	0.930322,	0.293575,	0.551274,	0.242013,	
		0.493227,	0.647928,	0.403986,	0.016635,	0.0696781,	0.706425,	0.448726,	0.757986
	), .Dim = c(8,2)),
	p_C3 = structure(.Data = c(
		0.543887,	0.515656,	0.437566,	0.465977,	0.175091,	0.38871,	0.402146,	0.0982399,	
		0.456113,	0.484345,	0.562434,	0.534023,	0.824909,	0.61129,	0.597854,	0.90176
	), .Dim = c(8,2)),
	p_D1 = structure(.Data = c(
		0.13442,	0.452522,	0.486593,	0.428218,	0.242661,	0.449302,	0.482841,	0.55614,	
		0.86558,	0.547478,	0.513407,	0.571782,	0.757339,	0.550698,	0.517159,	0.44386
	), .Dim = c(8,2)),
	p_D2 = structure(.Data = c(
		0.243261,	0.707269,	0.595993,	0.339098,	0.415242,	0.464599,	0.44821,	0.429927,	
		0.756739,	0.292731,	0.404007,	0.660902,	0.584758,	0.535401,	0.55179,	0.570073
	), .Dim = c(8,2)),
	p_D3 = structure(.Data = c(
		0.526636,	0.143703,	0.836596,	0.689114,	0.610844,	0.201311,	0.333503,	0.493371,	
		0.473364,	0.856297,	0.163404,	0.310886,	0.389156,	0.798689,	0.666497,	0.506629
	), .Dim = c(8,2)),
	p_E1 = structure(.Data = c(
		0.815542,	0.42743,	0.321085,	0.513219,	0.0802865,	0.523444,	0.435106,	0.191126,	
		0.184458,	0.57257,	0.678915,	0.486781,	0.919713,	0.476556,	0.564894,	0.808873
	), .Dim = c(8,2)),
	p_E2 = structure(.Data = c(
		0.40218,	0.0375415,	0.372032,	0.204038,	0.32089,	0.307628,	0.749,	0.44666,	
		0.59782,	0.962458,	0.627968,	0.795962,	0.67911,	0.692372,	0.251,	0.55334
	), .Dim = c(8,2)),
	p_E3 = structure(.Data = c(
		0.999757,	0.597336,	0.524141,	0.703123,	0.474775,	0.185171,	0.60523,	0.351432,	
		2.43392E-4,	0.402664,	0.475859,	0.296877,	0.525225,	0.814829,	0.39477,	0.648568
	), .Dim = c(8,2))
)

#define distributions of categorical nodes
#varying out-states first (WinBUGS convention)
data = list(
	p_A1 = c(
		0.20447,	0.79553
	),
	p_A2 = structure(.Data = c(
		0.175846,	0.824154,	
		0.556788,	0.443212
	), .Dim = c(2,2)),
	p_A3 = structure(.Data = c(
		0.249284,	0.750716,	
		0.878329,	0.121671,	
		0.596277,	0.403723,	
		0.83944,	0.16056
	), .Dim = c(4,2)),
	p_B1 = structure(.Data = c(
		0.994679,	0.00532072,	
		0.456333,	0.543667,	
		0.634557,	0.365443,	
		0.127071,	0.872929,	
		0.439575,	0.560425,	
		0.903013,	0.0969876,	
		0.610953,	0.389047,	
		0.156745,	0.843255
	), .Dim = c(8,2)),
	p_B2 = structure(.Data = c(
		0.471678,	0.528322,	
		0.462471,	0.537529,	
		0.96132,	0.0386801,	
		0.636474,	0.363526,	
		0.37884,	0.62116,	
		0.287222,	0.712778,	
		0.491653,	0.508347,	
		0.408507,	0.591493
	), .Dim = c(8,2)),
	p_B3 = structure(.Data = c(
		0.61711,	0.38289,	
		0.0218745,	0.978126,	
		0.892599,	0.107401,	
		0.710166,	0.289833,	
		0.071071,	0.928929,	
		0.566529,	0.433471,	
		0.0848538,	0.915146,	
		0.867176,	0.132824
	), .Dim = c(8,2)),
	p_C1 = structure(.Data = c(
		0.944446,	0.0555541,	
		0.160834,	0.839166,	
		0.708014,	0.291986,	
		0.704344,	0.295656,	
		0.938945,	0.0610552,	
		0.488742,	0.511258,	
		0.831516,	0.168484,	
		0.285367,	0.714633
	), .Dim = c(8,2)),
	p_C2 = structure(.Data = c(
		0.506773,	0.493227,	
		0.352072,	0.647928,	
		0.596014,	0.403986,	
		0.983365,	0.016635,	
		0.930322,	0.0696781,	
		0.293575,	0.706425,	
		0.551274,	0.448726,	
		0.242013,	0.757986
	), .Dim = c(8,2)),
	p_C3 = structure(.Data = c(
		0.543887,	0.456113,	
		0.515656,	0.484345,	
		0.437566,	0.562434,	
		0.465977,	0.534023,	
		0.175091,	0.824909,	
		0.38871,	0.61129,	
		0.402146,	0.597854,	
		0.0982399,	0.90176
	), .Dim = c(8,2)),
	p_D1 = structure(.Data = c(
		0.13442,	0.86558,	
		0.452522,	0.547478,	
		0.486593,	0.513407,	
		0.428218,	0.571782,	
		0.242661,	0.757339,	
		0.449302,	0.550698,	
		0.482841,	0.517159,	
		0.55614,	0.44386
	), .Dim = c(8,2)),
	p_D2 = structure(.Data = c(
		0.243261,	0.756739,	
		0.707269,	0.292731,	
		0.595993,	0.404007,	
		0.339098,	0.660902,	
		0.415242,	0.584758,	
		0.464599,	0.535401,	
		0.44821,	0.55179,	
		0.429927,	0.570073
	), .Dim = c(8,2)),
	p_D3 = structure(.Data = c(
		0.526636,	0.473364,	
		0.143703,	0.856297,	
		0.836596,	0.163404,	
		0.689114,	0.310886,	
		0.610844,	0.389156,	
		0.201311,	0.798689,	
		0.333503,	0.666497,	
		0.493371,	0.506629
	), .Dim = c(8,2)),
	p_E1 = structure(.Data = c(
		0.815542,	0.184458,	
		0.42743,	0.57257,	
		0.321085,	0.678915,	
		0.513219,	0.486781,	
		0.0802865,	0.919713,	
		0.523444,	0.476556,	
		0.435106,	0.564894,	
		0.191126,	0.808873
	), .Dim = c(8,2)),
	p_E2 = structure(.Data = c(
		0.40218,	0.59782,	
		0.0375415,	0.962458,	
		0.372032,	0.627968,	
		0.204038,	0.795962,	
		0.32089,	0.67911,	
		0.307628,	0.692372,	
		0.749,	0.251,	
		0.44666,	0.55334
	), .Dim = c(8,2)),
	p_E3 = structure(.Data = c(
		0.999757,	2.43392E-4,	
		0.597336,	0.402664,	
		0.524141,	0.475859,	
		0.703123,	0.296877,	
		0.474775,	0.525225,	
		0.185171,	0.814829,	
		0.60523,	0.39477,	
		0.351432,	0.648568
	), .Dim = c(8,2))
)

parameters = list(
	"A1",
	"A2",
	"A3",
	"B1",
	"B2",
	"B3",
	"C1",
	"C2",
	"C3",
	"D1",
	"D2",
	"D3",
	"E1",
	"E2",
	"E3"
)

#fixed inits
inits = list(
	list(A1=1,A2=1,A3=1,B1=1,B2=1,B3=1,C1=1,C2=1,C3=1,D1=1,D2=1,D3=1,E1=1,E2=1,E3=1),
	list(A1=1,A2=1,A3=1,B1=1,B2=1,B3=1,C1=1,C2=1,C3=1,D1=1,D2=1,D3=1,E1=1,E2=1,E3=1),
	list(A1=1,A2=1,A3=1,B1=1,B2=1,B3=1,C1=1,C2=1,C3=1,D1=1,D2=1,D3=1,E1=1,E2=1,E3=1)
)

#random inits
#runif = random uniform (num samples, min, max)
inits = function() list(
	A1 = 1 + trunc(runif(1, 0, 2)),
	A2 = 1 + trunc(runif(1, 0, 2)),
	A3 = 1 + trunc(runif(1, 0, 2)),
	B1 = 1 + trunc(runif(1, 0, 2)),
	B2 = 1 + trunc(runif(1, 0, 2)),
	B3 = 1 + trunc(runif(1, 0, 2)),
	C1 = 1 + trunc(runif(1, 0, 2)),
	C2 = 1 + trunc(runif(1, 0, 2)),
	C3 = 1 + trunc(runif(1, 0, 2)),
	D1 = 1 + trunc(runif(1, 0, 2)),
	D2 = 1 + trunc(runif(1, 0, 2)),
	D3 = 1 + trunc(runif(1, 0, 2)),
	E1 = 1 + trunc(runif(1, 0, 2)),
	E2 = 1 + trunc(runif(1, 0, 2)),
	E3 = 1 + trunc(runif(1, 0, 2))
)

binSize = 50
numBins = 50
numSam = binSize*numBins
bugOut = bugs(
	data, inits, parameters,
	"net9-2_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
