public static BayesianNetwork ToBayesianNetwork(this JObject json)
{
string networkName = json["name"].Value<string>();
var bn = new BayesianNetwork(networkName);
// Load variables and note parents.
var variableList = new List<string>();
var parentsList = new Dictionary<string, string[]>();
foreach (var jrv in json.Property("variables").Value)
{
var rv = ToRandomVariable(jrv);
bn.AddVariable(rv);
variableList.Add(rv.Name);
parentsList.Add(rv.Name, jrv["parents"].Values<string>().ToArray());
}
// Reparent.
foreach (var rv in variableList)
{
string[] parents = parentsList[rv];
foreach (var parentName in parents)
{
bn.ConnectVariables(parentName, rv);
}
}
return bn;
}