(self, data_graph)
return graph
Simplify a data graph by removing all temp variable nodes on the graph.

        :param networkx.DiGraph data_graph: The data dependence graph to simplify.
        :return: The simplified graph.
        :rtype: networkx.MultiDiGraph
Simplify a data graph by removing all temp variable nodes on the graph.
Simplify a data graph by removing all temp variable nodes on the graph .
def _simplify_data_graph(self, data_graph):  # pylint:disable=no-self-use
        """
        Simplify a data graph by removing all temp variable nodes on the graph.

        :param networkx.DiGraph data_graph: The data dependence graph to simplify.
        :return: The simplified graph.
        :rtype: networkx.MultiDiGraph
        """

        graph = networkx.MultiDiGraph(data_graph)

        all_nodes = [ n for n in graph.nodes() if isinstance(n.variable, SimTemporaryVariable) ]

        for tmp_node in all_nodes:
            # remove each tmp node by linking their successors and predecessors directly
            in_edges = graph.in_edges(tmp_node, data=True)
            out_edges = graph.out_edges(tmp_node, data=True)

            for pred, _, _ in in_edges:
                graph.remove_edge(pred, tmp_node)
            for _, suc, _ in out_edges:
                graph.remove_edge(tmp_node, suc)

            for pred, _, data_in in in_edges:
                for _, suc, data_out in out_edges:
                    if pred is not tmp_node and suc is not tmp_node:
                        if suc not in graph[pred]:
                            data = data_in.copy()
                            data.update(data_out)
                            graph.add_edge(pred, suc, **data)

            graph.remove_node(tmp_node)

        return graph
def _simplify_data_graph ( self , data_graph ) : # pylint:disable=no-self-use graph = networkx . MultiDiGraph ( data_graph ) all_nodes = [ n for n in graph . nodes ( ) if isinstance ( n . variable , SimTemporaryVariable ) ] for tmp_node in all_nodes : # remove each tmp node by linking their successors and predecessors directly in_edges = graph . in_edges ( tmp_node , data = True ) out_edges = graph . out_edges ( tmp_node , data = True ) for pred , _ , _ in in_edges : graph . remove_edge ( pred , tmp_node ) for _ , suc , _ in out_edges : graph . remove_edge ( tmp_node , suc ) for pred , _ , data_in in in_edges : for _ , suc , data_out in out_edges : if pred is not tmp_node and suc is not tmp_node : if suc not in graph [ pred ] : data = data_in . copy ( ) data . update ( data_out ) graph . add_edge ( pred , suc , * * data ) graph . remove_node ( tmp_node ) return graph