- 
                Notifications
    
You must be signed in to change notification settings  - Fork 230
 
Open
Description
GraphUtils.to_pydot creates duplicated nodes in pydot.
here is a sample of resulting dot file, there are duplicated node info, though no trouble to plot with the output
digraph {
fontsize=18;
dpi=200;
0 [label=x1];
0 [label=x1];
1 [label=x2];
1 [label=x2];
2 [label=x3];
2 [label=x3];
3 [label=x4];
3 [label=x4];
...
The problem is with below function. The if else statement append nodes again.
    def to_pydot(G: Graph, edges: List[Edge] | None = None, labels: List[str] | None = None, title: str = "", dpi: float = 200):
        nodes = G.get_nodes()
        if labels is not None:
            assert len(labels) == len(nodes)
        pydot_g = pydot.Dot(title, graph_type="digraph", fontsize=18)
        pydot_g.obj_dict["attributes"]["dpi"] = dpi
        nodes = G.get_nodes()
        for i, node in enumerate(nodes):
            node_name = labels[i] if labels is not None else node.get_name()
            # first time append node into pydot
            pydot_g.add_node(pydot.Node(i, label=node.get_name()))
            if node.get_node_type() == NodeType.LATENT:
                pydot_g.add_node(pydot.Node(i, label=node_name, shape='square'))
            else: # this is the problem, then append again
                pydot_g.add_node(pydot.Node(i, label=node_name))Metadata
Metadata
Assignees
Labels
No labels