private void addSubtree (Object parent, Tree subtree, Object child) { addNode (parent, child); for (Iterator it = subtree.getChildren (child).iterator (); it.hasNext ();) { Object gchild = it.next (); addSubtree (child, subtree, gchild); } }
public static Tree makeFromSubtree (Object parent, List subtrees) { Tree tree = new Tree(); tree.add (parent); for (Iterator it = subtrees.iterator (); it.hasNext ();) { Tree subtree = (Tree) it.next (); tree.addSubtree (parent, subtree, subtree.getRoot ()); } return tree; }
private void dumpRec (Object node, int lvl, StringBuffer buf) { for (int i = 0; i < 3 * lvl; i++) { buf.append ("-"); } buf.append (" ").append (node).append ("\n"); for (Iterator it = getChildren (node).iterator (); it.hasNext();) { Object child = it.next (); dumpRec (child, lvl+1, buf); } }
private static cc.mallet.grmm.types.Tree graphToTree (Graph g) throws Exception { // Perhaps handle gracefully?? -cas if (g.vertexSet ().size () <= 0) { throw new RuntimeException ("Empty graph."); } Tree tree = new cc.mallet.grmm.types.Tree (); Object root = g.vertexSet ().iterator ().next (); tree.add (root); for (Iterator it1 = new BreadthFirstIterator (g, root); it1.hasNext();) { Object v1 = it1.next (); for (Iterator it2 = g.edgesOf (v1).iterator (); it2.hasNext ();) { Edge edge = (Edge) it2.next (); Object v2 = edge.oppositeVertex (v1); if (tree.getParent (v1) != v2) { tree.addNode (v1, v2); assert tree.getParent (v2) == v1; } } } return tree; }
/** Sends BP messages starting from children to parents. This version uses constant stack space. */ private void lambdaPropagation (cc.mallet.grmm.types.Tree tree, Object root) { LinkedList openList = new LinkedList (); LinkedList closedList = new LinkedList (); openList.addAll (tree.getChildren (root)); while (!openList.isEmpty ()) { Object var = openList.removeFirst (); openList.addAll (tree.getChildren (var)); closedList.addFirst (var); } // Now open list contains all of the nodes (except the root) in reverse topological order. Send the messages. for (Iterator it = closedList.iterator (); it.hasNext ();) { Object child = it.next (); Object parent = tree.getParent (child); sendMessage (mdlCurrent, child, parent); } }
public void addNode (Object parent, Object child) { int id1; if (root == null) { root = parent; id1 = maybeAddVertex (parent); } else if ((id1 = lookupIndex (parent)) == -1) throw new UnsupportedOperationException ("This tree already has a root."); int id2 = maybeAddVertex (child); Object oldParent = parents.get (id2); if ((oldParent != null) && (oldParent != parent)) throw new UnsupportedOperationException ("Trying to change parent of Object "+child+" from " +oldParent+" to "+parent); parents.set (id2, parent); ArrayList childList = (ArrayList) children.get (id1); childList.add (child); }
public Tree readFile(Tree tree){ int key=0; while(x.hasNext()){ String patientName = x.next(); String doctorName = x.next(); String currentApp = x.next(); String nextApp = x.next(); tree.addNode(key++, patientName, doctorName, currentApp, nextApp); } }
public boolean isRoot (Object var) { int idx = lookupIndex (var); return (parents.get(idx) == null); }
private void propagate (cc.mallet.grmm.types.Tree tree) { Object root = tree.getRoot (); lambdaPropagation (tree, root); piPropagation (tree, root); }
public String dumpToString () { StringBuffer buf = new StringBuffer (); dumpRec (root, 0, buf); return buf.toString (); }
/** Sends BP messages starting from parents to children. This version uses constant stack space. */ private void piPropagation (cc.mallet.grmm.types.Tree tree, Object root) { LinkedList openList = new LinkedList (); openList.add (root); while (!openList.isEmpty ()) { Object current = openList.removeFirst (); List children = tree.getChildren (current); for (Iterator it = children.iterator (); it.hasNext ();) { Object child = it.next (); sendMessage (mdlCurrent, current, child); openList.add (child); } } }
public static TreeListFactory makeFromReaders (FactorGraph fg, List readerList) { List treeList = new ArrayList (); for (Iterator it = readerList.iterator (); it.hasNext ();) { try { Reader reader = (Reader) it.next (); Document doc = new SAXBuilder ().build (reader); Element treeElt = doc.getRootElement (); Element rootElt = (Element) treeElt.getChildren ().get (0); Tree tree = readTreeRec (fg, rootElt); System.out.println (tree.dumpToString ()); treeList.add (tree); } catch (JDOMException e) { throw new RuntimeException (e); } catch (IOException e) { throw new RuntimeException (e); } } return new TreeListFactory (treeList); }
private static cc.mallet.grmm.types.Tree graphToTree (Graph g) throws Exception { // Perhaps handle gracefully?? -cas if (g.vertexSet ().size () <= 0) { throw new RuntimeException ("Empty graph."); } Tree tree = new cc.mallet.grmm.types.Tree (); Object root = g.vertexSet ().iterator ().next (); tree.add (root); for (Iterator it1 = new BreadthFirstIterator (g, root); it1.hasNext();) { Object v1 = it1.next (); for (Iterator it2 = g.edgesOf (v1).iterator (); it2.hasNext ();) { Edge edge = (Edge) it2.next (); Object v2 = edge.oppositeVertex (v1); if (tree.getParent (v1) != v2) { tree.addNode (v1, v2); assert tree.getParent (v2) == v1; } } } return tree; }
/** Sends BP messages starting from children to parents. This version uses constant stack space. */ private void lambdaPropagation (cc.mallet.grmm.types.Tree tree, Object root) { LinkedList openList = new LinkedList (); LinkedList closedList = new LinkedList (); openList.addAll (tree.getChildren (root)); while (!openList.isEmpty ()) { Object var = openList.removeFirst (); openList.addAll (tree.getChildren (var)); closedList.addFirst (var); } // Now open list contains all of the nodes (except the root) in reverse topological order. Send the messages. for (Iterator it = closedList.iterator (); it.hasNext ();) { Object child = it.next (); Object parent = tree.getParent (child); sendMessage (mdlCurrent, child, parent); } }
public void addNode (Object parent, Object child) { int id1; if (root == null) { root = parent; id1 = maybeAddVertex (parent); } else if ((id1 = lookupIndex (parent)) == -1) throw new UnsupportedOperationException ("This tree already has a root."); int id2 = maybeAddVertex (child); Object oldParent = parents.get (id2); if ((oldParent != null) && (oldParent != parent)) throw new UnsupportedOperationException ("Trying to change parent of Object "+child+" from " +oldParent+" to "+parent); parents.set (id2, parent); ArrayList childList = (ArrayList) children.get (id1); childList.add (child); }
public void addNode (Object parent1, Object child1) { super.addNode(parent1, child1); VarSet parent = (VarSet) parent1; VarSet child = (VarSet) child1; Set sepset = parent.intersection(child); int id1 = lookupIndex(parent); int id2 = lookupIndex(child); putSepset(id1, id2, new Sepset (sepset, newSepsetPtl (sepset))); }
public boolean isRoot (Object var) { int idx = lookupIndex (var); return (parents.get(idx) == null); }
private void propagate (cc.mallet.grmm.types.Tree tree) { Object root = tree.getRoot (); lambdaPropagation (tree, root); piPropagation (tree, root); }
public String dumpToString () { StringBuffer buf = new StringBuffer (); dumpRec (root, 0, buf); return buf.toString (); }
/** Sends BP messages starting from parents to children. This version uses constant stack space. */ private void piPropagation (cc.mallet.grmm.types.Tree tree, Object root) { LinkedList openList = new LinkedList (); openList.add (root); while (!openList.isEmpty ()) { Object current = openList.removeFirst (); List children = tree.getChildren (current); for (Iterator it = children.iterator (); it.hasNext ();) { Object child = it.next (); sendMessage (mdlCurrent, current, child); openList.add (child); } } }