Open
Description
Networkx provides many great tools for inspection, analysis, and manipulation of graphs. It might be nice to be able to use these tools when working with streamz.
Use Cases:
UC1:
- User1 writes a graph (graph1) to perform some analysis
- User2 would like to extend this analysis so they write a new pipeline (graph2) with dummy parent nodes with the same name as the nodes from graph1.
- User2 then uses
graph3 = nx.compose(graph2, graph1)
. Graph3 has nodes from both graphs allowing the graphs themselves to be built modularly.
UC2:
- User3 suspects something went wrong in the compose step because of a name mismatch. User3 uses
[f for f in graph3 if nx.predecessors(f) ==0]
to find all the nodes with no parents. User3 then looks through the list and finds a node who's name didn't match and thus was not linked properly.
I think this can be done via a subclass of nx.DiGraph
with select methods overridden, namely:
add_node
which now needs to take in a node class, args and kwargs and a nameadd_edge
which now need to take in either- two node classes with args and kwargs (producing two new nodes)
- a node class with args and kwargs and a name
- two names
add_edge_from
so compose works properly.
Most of the overrides either need to init new nodes or provide connections between nodes.
Metadata
Metadata
Assignees
Labels
No labels