*
* @param nodes the nodes
* @return the probabilistic network
*/
public ProbabilisticNetwork convert(EDBUnit nodes){
ProbabilisticNetwork pn = new ProbabilisticNetwork("New Network");
//step 1. create new uNodes from sNodes
EDBUnit ISA = nodes.getRel("ISA");
for( String str : ISA.getMap().keySet() ){
EDBUnit node = ISA.map.get(str);
createUDBfromSDB( pn, node );
}
//step 2. create new edges between sNodes
for( String str : ISA.getMap().keySet() ){
EDBUnit node = ISA.map.get(str);
EDBUnit parents = node.get("PARENTS");
createEdgeOfUDB( pn, node, parents.getNext() );
}
//step 3. set states
for( String str : ISA.getMap().keySet() ){
EDBUnit node = ISA.map.get(str);
setStatesOfUDB( pn, node );
}
//step 4. set Marginal
for( String str : ISA.getMap().keySet() ){
EDBUnit node = ISA.map.get(str);
setMarginalStatesOfUDB( pn, node );
}
//step 5. set evidences
for( String str : ISA.getMap().keySet() ){
EDBUnit node = ISA.map.get(str);
EDBUnit type = node.get("INFO.TYPE");
EDBUnit description = node.get("INFO.DESCRIPTION");
EDBUnit evidence = node.get("EVIDENCE");
EDBUnit parents = node.get("PARENTS");
EDBUnit children = node.get("CHILDREN");
EDBUnit cpt = node.getCopied("CPT");
EDBUnit eq = node.getCopied("EQUATION");
EDBUnit bel = node.get("BEL");
if( evidence != null ){
evidence.print("evidence:");
if( type.getData().equalsIgnoreCase("Discrete") ){
ProbabilisticNode uNode = (ProbabilisticNode)pn.getNode(node.getName());
for (int i = 0; i < uNode.getStatesSize(); i++) {
if(uNode.getStateAt(i).equalsIgnoreCase(evidence.getData())){
uNode.addFinding(i);
break;
}
}
}else
if( type.getData().equalsIgnoreCase("Continuous") ){
GmmNodePluginStub gmmNode = (GmmNodePluginStub)pn.getNode(node.getName());
gmmNode.updateGMMData();
}
}
}